#jwrd Logs for Feb 2024

Filed under: #jwrd logs, Logs — Jacob Welsh @ 17:11
Day changed to 2024-02-03
[17:11] dorion_road: jfw, did you contact canpan tech about a case ?
[17:12] dorion_road: replying to
[17:12] sourcerer: 2024-01-31 00:45:06 (#jwrd) jfw: just hit 4 different shops in El Dorado where the computer parts live, nobody has an ATX PC case of the sort that was formerly commonplace, namely 1) no stupid side glass cutout, 2) 120mm fan mount, 3) at least 3x 3.5" HDD bays.
[17:12] jfw: no, worth a try I guess
[17:12] jfw: not keen on something used though
[17:13] dorion_road: well, he usually has the refurbished stuff. don't recall ever seeing new there.
[18:02] jfw: he says he doesn't sell cases.
[23:24] whaack: jfw: yea, no luck
Day changed to 2024-02-04
[00:42] jfw: whaack: checking the hardware maintenance manual, there's three voltages you can measure in this situation: AC adapter (but I assume you tried with a known good one), main battery pack, and backup battery (internal button cell); if those are all normal then it points to a faulty system board.
[00:44] jfw: (which of course isn't available new.)
[00:44] jfw: what are you thinking to do?
[20:27] whaack: jfw: plan is to do the checks you mentioned and then as a last resort buy a new laptop
Day changed to 2024-02-05
[00:48] jfw: whaack: alright, keep us posted
[04:42] jfw: <->
[04:42] sourcerer: 2024-01-31 00:45:06 (#jwrd) jfw: just hit 4 different shops in El Dorado where the computer parts live, nobody has an ATX PC case of the sort that was formerly commonplace, namely 1) no stupid side glass cutout, 2) 120mm fan mount, 3) at least 3x 3.5" HDD bays.
[04:44] jfw: looks like I'll go with Antec Performance Series P101 Silent, runner up Phanteks Enthoo Pro series PH-ES614PC_BK
[04:45] jfw: various others purporting to support 3.5" drives show pictures without any such support to be seen.
[05:05] jfw: "Our system have detected unusual traffic from this device" - ugh, the thanks I get for having an account with past business and everything
[05:06] jfw: where by "our system" the mendacious morons evidently mean cloudflare's
Day changed to 2024-02-07
[12:34] jfw: whaack: can you make a meeting today, 15 UTC as usual? the plan is to step through development of a PF config, but we can take time for more basic things if necessary.
[12:50] jfw: I will assume we're on.
[12:53] whaack: jfw: yes, cya in 2 hours
[13:51] jfw: oh look, I got ahead of myself; PF is for next time and today is just for finishing the router reinstall, since that never went entirely smoothly.
[13:52] jfw: in any case, a new & improved pf.conf for JWRD ERLs is now linked from my reference configurations.
[14:04] whaack: jfw: seems i didnt need to do step 8, i was taken to a login prompt right away
[14:05] whaack: (from the edgerouter install)
[16:56] jfw: for the log, that was expected since we were reinstalling the same OS, the bootloader was already configured appropriately.
[16:58] jfw: otherwise the reinstall is done & working, we just tripped up on the part where the example pf.conf does need some minor editing to set the address range for the actual network. and again on getting all requisite cables connected after the software configuration. there's a possibly flaky ethernet cable involved but it seems ok for now.
[17:07] whaack: jfw: great news, got the offline computer staretd, i have faulty battery and a faulty power cable
[17:07] whaack: ha!
[17:07] whaack: no battery + different cable did the trick
[17:19] jfw: nice! would the battery take a charge now?
Day changed to 2024-02-09
[19:31] whaack: jfw: it looks like it's charging now, yes, not quite sure where i went wrong b.c. i swear i used the same charger before
Day changed to 2024-02-11
[03:45] jfw: as of today we have a successful installation of Gales Linux on a newer generation, UEFI-encumbered Thinkpad E580.
[03:49] jfw: pressing F1 and/or Enter at the boot splash screen brought up a classic looking BIOS menu, wherein Secure Boot could be disabled and boot mode could be set to Legacy (non-UEFI). With that, the stock installer booted fine. Then, just some kernel config changes were required versus the prior thinkpad config: enabling xhci controller driver for usb3 support, and a realtek instead of intel gigabit
[03:49] jfw: NIC. (the latter change not yet tested.)
[03:55] jfw: it continues to be annoying that the linux kernel configurator depends on ncurses and bc, which depends on autoconf etc.
[03:58] jfw: and that the basic busybox 'lspci' can't decode device IDs.
[04:08] jfw: manual backlight control (/sys/class/backlight/intel_backlight/brightness) works but the function keys for adjusting it don't.
Day changed to 2024-02-12
[03:52] jfw: while on that subject I also finally fleshed out the missing boot media creation instructions in the Gales BUILD file.
Day changed to 2024-02-13
[00:37] dorion_road: jfw, cool. sounds like a productive exercise !
Day changed to 2024-02-14
[14:44] whaack: gm jfw, see you soon
[14:58] jfw: morning whaack
Day changed to 2024-02-15
[17:15] whaack: jfw: i noticed some behavior i was surprised by when using gbw-send. i had 2 utxos A and B, A had 5 BTC B had 10 BTC, i attempted to send a 7 BTC tx and gbw-signer used both UTXOs instead of just using UTXO B
[17:15] whaack: numbers are made up but they illustrate the point
[17:16] whaack: nvm i think i made a mistake
[17:24] whaack: scratch what i said above, there does seem to be a rather egregious bug though, let me explain again what i'm seeing
[17:25] whaack: i have 1 BTC in my change address, as reflected in the outputs file with the #unconfirmed tag
[17:26] whaack: (that is the only line in outputs atm)
[17:28] whaack: then i add a new line to the outputs file , reflecting a utxo w/ 5 BTC to another address
[17:31] whaack: i attempt to send 4.5 BTC, what i expect is that the outputs file will now have 2 lines, the original 1 BTC to the change address and then a new utxo with .5 btc to the change address
[17:31] whaack: instead i see 1 utxo with 1.5 btc to the change address
[17:31] whaack: which makes me think that all the utxos in outputs were used, instead of the 5 btc one
[17:32] whaack: but maybe this is just the expected behavior, everything in outputs get used, not just what is necessary
[17:56] whaack: i have a feeling ifi change the order of outputs only the larger utxo will be use...ill give this a shot now
[17:59] whaack: indeed that did the trick
[18:04] whaack: jfw: do you have a tool for decoding raw transactions?
[20:25] jfw: whaack: that sounds like the intended behavior - outputs are consumed in the order listed in the file. so it's up to you how to shuffle/select them if you want.
[20:28] jfw: I don't have a rawtx decode tool published; I did a quick and dirty one based on the gbw-node code, and it's probably worth polishing off at some point, but wasn't as useful as I'd have liked because of the braindamage where the value of the transaction & fee can't be known without looking up the spent outputs i.e. from the full dataset.
[20:30] jfw: those could be filled in ofc by making (possibly lots of) rpc calls to bitcoind since it has them indexed in bdb.
[20:31] jfw: it'd be nice to have that ability to check, even if on online machine, before broadcasting.
[20:41] jfw: whaack: why 'egregious' though, what's the worst that happens to the unsuspecting user?
Day changed to 2024-02-16
[00:35] dorion_road: jfw, it'd be good to add the output consumption mechanism in the README. I think it was only discussed in the original spec and subsequent comments.
[01:35] gabe_more: yo
[01:36] gabe_moreta: yo
[01:36] jfw: there he is!
[01:37] gabe_moreta: I'm here!
[01:41] gabe_moreta: Need help building my spaceship
[01:42] jfw: parts included, some assembly required
[01:45] jfw: - this is the high-level guide for installing the addon packages (gports). I'd recommend getting everything on that list except for the extra programming languages and related (clisp, cl-hyperspec, ocaml, php, python, python-docs, sbcl)
[01:45] jfw: some of them I got already, you can do an "ls" on /gales/pkg/ to see what all is there
[01:48] gabe_moreta: Thank you sir! I'll give this a shot
[01:49] jfw: the doc may need some expansion in detail but let me know what you make of it
[01:49] jfw: and you're welcome
[01:50] jfw: this is apropos of
[01:50] sourcerer: 2024-02-11 03:45:54 (#jwrd) jfw: as of today we have a successful installation of Gales Linux on a newer generation, UEFI-encumbered Thinkpad E580.
[01:54] gabe_moreta: Is it possible to run a installation like this one without internet?: As root, move it to /gales/dist/pkg/ for safe keeping if you like, then install:
[01:54] gabe_moreta: gpkg-install -f /gales/dist/pkg/
[01:55] jfw: gabe_moreta: yes, because the sources are all there already on the machine
[01:56] gabe_moreta: Amazing! Gracias seniorr!!
[01:59] jfw: dorion_road: - perhaps generally expanded documentation would be in order but as for the current README, it doesn't discuss individual gbw-signer commands; they can be found through the online help listings, and the text for send
[01:59] sourcerer: 2024-02-16 00:35:23 (#jwrd) dorion_road: jfw, it'd be good to add the output consumption mechanism in the README. I think it was only discussed in the original spec and subsequent comments.
[01:59] jfw: does mention the spending in order
[02:01] dorion_road: -- AMAZING COMPANY !!!
[02:01] sourcerer: 2024-02-16 01:56:15 (#jwrd) gabe_moreta: Amazing! Gracias seniorr!!
[02:01] dorion_road: welcome fausto.
[02:03] dorion_road: jfw, ok, thanks for pointing to the help.
[20:23] jfw: - interesting peek into the business side of that Labrador board. apparently the guy was making real money off it, at least in 2021. makes me wonder if he'd pay for bug fixing or documentation work
[20:25] jfw: because otherwise he's gone wontfix on it
[20:28] jfw: and otherwise he's using every possible stupid broken platform to make life difficult - github, cloudflare, google docs, vimeo, basically any angle you look at it from.
[20:33] jfw: the Atmel xmega32 AVR microcontroller it's built on looks pretty neat actually; I'm not sure what he's done with it quite does justice to its capabilities.
[20:35] jfw: for instance his oscilloscope mode is limited to single-ended, 750k 8-bit samples/sec, while the chip's analog-to-digital converter seems to handle up to 2M 12-bit samples/sec, single-ended or differential.
[20:37] jfw: in the background I've also been absorbing this rather nice & informative primer on modern oscilloscopes
[20:45] jfw: I have the notion to use something like that AVR to replace the Xilinx based FG digital board, at least for a first generation or until there's a clearer need for FPGA
Day changed to 2024-02-18
[05:42] jfw: whaack: retracing some of my steps from a year and a half ago (how the time has flown...), Renes, Costello and Batina 2016 was a juicy looking paper, for the concepts it touches on at minimum and perhaps even the particular algorithm given
[05:51] jfw: otherwise I haven't yet found much in the way of introduction to projective embedding, homogeneous or jacobian coordinates in this context, which seemed to be the key to factoring out the modular inversions. just any number of nerds vomiting ugc into stackoverflow.
[05:56] jfw: this right here is why it's all slow, because each inversion involves the extended euclidean gcd i.e. many (typically >100) integer divisions, and that point addition runs 256 times for each EC scalar multiplication.
[05:57] jfw: and that "many/typically" throws a wrench in constant time implementation too.
[18:16] whaack: jfw: it's not egregious, i take that wording back, at the time i thought it was deleting utxos from the outputs file, but even that would be more annoying than egregious. i think it's intuitivethe word egregious wrt wallet software is reserved for bugs that cause a potential loss of funds
[18:20] whaack: dorion_mode and jfw: i think the only clarification that is needed for the gbw-signer send help command may be that output selection *stops* once the value of the inputs are enough to match the fee + output values (excluding the change addr, naturaly) of the coins being sent
[18:22] whaack: jfw: could you send me your 'quick and dirty' tool?
[18:26] jfw: whaack: well, it does delete outputs from the file, when it spends them. I suppose there could be a spent-outputs file
[18:26] whaack: jfw: i didnt raelize it was spending the outputs
[18:27] jfw: then would you expect it to spend more than necessary rather than stopping?
[18:27] whaack: well it spends more than necessary if the utxos in the outputs file are in the 'wrong' order
[18:27] jfw: the order the user provides them in cannot be wrong!
[18:27] jfw: but sure, the help could be expanded
[18:29] whaack: jfw: no i didn't expect that, maybe the clarification is not necessary, perhaps maybe worth the mention that should output 1 be insufficient for tx A, but output 2 is sufficient, then output 1 and 2 will both be used, instead of there being some algo to find the minimum txs necessary to do the tx
[18:29] whaack: note that 'output 1' in my case was an auto generated change output
[18:31] jfw: it does find the minimum required, just based on the user's order of preference. and that might be "not what I meant" but then learning is possible
[18:33] jfw: the alternative is that it doesn't do what you say and may or may not do what you wanted
[18:34] jfw: i.e. the tool becomes master rather than servant
[18:34] jfw: - let me see if I can find it. but then, didn't you have a block explorer? :P
[18:34] sourcerer: 2024-02-18 18:22:06 (#jwrd) whaack: jfw: could you send me your 'quick and dirty' tool?
[18:45] whaack: jfw: my plan was to hitch the 2 together to get the required info from the inputs
[18:46] jfw: whaack: cmd_decode; afaik it should work against gbw-node_direct_block_read.vpatch, just put it in the script and link it into the cmds table at the end
[18:47] whaack: ty
[18:50] jfw: yw.
[18:53] jfw: it's all just a lot of input handling & pretty printing wrapped around that call to load_transaction().
[18:57] whaack: cool. should be easy to integrate with my spinoff of gbw-node
[18:57] whaack:
[19:30] jfw: whaack: 'beautiful site'; 'death gauge' (lol). thanks for the story
[19:31] jfw: what's that "tree in sulfur cloud" about?
[19:32] whaack: bahaha @ 'death gauge'
[19:32] jfw: his death gauge was reading over 9000!
[19:33] whaack: fixed tho, ty
[19:33] jfw: re pre-syncope, I suppose you've tried the usual, lie down and put legs up to raise blood pressure the the brain?
[19:33] jfw: *to the
[19:34] whaack: jfw: yes i've done that once and it did not actually help
[19:34] whaack: i may have been too fargone at that point
[19:34] jfw: rats. at least it helps with not hurting anything in a fall
[19:35] whaack: the cenotes are fresh water bodies connected to the ocean/salt water, the sulfur cloud has the right density to sit inbetween the salt/fresh water
[19:35] jfw: I've experienced the "aura" several times, only actually blacked out once though I think.
[19:36] whaack: not sure how the tree got to that depth at that cenote, but there is a big trunk and roots and branches that go through the cloud.
[19:36] whaack: searching for images of angelita cenote should return a lot of results , it's a rather famous dive site
[19:36] whaack: sight*
[19:37] jfw: site too, perhaps
[19:37] whaack: lol
[19:37] jfw: so an actual tree, underwater?
[19:40] whaack: yes, but i am pretty sure it is dead and slowly decomposing
[19:40] whaack: it's more of a collection of trunks/roots
[19:42] jfw: here's one
[19:43] jfw: trees that took the fast ride down when the ground collapsed, maybe
[19:48] whaack: hm but afaik the ground collapsing happened 10,000+ years ago when the cenotes were caves filled with air due to a different sea level
[19:51] jfw: huh. maybe trees that fell in or were cut and dropped in, then?
[19:53] whaack: i imagine they were trees overhanging the cenote and then fell in. all this is right next to the wall
[20:17] whaack: jfw: do you have any vi tricks to insert an html link, i would like to generate the text <a href=""></a> and put my cursor between the quotes
[20:42] jfw: whaack: nothing super slick but you could copy that to a named register, say 'a', then type exactly "ap (put register 'a') F" (find backwards to double-quote)
[20:42] jfw: or there's macros
[20:45] jfw: yeah, that gets it down to two keys (@a) including switching to insert mode
[20:45] jfw: just not flexible to handle other tags (I'm always wishing for something like that for <blockquote>...)
[21:19] jfw: whaack: in case you missed while you were offline
[21:19] sourcerer: 2024-02-18 05:42:57 (#jwrd) jfw: whaack: retracing some of my steps from a year and a half ago (how the time has flown...), Renes, Costello and Batina 2016 was a juicy looking paper, for the concepts it touches on at minimum and perhaps even the particular algorithm given
Day changed to 2024-02-19
[14:32] jfw: hey what's up gabe_moreta, how was the weekend? and how's it going with building the ports?
[15:09] gabe_moreta: Hey jfw, weekend ended pretty fast. I'll get back on track tonight!
[15:13] jfw: sounds good
Day changed to 2024-02-20
[17:29] whaack: jfw: ty i will try to take a look probably this weekend
Day changed to 2024-02-21
[00:45] whaack: jfw: sorry for the late notice, but can we move our last session to next week?
[03:32] jfw: whaack: alright
[03:32] jfw: more guitar time for me!
Day changed to 2024-02-22
[10:28] sstacksyrc: 09 0p0[
[15:12] jfw: hi there sstacksyrc's cat
[20:25] sstacksyrc: HAHAHAHAHA
[20:25] sstacksyrc: man so funny
[20:25] sstacksyrc: this kitten!
[20:48] jfw: kommand line kitteh
Day changed to 2024-02-25
[20:01] whaack: jfw: i just started reading the paper you linked, there seems to be a large number of terms i'm unfamiliar with so i'll need to go through them in order to make heads or tails of what the authors are describing
[20:10] whaack: in other news i've been working on an article detailing how one may try to profit should segwit fork off from bitcoind. i'm working on a section where i describe how to separate coins in an address so that they are on separate addresses on the two chains (i.e. send coins to yourself 'doublespending' and try to get 1 tx broadcasted to 1 group of miners, the other to the other group)
[20:11] whaack: i was wondering if there's a fullproof way to do this, for this one needs a valid bitcoind tx that is invalid as per segwit/prb bitcoind. one idea is to sign with a high s, but afaik some1 could modify the tx so it has a low s signature and then rebroadcast it
[20:12] whaack: also high s may not even work for bitcoind depending on the openssl being used
[20:14] whaack: in other other news, i null routed, currently the biggest distracting force i have in my life. the pathetic habit of derping on youtube is so engrained that i still open up tabs and attempt to open the site
[20:14] whaack: i'm like a fat person who has to lock his own refrigerator
[20:32] jfw: whaack: well cheers for coming out of the fridge about it, lol
[20:33] whaack: haha
[20:33] jfw: don't think I have a single linux browser around that the y00tubez will load on, for some time now, no locks required
[20:35] jfw: for creating a segwit-invalid tx, what about spending some anyonecanspend output as part of it?
[20:35] jfw: yes, high/low-s can be modified
[20:36] jfw: but there isn't a "depending on which openssl" at least in my setup, it's included (if not quite in the v-tree)
[20:37] whaack: jfw: could work, but you need a valid anyonecanspend output, which ostensibly everyone will be trying to snag on the bitcoind chain
[20:38] jfw: true, so maybe you can create one "not worth the cost of postage" with 1 sat or whatever minimum particle size
[20:38] jfw: and spend it in the same tx
[20:40] whaack: brilliant! yes i think that will work
[20:42] whaack: so to be clear, you start with 1 btc in address A and you create tx i which has 2 outputs, .99999999 btc to address A (change) and .00000001 btc to 'anyonecanspend/segwit' address B, tx i is included on both chains
[20:44] whaack: then you create tx ii which has 2 inputs, i[0] and i[1] , intentionally leaving out the segwit data to spend i[1], and send to one output address B , this will be included in the bitcoind chain but rejected per segwit rules
[20:45] whaack: argh, for tx i I did not specify a tx fee, of course that will be included and taken from the output going to address A
[20:45] whaack: now coins are still in address A on the segwit chain , and in address B on bitcoind chain
[20:46] whaack: so you can send/sell coins from address A on segwit, while retaining control of the coins in address B on bitcoind chain
[20:54] jfw: that's the idea, yep. could do variations on it, like tx ii doesn't have to spend the A output from tx i, they can be unrelated
[20:55] jfw: re "smallest particle size" although that isn't even a block validity rule so if you can get your 1-sat output to friendly miners then you're fine
Day changed to 2024-02-26
[23:24] dorion_road: sclarke001, ahoy !
Day changed to 2024-02-27
[07:03] jfw:
[19:22] whaack: i have some1 trying to buy 1 btc, they're willing to pay $1,000 extra over spot.
[21:13] dorion_road: whaack, how do they want to pay ?
Day changed to 2024-02-28
[02:01] whaack: wire transfer or wise works
[04:57] dorion_road: whaack, i've asked an otc desk here I know, I'll see what they say about pricing.
[14:02] whaack: dorion_road:thx a bunch
[17:29] dorion_road: whaack, 1 BTC looks like it's too small for this guy, at least at the markup he's looking for. I have another otc desk based in europe, their minimum is $50k, but they will require kyc.
[17:40] whaack: dorion_road: can you send the contact for the europe otc? what markup is your guy looking for / what is his minimum?
[18:29] sstacksyrc: vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvmmmmmmmm
[18:48] whaack: kommand line kitteh strikes again
[23:07] jfw: dorion: the linux magic for directly sampling virtual memory size and resident set size, respectively, in bytes, of a given process: awk '{print $23, $24*4096}' < /proc/PID/stat
Day changed to 2024-02-29
[13:07] dorion_road: jfw, interestingly, it never even gets to 2.7GB :
[17:15] whaack: i've been hitting the gym regularly and it has been doing wonders for me. but the other day i seemed to have irritated my foot doing what i thought was a rather simple exercise, calf raises. i was standing on 2 barbell plates stacks on top of each other , with one foot lifted and half of my other foot on/off the plate and going up and down on my tippie toes stretching on the way back down.
[17:15] whaack: left foot is fine but my right foot is in pain on the inner side when i walk
[17:15] whaack: looks like i may be out of commission for surfing for the next swell
[17:21] jfw: whaack: so a one-legged deep calf raise? I didn't quite follow about the half foot on/off
[17:22] whaack: i'm basically dangling my foot off the ledge so that it stretches on the way back down
[17:22] whaack: dangling my heel*
[17:23] whaack: (the pain only started the following day, didnt feel anything while doing the exercise)
[17:24] jfw: right. dorion's done more of those sorts of things so perhaps he can comment, but first thought is it's unusual to combine stretching with resistance exercise at the same time, the first is more gentle, there can be large forces but carefully applied, while the other involves more power through a range of motion thus easier to do some damage if something's not ready or moving right
[17:26] jfw: lunges or downward dog for instance can be used to stretch the calves/achilles gently
[17:39] whaack: yup i think it was the stretch + weight combo that fucked me up. upstream the problem was just going to the 1st youtube video on calf raises to use as a guide for the exercise
[17:51] whaack: dorion_mode: ty for your contact, but he only does biz with 'financial corps / orgs' and not individuals so no way to move forward there
[17:58] jfw: - indeed, here's the first three cycles: (with data archived beside)
[17:58] sourcerer: 2024-02-29 13:07:01 (#jwrd) dorion_road: jfw, interestingly, it never even gets to 2.7GB :
[18:01] whaack: for my block explorer's api, i am thinking maybe i should remove a couple of endpoints. one can get the balance via view-address, the return view-raw-tx and view-raw-block could just be a key/value added to view-tx and view-block
[18:01] jfw: for the log: after hitting an uncorrectable read error in a blkNNNN.dat file from the SSD, and restoring the affected file from backup, his node now passes -checkblocks=0 but gets stuck in a loop attempting a REORGANIZE and failing with a memory allocation failure exception from some Db class.
[18:03] jfw: whaack: I dunno, a raw and decoded view seem to me two separate things
[18:03] whaack: dorion_mode: since the eu otc desk didn't work out lemme know what the min is for your other contact
[18:04] jfw: fwiw I suspect he'll be back late today.
[18:14] jfw: dorion: paste if you please the particular exception printout (from debug log or terminal output)
[18:15] jfw: so far it sounds like it's making some single huge memory request, or a bunch in sequence adding up to same, perhaps as it's time to commit the db transaction
[18:16] jfw: the machine had 4G RAM, upping it to 8 didn't help
[18:37] whaack: i'm working on a little python client that interacts with my http endpoints and returns the data as a python dictionary. ive used this to get utxo info into gbw-signer's format for the outputs file
[18:37] whaack: just removed the requests lib and replaced with urllib2 in order to remove any external dependencies
[18:39] whaack: i still have to figure out what's wrong with the push command
[18:39] whaack: also on my todo is to clean up the explorer's code and push a new vpatch
[18:58] dorion_road: --
[18:58] sourcerer: 2024-02-29 18:14:23 (#jwrd) jfw: dorion: paste if you please the particular exception printout (from debug log or terminal output)
[19:01] dorion_road: --
[19:01] sourcerer: 2024-02-29 18:14:23 (#jwrd) jfw: dorion: paste if you please the particular exception printout (from debug log or terminal output)

No Comments »

No comments yet.

RSS feed for comments on this post. TrackBack URL

Leave a comment

Powered by MP-WP. Copyright Jacob Welsh.