[00:16] thanks aquarius [00:16] that is what I mean :) [00:24] Iteration + list comprehensions = I <3 python [00:32] actually, list(db._server) would be better, probably :) [03:10] CardinalFang, ping [03:10] kenvandine, hi [03:10] yo... so weird thing [03:10] rickspencer3 wrote a little app for finding dbs in couch [03:11] well, when he accesses gwibber_preferences with his app (does a get_records call), it causes a CPU spike in desktopcouch-service and gwibber-service [03:11] and they don't recover... they just stay pegged [03:11] kenvandine, desktopcouch-se is pegged right now [03:11] and so far as I know *nothing* is using it [03:11] he doesn't appear to be doing anything that changes any records [03:12] let me reboot [03:12] CardinalFang, however... i have been suspecting this was the keyring bug... but it has been pegging my CPU too [03:12] brb [03:12] until today when i deleted the keys from the keyring [03:12] and my desktopcouch-service is under control again [03:12] not sure if it could be related to the keyring problem [03:13] but gwibber-service shouldn't even know his slip-cover application is even querying it [03:13] gwibber-service? I don't get that. [03:14] yeah [03:14] (I barely get the desktopcouch-service one.) [03:14] gwibber does have the monitoring stuff, so it would see changes [03:14] but he isn't changing stuff [03:14] but he can reliably repro it [03:14] i can't :) [03:15] kenvandine, I'll try writing the smallest repro script that I can [03:15] CardinalFang, i was reliably getting the CPU pegged thing in desktopcouch most of the week :) [03:15] cool [03:15] give it to CardinalFang [03:15] * kenvandine has to go, thx guys! [03:15] Yes, please do. [03:15] thanks, kenvandine. [03:16] i'll be back though... got long ass python/gwibber stacktraces to read tonight :) [03:16] rickspencer3, do you still have many libgnome-keyring0 debs in your /var/cache/apt ? [03:17] no idea [03:17] rickspencer3, I want to know if it still happens with the version from 3 weeks ago. [03:17] CardinalFang, good idea [03:17] CardinalFang, how can I check for you? [03:17] $ find /var/cache -ls |grep /libgnome-keyring0 [03:18] CardinalFang, or just find the version you want and install it with apt [03:18] in fact... tell me what version too [03:18] Well, finding it may be the problem. [03:18] I have it. [03:18] apt-get install libgnome-keyring0=VERSION [03:18] something like that [03:18] rick@rick-desktop:/var/cache/apt/archives$ sudo find /var/cache -ls |grep /libgnome-keyring0 [03:18] [sudo] password for rick: [03:18] 313331 56 -rw-r--r-- 1 root root 53576 Apr 1 08:05 /var/cache/apt/archives/libgnome-keyring0_2.30.0-0ubuntu2_i386.deb [03:18] what versionis it? [03:18] /var/cache/apt/archives/libgnome-keyring0_2.29.4git20100224-0ubuntu2_i386.deb [03:19] That, 224...2 at least. [03:19] humm [03:19] http://sandbox.chad.org/libgnome-keyring0_2.29.4git20100224-0ubuntu2_i386.deb [03:20] oh crap [03:21] so gwibber-sevice and desktopcouch-se are pegged at 100% again [03:21] just be gwibber auto-running [03:21] hmm, unless just asking desktopcouch in python for a list of database caused it [03:21] https://edge.launchpad.net/ubuntu/+source/libgnome-keyring/2.29.4git20100224-0ubuntu2 [03:22] brb [03:22] just click on the build you want [03:22] brb [03:24] re [03:25] so it looks like gwibber-service and desktopcouch-se add a little load at start up [03:25] but like 3-6% while working [03:26] That's about right for normal wear. [03:26] right [03:27] ok and asking gwibber preferences for records it didn't have, no spike [03:27] rickspencer3, okay. Beware that spikes don't happen every time, AFAICT. [03:27] true [03:28] let me try my harmless test app a bunch of times then [03:29] But, i want some objective third-party eyes in my little spat with seb128 about this change to libg-kr0. [03:29] there it is [03:29] afer the thrid time [03:29] I have 3 instances of gwibber-services [03:29] and one of them is peggin at 100 [03:30] but weirdly desktopcouch is not [03:30] CardinalFang, here's my script: [03:30] from desktopcouch.records.server import CouchDatabase [03:30] db = CouchDatabase("gwibber_preferences") [03:30] records = db.get_records("boo",True) [03:30] print len(records)#should be zero [03:30] I don't get that part -- gwibber-services. [03:31] weirdly, desktopcouch is *not* spiking this time [03:31] maybe if I call it a few more times [03:31] Right -- desktopcouch-service is all I know about as spiking. [03:32] CardinalFang, you mean gwibber-service? [03:32] But, unless you kill desktopcouch-service and restart it, you're not testing the code I have been looking at. [03:33] CardinalFang, I'm just trying to create a simple repro script [03:33] rickspencer3, no, I saw you and ken say that earlier, but I haven't noticed that or worked on it. [03:33] Right. [03:33] CardinalFang, that version of libgnome-keyring0 doesn't fix gwibber [03:33] For me, and many, desktopcouch-service spins out of control when it asks for keyring creds. [03:34] CardinalFang, yesterday we uploaded gwibber with keyring password storage [03:34] if i keep the passwords in plaintext in couchdb, all is fine [03:34] CardinalFang, well, I had assumed that asking Gwibber for account stuff caused Gwibber to ask the keyring for stuff [03:34] Hrm. Then you may have the same problem as I have. [03:35] but saving them in the keyring and gwibber uses 100% CPU [03:35] CardinalFang, i do :) [03:35] dobey, worked around it in ubuntuone-client, but his work around didn't work in gwibber [03:35] we use python multiprocessing [03:35] He worked around it by not using threads any more. [03:35] for threading the refreshes and such [03:35] just for that [03:36] but yeah [03:37] I suspect that anything multithreaded that uses python-gnomekeyring will have this problem. [03:37] kenvandine, so I killed gwibber-services [03:37] and then ran my repro script 20 times with no symptoms [03:38] rickspencer3, are you running that version of libgnome-keyring0 that I pointed to? [03:39] CardinalFang, no, I didn't know that was for me [03:39] hold on [03:40] I don't know which version is the cause, but these problems started recently, and I think that one -- 2.29.4git20100224-0ubuntu2 -- is the last sane one. [03:41] aaarg [03:41] this is the *moat* frustrating bug to reproduce *ever* [03:41] Welcome to my last ten days. [03:41] so: [03:41] 1. I boot up [03:42] 2. gwibber/desktop couch start normally [03:42] 3. I thought the CouchDB for the gwibber perference 3 times [03:42] the CPU pegs [03:42] with gwibber-services [03:42] 4. I kill gwibber-services [03:42] 5. I run the repro script 100 times [03:43] nothing happens [03:43] 6. I run gwibber again [03:43] 7. I run the script 100 times [03:43] nothing happens [03:43] CardinalFang, ok, what did you want me to install specifically? [03:44] rickspencer3, I was saying that I think desktopcouch-service will not beg the CPU with libgnome-keyring0_2.29.4git20100224-0ubuntu2 or earlier. [03:44] peg [03:44] CardinalFang, yeah... but gwibber still does [03:44] which is damn weird [03:45] the code we use to query it is the same [03:45] our threading is different though [03:46] oops [03:46] I stand corrected [03:46] I notice that gwibber-service is pegged again [03:46] but not desktopcouch-service [03:47] * CardinalFang sighs. [03:47] Does gwibber use twisted? [03:48] no [03:48] it's driving me nuts though [03:48] Dang. [03:49] kenvandine, Make sure it is gnomekeyring.find_keys() or whatever. [03:49] Replace that with a dict of the same value. [03:51] I just pegged beam.smp [03:52] calling get_records() on the gwibber_accounts database [03:53] Er, that's different. [03:53] I killed gwibber-service, but beam is still pegged [03:54] unfortunately, I have to go [03:54] sorry I couldn't help more [03:55] oh, it was gwibbermessages,actually [03:55] maybe beam.smp was just working [03:55] since I just asked for every record it's had stored from messages [03:59] Yeah, that may be it. Just a huge BD. [03:59] DB [03:59] I must go too. 2300. [03:59] we'll lick this tomorrow [03:59] Laters, rickspencer3 and kenvandine. See you in ~8 hours. *sigh* [04:00] beam is still pegging the CPU, btw ;) [04:00] g'night CardinalFang [04:00] I guess asking for every record from a HUGE db is not too optimized === kermiac_ is now known as kermiac [05:11] say "honk"? Anyway, my question: how do I set up ubuntuone on a headless box (with ssh -X)? [05:20] DanaG: most everyone is not on or asleep. You can try again tommorrow between 12:00 and 20:00 UTC. That is when most are on. Or file a Launchpad Answer. [05:21] Thu Apr 1 21:21:01 PDT 2010 [05:21] gmt minus 8... [05:21] ah, noon-ish. [05:22] DanaG: i have heard 'rye' mention what you are asking about [05:22] he is the one who responds to honk as well :) === JanC_ is now known as JanC [08:23] bug 487257 added to https://wiki.ubuntu.com/UbuntuOne/Bugs - please advise if anything needs to be changed [08:23] Launchpad bug 487257 in ubuntuone-client "The client gets stuck into STANDOFF state" [High,Fix committed] https://launchpad.net/bugs/487257 === kermiac is now known as kermiac_ [09:30] hm I wonder whether we need to query for current syncdaemon state/last states according to MARKs in the log file in apport hook === kermiac_ is now known as kermiac === kermiac is now known as kermiac_ [10:55] Grrr, i swapped UbuntuOneUserSyncdaemonConfig with UbuntuOneSyncdaemonConfig in apport [10:55] hmmm [10:55] grrr [11:43] hi rye, i was able to view the music store briefly earlier today, but now rhythmbox just tells me "could not load music store". Do you see the same problem, or is there something I should look at to see why it won't load? [11:45] statik, checking... will be ready to answer in 10 minutes when syncdaemon finished loading metadata :( [11:45] ah, no, faster [11:46] statik, are you unable to view the initial page of ubuntuone music store? Does it have OOPS? [11:46] well, my rb hangs until syncdaemon finally starts :( [11:49] rye: I just realized I wasn't actually exiting rbox. It seems that when I pressed play on a music video (despite seeing a warning that it was not in mp3 format) the music store got into a weird state. it did not show any oops id or anything like that. === kermiac_ is now known as kermiac [12:03] lp, +1 hour of outage :( [12:03] rye: yeah, just notcied that too :( [12:04] the LP identica status page warned of 15 mins downtime - but now it seems it's going to be at least 3 hrs. === kermiac is now known as kermiac_ [12:07] kermiac, I need to fix my bugpatterns but OTOH the bugs can not be submitted right now... [13:14] Hello guys. === kermiac_ is now known as kermiac === kermiac is now known as kermiac_ [13:43] vds: ping [13:44] Ubuntu One doesn't remember it when I select "Synchronise this folder with Ubuntu One" (or something similar). Each time I have to select that option again. Is that a known issue? [13:46] qense: when you type 'u1sdtool --list-folders' in a terminal, does it list the folder that you want synchronized? [13:47] qense: i think i have a similar issue. ubuntu one is actually syncing the folder but nautilus doesn't show this setting correctly. [13:52] mattgriffin: Yes, that does work. [13:52] mattgriffin: That's good news. [14:23] PaulGit: pong [14:23] vds: Hi mate, just wondering if you pushed any extra logging code to servers yet? [14:28] PaulGit: not yet, we are going to sprint on that next week [14:28] PaulGit: but in the meanwhile I fixed a lot of things related to duplicate and twins [14:28] PaulGit: so it would be cool if you can try again [14:29] vds: OK, I will give it a try and let you know how I get on. [14:29] PaulGit: thanks a lot! [15:18] moin, rickspencer3 [15:18] hi CardinalFang [15:29] ok, got tired of these notes bugs. Blank note fix for tomboy is 2 line fix. Doing that right now [15:29] Ubuntu One has turned one of my documents into a .u1conflict file and I can't get into it now. :( [15:30] + tests, which I don't know how to write since I am not a developer actually... [15:30] I can't seen to extract the .u1conflict file either. :( [15:30] mesula, what is the size of u1conflict file? [15:30] mesula, did you edit that file on a different machine? [15:30] rye: 12.3KB [15:30] rye: No. [15:31] mesula, could you please try moving this file out of Ubuntu One directory and removing .u1conflict suffix? [15:31] is it possible for you to share the file name here? i.e. what name this file has? [15:31] Bus fare.gnumeric.u1conflict [15:31] rye: Yeah, you solved the problem. :) [15:32] mesula, hm, gnumeric... need to check whether it does something strange for ubuntuone during editing [15:32] adding to TODO [15:32] rye: I've edited this file lots before and haven't had this problem. [15:33] rye: I've always edited it from the same PC, too. [15:33] mesula, could you please paste ~/.cache/ubuntuone/log/syncdaemon.log to http://paste.ubuntu.com ? [15:40] that change to libgnome-keyring0 is so close to working. [15:47] A really fit 14 year old girl just came round my house and I gave her an Easter egg. :) [15:48] rye: Sorry, my text editor doesn't want to open that file. [15:48] 50% memory usage and rising... [15:48] Correction, 50% memory usage and stagnating. [15:51] mesula, ok, could you please kill the editor, there is a commandline app called pastebinit that needs to be adjusted a little bit to be used with paste.ubuntu.com [15:51] mesula, quick test - could you please copy (not move, but copy) the offending file back to Ubuntu One directory and check whether it works [15:52] afk for breakfast. back in ~45 [15:52] rye: Too late, I already moved it back. [15:52] rye: It's a custom Ubuntu One directory. [15:53] rye: I'm running Lucid, you see. [15:53] mesula, ah, ok, and the it appeared on the server, right? [15:55] rye: It's there but the last modified version was 12 days ago despite it being updated nearly every day since. [15:56] http://pastebin.com/D2GL6ucZ [15:57] mesula, ok, will wait for my firefox to unfreeze :) [15:57] rye: LOL [15:57] rye: Yeah, my Midori doesn't like it either. [15:58] hm [15:58] mesula, what's your local time now? [15:58] rye: 15:58 [15:58] mesula, was that syncdaemon.log or syncdaemon.log-something ? [15:59] mesula, that's the last time we heard from syncdaemon - 2010-04-02 12:25:16,842 [15:59] rye: samuel@samuel-desktop:~$ pastebinit ~/.cache/ubuntuone/log/syncdaemon.log [15:59] hmmmm [15:59] 2010-04-02 12:25:16,842 - ubuntuone.SyncDaemon - DEBUG - Signal received 15 [16:00] mesula, ps aux | grep [s]yncdaemon ? [16:00] rye: No output. [16:00] mesula, hm [16:00] it died [16:00] well, it was terminated and.. [16:00] i know [16:00] mesula, could you please start it - u1sdtool --connect [16:01] mesula, I believe it does not autostart now, since the autostart script is not yet packaged in lucid [16:01] mesula, did you reboot your computer @ 12:25? :) [16:01] rye: I haven't rebooted my computer today. [16:01] mesula, logout? [16:01] samuel@samuel-desktop:~$ uptime [16:01] 16:01:50 up 3:35, 3 users, load average: 4.47, 2.51, 1.76 [16:02] Maybe I did... [16:02] mesula, hm, something terminated syncdaemon [16:05] rye: I must have logged out or rebooted or something, judging by the uptime. [16:05] rye: Sorry, I couldn't remember doing it. [16:05] mesula, ok, so now you will need to start syncdaemon so that it could sync the file [16:06] but I wonder why it is 12 days ago, if syncdaemon was working today... [16:06] rye: I don't really care about syncing since I only use Ubuntu One with one PC ATM. [16:06] rye: Probably because it's tstill struggling to sync a 1.5GB directory [16:07] rye: I mainly want an online backup for if my HDD crashes. [16:07] s/crashes/dies/ [16:09] mesula, what's the number of the files in that 1.5 GB dir? [16:10] rye: About 8,000 IIRC [16:10] rye: I think I was told it's a known bug causing it not to sync properly. [16:11] mesula, u1sdtool --waiting-meta | wc -l ; u1sdtool --waiting-content | wc -l [16:12] Traceback (most recent call last): [16:12] Failure: dbus.exceptions.DBusException: org.freedesktop.DBus.Error.NoReply: Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken. [16:12] 2 [16:12] 1 [16:12] samuel@samuel-desktop:~$ [16:12] mesula, u1sdtool --status? [16:13] Oops, an error ocurred: [16:13] Traceback (most recent call last): [16:13] Failure: dbus.exceptions.DBusException: org.freedesktop.DBus.Error.NoReply: Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken. [16:14] mesula, ok, what's in ~/.cache/ubuntuone/log/syncdaemon.log [16:14] I definitely need to get the numbers that indicate the number of files that are comfortable to sync... [16:15] rye: Didn't I already just pastebin that? [16:15] mesula, it rotates every time syncdaemon is restarted [16:16] rye: After I pastebin this, I have to go; I need to chase after a really fit 14 year old girl and make her my girlfriend. [16:16] :-) [16:16] http://pastebin.com/bTkJ9YdF [16:16] G2G now: love calls [16:17] ok, it is still doing local rescan [16:37] dobey: is 1.9.11 in a ppa or is it coming down the upgrade pipe [16:38] Technoviking: 1.1.91 was post-b2 freeze, but it is in the review queue. i think it's just waiting for release team approval [16:41] dobey: yeah, figure that [16:42] Technoviking: it was sponsored, so i guess it should get built/pushed today i hope [17:11] rye: Back. [17:12] rye: I found that really fit 14 year old girl and asked her out to dinner or to the cinema. I walked her the rest of the way to her house, in the sunshine, and it started tipping down with rain as I began to walk home. [17:14] rye: Back. [17:14] rye: I found that really fit 14 year old girl and asked her out to dinner or to the cinema. I walked her the rest of the way to her house, in the sunshine, and it started tipping down with rain as I began to walk home. [17:14] mesula, mesula1, welcome back! :) [17:15] rye: mesula is a ghost. [17:15] mesula, hi, why don't you have a seat right over there. [17:16] CardinalFang: Hi. === mesula1 is now known as mesula [17:23] rye, hi. aquarius seems to have forgotten about me yesterday. Is there someone around today that could help? [17:24] rockstar, no files on the web interface, right? [17:24] rye, correct. [17:24] Still saying "transferring to your Ubuntu One storage" [17:24] I bought the album on Tuesday. :) [17:26] rockstar, aquarius is on vacation until tuesday, when we start sprinting on music store bugs again [17:26] statik, do I have to wait 'til Tuesday to get my album? :( [17:27] not sure we will be able to fix that for you today [17:27] rockstar: there has been a problem where 7d was giving 200 ok for errors [17:27] statik, epic fail [17:27] and we've written some logging code and come up with a strategy to handle it === mesula is now known as askidjhfg [17:28] statik, okay, it's not a huge deal. I mean, this is beta right? I'm a guinea pig for a reason. :) [17:28] but unfortunately today is a holiday so the right people are not around to help you get your music right away - we absolutely will be fixing it though [17:29] Is the online music collection limited to 2GB like the rest of my files? [17:29] CardinalFang, what if I get ERROR:gkr-operation.c:169:gkr_operation_set_result: assertion failed: ((int) res != INCOMPLETE) [17:29] CardinalFang, and then coredump from desktopcouch-service ? [17:29] rye, I see it too. I'm filing a bug report. Give me ~=10 min. [17:30] CardinalFang, ok, it's just why it fails in vm but not here, in host system which happily replicates... [17:30] well, for now at least [17:32] have a few bug reports I have been meaning to get too in regards to people using U1 as root. [17:34] duanedesign, as root user or starting applets/preferences/syncdaemon with sudo ? [17:35] rye: it appears they are from users that use root as their user. [17:35] duanedesign, first question - why? :) [17:37] lol, i know [17:38] rye: i thought the appropriate response might be trying to tell them why that is not a great idea. [17:38] rye: there are a handful and most seem to have the error. Launch helper exited with unknown return code 1 [17:38] askidjhfg, yes it is limited to 2GB if you are using the free plan. if you buy too much music to fit in the 2GB space you can upgrade or move some of the MP3s into another folder that is not synced with ubuntu one. [17:39] rye, subscribed you. https://bugs.edge.launchpad.net/ubuntu/+source/libgnome-keyring/+bug/554077 [17:39] Ubuntu bug 554077 in libgnome-keyring "gkr-operation assertion failures from dbus-using, multithreaded Python apps" [Undecided,New] [17:39] statik: Na, I don't think I'll bother paying for online file syncing. [17:51] statik: i moved the Ubuntu One, CouchDB, Desktopcouch Projects wiki page from my wiki to the Ubuntu wiki. https://wiki.ubuntu.com/UbuntuOne/ThirdPartyProjects [18:01] duanedesign, thanks! [18:01] duanedesign, are you doing anything in summer of code? [18:23] statik: i am not. It sounds like a lot of fun though. [18:28] reboot! [18:35] I have a small question about ubuntu one: can I see what databases in couchdb are synchronized? Or see what is all stored on the ubuntu one's servers? [18:47] honk [18:48] Whats the best way to remove ubuntu one, and all config's and files and start again? [18:49] (from one connected computer, other connected computers with my account are fine) [20:16] solexious: hello [20:19] duanedesign: hia [20:23] solexious: https://answers.launchpad.net/ubuntuone-client/+faq/778 === kklimonda is now known as kklimonda|G1 [20:26] duanedesign: thanks [21:29] CardinalFang, hey [21:30] can I ask you a quick question about using desktopcouch? [21:30] rickspencer3, sure. [21:31] CardinalFang, ok, my proximate goal is to get a list of unique record types from a database [21:31] I think I need to map_js = select the record type from each record [21:31] then [21:32] reduce_js = take the list of record_types, and return the unique list [21:32] 1. sound approach? [21:32] rickspencer3, yes, that sounds perfect. [21:32] 2. How do I do the reduce_js? is there a unique() like sum() [21:32] ? [21:34] Hrm, I'd put items in a assoc-list / dictionary with key of record types and valuse of null. [21:34] Let me eyeball the reduce interface. [21:34] ... [21:35] it hated this, btwL [21:35] (500, ('compilation_error', 'expression does not eval to a function. (function(record_type) return unique(record_type))')) [21:36] I think you need braces around the body. [21:41] CardinalFang, do yo know where the functions I am allowed to use in the reduce function are defined? [21:41] Hah. [21:41] for instance, where is sum() defined as a valid function to call in the reduce function? [21:41] I [21:41] m hoping this tells me what to use for "unique()" [21:42] or do I go: [21:42] unique view = [] [21:42] if result not in unique view [21:42] unique view.append(result) [21:42] like, put a loop in the reduce function? [21:43] (sorry, I really have no clue how I am supposed to approach this) [21:46] Okay, I think you should have your map() function return the record_id as the key. Then, I'd use the built-in grouping. Create the view. Then execute the view with extra param, group=True . [21:46] This avoids your question about a reduce function, though. [21:47] CardinalFang, uh [21:48] does this map function return the record_id as the key? [21:48] Yes, The pair { record_id, null } will suffice [21:48] Sorry. [21:48] Record_type. [21:49] That's what you want. [21:49] map_js = """function(doc) { emit(doc.record_type, null) }""" [21:49] Yes. [21:49] ok [21:49] so then just NULL for the reduce_js [21:50] Yes. None. [21:50] and then add group=True when I do execut_view [21:50] this sounds doable [21:50] Exactly. [21:50] on more quick question ... [21:50] what is the design_document for? [21:50] I don't know how to name it, as I don't know what it's for :/ [21:51] It's a place to group functions that are similar. A library name, so to speak. [21:51] rickspencer3, the default in desktopcouch is to name it the same as the function. [21:51] so like a namespace [21:52] to tell other developers what you are using the view for? [21:52] Yes. Or schema or whatever the kiddie DBAs say these days. [21:52] I'll go give this a try [21:52] Er, yes, maybe. It's a step to help organize. How one uses it is a social question. [21:55] frig [21:55] can't use group for "non reduced views" [21:55] :/ [21:55] Crapshit. [21:56] Okay, one minute. [21:57] reduce func: """function(keys, values) { return null; }""" [21:57] sneaky [21:58] woiks! [21:58] Sweet. [21:59] CardinalFang, is it considered rude of my to leave views in databases I didn't create? [22:00] rickspencer3, probably. If you name the design document with something descriptive, no one should care. com.canonical.rickspencer.uniq or something. [22:01] ok [22:02] rickspencer3, the indexes on views are built at insert time of the records (amortized), or at insert time of the design doc (all at once). There's a benefit to leaving them around if you're using it often. [22:02] ok [22:03] well, I am building a developer tool [22:03] so I'll leave them for now [22:06] Rgr. I'm out. Have a nice weekend, rickspencer3 . [22:07] bye bye [22:07] thanks CardinalFang