Chat log from the meeting on 2021-03-30

 [11:02] Jagga Meredith: Turned off VPN to the office, lost my connection to here [11:02] Andrew Hellershanks: Hello, everyone. [11:03] Ada.Radius @grid.kitely.com:8002: Hi Andrew [11:03] Gavin.Hird @grid.xmir.org:8002: Hi Andrew [11:03] Kayaker Magic: Hello Andrew! [11:04] Kayaker Magic: With Andrew's help since last week, I finally fixed my friend notifiction problems. [11:04] Ubit Umarov: cool [11:04] Ada.Radius @grid.kitely.com:8002: where was the problem? [11:04] Jagga Meredith: what was it? [11:05] Kayaker Magic: Turns out I was saying ${Const|PrivatePort} in one place when I should have said ${Const|PublicPort} [11:05] Kayaker Magic: Difficult to see amongst all the others... [11:05] Andrew Hellershanks: That can be a hard to spot issue. [11:06] Kayaker Magic: Now everything is working and I can start to optimize... [11:06] Kayaker Magic: For example: [11:06] Jagga Meredith: thgat'll do it [11:07] Kayaker Magic: When you shut down a region it "persists objects" which cn take a LONG TIME on a full region. I see in the INI files that this process is also done often during the day, why does the shutdown persist take so long? [11:08] Andrew Hellershanks: Sounds like a question for Ubit. [11:09] Kayaker Magic: And look! There he is! [11:09] Andrew Hellershanks: :) [11:09] Ubit Umarov: takes long if there where changes [11:10] Ubit Umarov: and it is not a fast operation, ofc.. write to dbs,, etc [11:10] Kayaker Magic: But in the INI it looks like it checks for changes very often, would not that cause a big lag hit? [11:11] Kayaker Magic: Or is what I see in the INI a totally different processs? [11:11] Ubit Umarov: possible is [11:12] Ubit Umarov: any change you make on a object must be stored [11:12] Gavin.Hird @grid.xmir.org:8002: it should not take much time to persist a region to the db on shutdown unless you have a very bad db setup [11:12] Ubit Umarov: during runtime there is a delay to collect more changes.. then does it [11:12] Ubit Umarov: and on shutdown does any still not dode [11:12] Ubit Umarov: done [11:12] Kayaker Magic: MinimumTimeBeforePersistenceConsidered is the setting. [11:13] Kayaker Magic: every 60 to 600 seconds? If it takes as many CPU cycles as the shutdown persistance, my CPU is doing nothing else! [11:14] Jagga Meredith: I've got a 5x5 fairuly full. Shutdown's about 20 sdc onds [11:14] Gavin.Hird @grid.xmir.org:8002: I have never seen more than max 10 seconds to persist a number of regions on shutdown [11:14] Ubit Umarov: MaximumTimeBeforePersistenceConsidered also [11:15] Ubit Umarov: well nothing to do if your db is slow [11:15] Gavin.Hird @grid.xmir.org:8002: I flush changed to the db every 10 secs [11:15] Bill's Chair whispers: This is Bill's Chair [11:15] Ada.Radius @grid.kitely.com:8002: Hi Jamie [11:15] Gavin.Hird @grid.xmir.org:8002: Hi Bill [11:15] Andrew Hellershanks: I've seen long times at shutdown.Never timed it to see just how long it sometimes(?) takes. [11:15] Andrew Hellershanks: Hello, Jamie. [11:15] Ada.Radius @grid.kitely.com:8002: and Gavin [11:16] Gavin.Hird @grid.xmir.org:8002: Hi Ada [11:16] Jamie.Jordan @grid.kitely.com:8002: Hi everybody [11:16] Jagga Meredith: I've got a coding issue. A client wants a touchstart ecven to open a new IM window asking user to start a chat with touchee. I've got the code to do that in Nearby Chat, but he wants separate window. Ideas? Code follows....

llInstantMessage( nameKey, t_name+" touched me. Click link below to open chat session." ); llInstantMessage( nameKey, "secondlife:///app/agent/"+t_id+"/im"); [11:16] Kayaker Magic: Well, I have someone with tons of scripted objects, does persisting scripts require saving the state or something? [11:16] Ubit Umarov: ofc [11:17] Ubit Umarov: script state, prims position.. all [11:17] Kayaker Magic: I'm still puzzled: On these busy regions, shutdown takes tens of minutes, why so long if it was already done 60 to 600 seconds ago? [11:17] Gavin.Hird @grid.xmir.org:8002: what matters is how much you can send to the db, before it needs to flush to disk (ssd will be faster than spinning rust) [11:18] Gavin.Hird @grid.xmir.org:8002: so you might want to tune your db buffers and memory use [11:19] Kayaker Magic: If my DB was poorly tuned, the final persist would take just as long as the ones every 600 seconds and I would expect a huge lag spike every 600 seconds. [11:19] Jagga Meredith: also, which DB? I'm habving good luck with Maria [11:19] Gavin.Hird @grid.xmir.org:8002: that too [11:19] Gavin.Hird @grid.xmir.org:8002: I am the odd man out using postgresql [11:19] Ubit Umarov: in kay case the region/simulation db [11:19] Kayaker Magic: So is the 600 second one incrimental and the shutdown one is full? Can I request the final one be incrimental also? [11:19] Ubit Umarov: local to region [11:20] Kayaker Magic: I'm using MySQL, [11:20] Andrew Hellershanks: ooh... someone (testing) Postgresql. :) [11:20] Gavin.Hird @grid.xmir.org:8002: it is pretty performant and stable, but yeah - a bit of testing [11:20] Andrew Hellershanks: Gavin, Support for it doesn't get as much testing as for MySQL/MariaDB [11:21] Gavin.Hird @grid.xmir.org:8002: I know [11:21] Gavin.Hird @grid.xmir.org:8002: but my little grid runs on it [11:21] Gavin.Hird @grid.xmir.org:8002: so, yeah :-) [11:21] Gavin.Hird @grid.xmir.org:8002: I guess I test it 24/7 sort of then [11:22] Gavin.Hird @grid.xmir.org:8002: I also don't run any region db, but all on a single instance [11:23] Andrew Hellershanks: Kayaker, you could run the mysqltuner script to see if it reports anything that might need tweaking. Tens of minutes for shutdown is excessive. I think my experience has been minute(?). [11:24] Andrew Hellershanks: s/minute/minutes/ [11:24] Jagga Meredith: ooo-regular expression [11:24] Andrew Hellershanks: at worse but, as I said, I've not timed it. My small regions have usually shutdown quickly enough. [11:24] Gavin.Hird @grid.xmir.org:8002: Linux or Windows Kayaker? [11:25] Kayaker Magic: It is that fast on almost all regions, just several very full regions take forever. One is running a "farm" full of "breedables". [11:25] Kayaker Magic: Linux [11:25] Gavin.Hird @grid.xmir.org:8002: so then the region db should talk to the region over localhost which is a socket [11:26] Ubit Umarov: no shutdown one is also on the ones needed [11:26] Gavin.Hird @grid.xmir.org:8002: in memory if that was unclear [11:26] Ubit Umarov: ie like the during runtime [11:26] Andrew Hellershanks: A farm with breedables is going to have a lot of changed data to persist. [11:27] Ubit Umarov: ( should not try to store things that had not changed ) [11:27] Kayaker Magic: But if it takes 10 minutes to persist it all, what is it doing every 600 seconds? I'm still confused. [11:27] Ubit Umarov: no ideia.. it is yr region :p [11:27] Ubit Umarov: mine does not take 10minutes [11:28] Gavin.Hird @grid.xmir.org:8002: the trick is to set your db buffers sufficiently large that it writes the entire thing to db memory and then it can fill back to disk at its own pace [11:28] Andrew Hellershanks: Kayaker, What is the prim count of the region? [11:28] Ubit Umarov: in fact does almost nothing on shutdown [11:29] Kayaker Magic: is there a way to ask the console for the prim count? [11:30] Andrew Hellershanks: The status info has that. [11:31] Gavin.Hird @grid.xmir.org:8002: I have a shutdown_commands.txt in bin [11:31] Kayaker Magic: Looks like 33315 prims. [11:32] Gavin.Hird @grid.xmir.org:8002: which contains two lines: [11:32] Jagga Meredith: meh [11:32] Gavin.Hird @grid.xmir.org:8002: backup show uptime [11:32] Gavin.Hird @grid.xmir.org:8002: it calls backup before it exists, but in a region with 5000+ it takes a few seconds [11:33] Gavin.Hird @grid.xmir.org:8002: exits* [11:33] Jagga Meredith: what have you got for RAM? [11:33] Kayaker Magic: A ton, 30GB I think. [11:33] Ubit Umarov: it can take a bit of time serielizing all scene objects ( linksets) and stopring on the db [11:34] Jagga Meredith: should e plenty [11:34] Ubit Umarov: and storing i meant [11:34] Kayaker Magic: So that still beggs the question: does it do a complete persistance of all objects at shutdown, or only an incrimental? [11:35] Ubit Umarov: already answered that [11:35] Ubit Umarov: should only store changed objects [11:35] Gavin.Hird @grid.xmir.org:8002: it should only be the ones since last flush, which is your 60-600 sec [11:36] Ubit Umarov: (incremental is confusing bc that has another meaning on db updates.. ) [11:36] Kayaker Magic: OK, a "farm" is changing everything, so the 600 second flush would take 10 minutes also.... is that region thrashing all the time? [11:36] Ubit Umarov: yes [11:36] Gavin.Hird @grid.xmir.org:8002: I flush every 10 secs, which usually makes for frequent bu small burst of writes to the db [11:37] Ubit Umarov: it it takes 10minuts to store everything and you are changing everything it will take 10minutes :p [11:37] Kayaker Magic: So for those regions, I might want to flush more often ... [11:38] Ubit Umarov: or less [11:38] Gavin.Hird @grid.xmir.org:8002: I would try that [11:38] Gavin.Hird @grid.xmir.org:8002: more often [11:38] Kayaker Magic: I will try! [11:38] Gavin.Hird @grid.xmir.org:8002: I guess your db more or less sits there idling, so it can affort freqent flushes [11:38] Ubit Umarov: or it is there totally overloaded :p [11:39] Gavin.Hird @grid.xmir.org:8002: if it was a big grid with a very buys db, it would be different [11:39] Kayaker Magic: small grid, currently on one server [11:39] Ubit Umarov: ( i killed thousands of chickens at SL.. those things just did flood regions ) [11:39] Kayaker Magic: LOL [11:40] Gavin.Hird @grid.xmir.org:8002: Ubit - the chicken slayer [11:40] Ubit Umarov: :) [11:40] Andrew Hellershanks: :) [11:40] Ubit Umarov: well i did return them [11:40] Ubit Umarov: not my fault that meant killed with those scripts [11:41] Kayaker Magic: They die if they spend too much time in inventory.... [11:41] Ubit Umarov: yeah [11:41] Kayaker Magic: Run out of oxygen in there. [11:41] Jagga Meredith: I've got a coding issue. A client wants a touchstart ecven to open a new IM window asking user to start a chat with touchee. I've got the code to do that in Nearby Chat, but he wants separate window. Ideas? Code follows....

llInstantMessage( nameKey, t_name+" touched me. Click link below to open chat session." ); llInstantMessage( nameKey, "secondlife:///app/agent/"+t_id+"/im"); [11:41] Jamie.Jordan @grid.kitely.com:8002: :-) [11:42] Ubit Umarov: hmm what window to use is a viewer side option no? [11:42] Andrew Hellershanks: An IM will open an IM window unless someone has their viewer set to put IMs in chat. [11:43] Ubit Umarov: yeah think that is viewer option(s) [11:43] Andrew Hellershanks: It is. [11:43] Ubit Umarov: nothing to do region side [11:43] Jagga Meredith: even an IM from a scdript? My IM's all open inm separate windows except the code above [11:43] Ubit Umarov: well scripts dialogs to popup things [11:43] Ubit Umarov: but those are not ims [11:44] Andrew Hellershanks: In preferences -> Chat (on left) -> Chat Windows tab (on right) then down to "Show IMs in:". [11:44] Jagga Meredith: can you make them IM's? [11:45] Ubit Umarov: oops you mean to open a im with other user [11:45] Gavin.Hird @grid.xmir.org:8002: what happens? - nothing? [11:45] Jagga Meredith: it goes to Nearby Chat [11:45] Ubit Umarov: that isn't even standard thing [11:45] Jagga Meredith: but only user can see it [11:46] Ubit Umarov: llInstantMessage( nameKey, "secondlife:///app/agent/"+t_id+"/im"); <--- this depends on viewer detect the special url and do.. things.. [11:46] Andrew Hellershanks: Jagga, if IMs are appearing in the same place as regular chat tell the user to change their viewer settings. [11:46] Gavin.Hird @grid.xmir.org:8002: so only the sender can see it? [11:46] Gavin.Hird @grid.xmir.org:8002: or owner of the sender script? [11:46] Ubit Umarov: may even be sl only.. no idea [11:47] Ubit Umarov: "secondlife:///app/agent/" is a local thing gavin? [11:47] Jagga Meredith: it' [11:47] Object: Script running [11:47] Jagga Meredith: it's an URL that tells the viewer to do something [11:47] Gavin.Hird @grid.xmir.org:8002: it should be, but I don't think viewers respond to those the same way [11:48] Gavin.Hird @grid.xmir.org:8002: if at all for many functions [11:49] Object: Script running [11:49] Jagga Meredith: put your key in for t_id [11:49] Ubit Umarov: [11:49] Object: IM Ubit Umarov [11:50] Jagga Meredith: yup [11:50] Ubit Umarov: not that usefull [11:50] Jagga Meredith: then you click the thing and it opesn a chat ewindow [11:50] Ubit Umarov: so fs ignored the special things [11:50] Gavin.Hird @grid.xmir.org:8002: right [11:50] Gavin.Hird @grid.xmir.org:8002: I can see there are a few actions in llurlaction.cpp [11:51] Gavin.Hird @grid.xmir.org:8002: and secondlife:///app/agent/"+t_id+"/im") is one of them [11:51] Object: Script running [11:52] Jagga Meredith: ok [11:52] Gavin.Hird @grid.xmir.org:8002: the others are requestfriend, removefriend, block and unblock [11:52] Ubit Umarov: hmm fs does mark it as a link [11:52] Ubit Umarov: but does nothing [11:52] Jagga Meredith: ok [11:53] Gavin.Hird @grid.xmir.org:8002: these are special urls the viewer knows about [11:53] Ubit Umarov: it does show [11:51] Object: IM Ubit Umarov [11:53] Ubit Umarov: with the IM... as link [11:53] Ubit Umarov: but then.. nothing [11:54] Object: Script running [11:54] Jagga Meredith: so is there other code eg. llRegionSay that might work bedtter? [11:54] Jagga Meredith: I don't want to have to writre a HUD [11:54] Kayaker Magic: When there is a minute, I have another tuning question.... [11:54] Ubit Umarov: oops [11:54] Ubit Umarov: [11:54] Object: IM Gavin.Hird @grid.xmir.org:8002  does work [11:55] Gavin.Hird @grid.xmir.org:8002: it has to be programmed into the floater ( in this case chat/IM) how to handle such an URL [11:55] Andrew Hellershanks: Jagga, llRegionSay is just a way to send chat region wide. It won't pop up a dialog box. [11:55] Ubit Umarov: it did open my im to you gavin.Hird [11:55] Jagga Meredith: yup, that part of it works [11:56] Jagga Meredith: user wants the object to open a separate chat window to put that in [11:56] Jagga Meredith: which I don't think is possible [11:56] Jagga Meredith: without a coded rewrite [11:56] Jagga Meredith: which is still beyond me at this point [11:56] Gavin.Hird @grid.xmir.org:8002: there is support for the IM in Dayturn [11:56] Gavin.Hird @grid.xmir.org:8002: might not be in FS [11:57] Jagga Meredith: interresting [11:57] Jagga Meredith: ok [11:57] Jagga Meredith: is it something we'd like? [11:57] Gavin.Hird @grid.xmir.org:8002: it is probably down to we have different codebase [11:57] Jagga Meredith: yep [11:58] Jagga Meredith: OK, that gives me enough to go on [11:58] Andrew Hellershanks: ok, good. [11:58] Jagga Meredith: pretty much what I suspected [11:58] Gavin.Hird @grid.xmir.org:8002: probably something that dates back to Imprudence for Dayturn [11:58] Jagga Meredith: ok [11:58] Gavin.Hird @grid.xmir.org:8002: which is the origin [11:59] Andrew Hellershanks: We are almost at the top of the hour again. Are there any questions from someone who may have to leave soon? [11:59] Andrew Hellershanks: Any other questions/comments for today? [11:59] Kayaker Magic: I have another tuning question.... [11:59] Kayaker Magic: I have a script that occasionally has to send ~120 messages with llRegionSayTo another object. On XEngine this worked most of the time, but on YEngine I often have some messages fail to arrive. (I don't care about order). Is there some parameter to tune the message queue to handle bursts like this better? Is there a recommended way to break up the burst? (I hesitate to use llSleep!) [12:00] Object: Script running [12:00] Ubit Umarov: lldialog also worked [12:00] Ubit Umarov: but,,, ugly [12:00] Ubit Umarov: Ok [12:01] Object: Script running [12:01] Ubit Umarov: { llSay(0, "Script running"); llDialog("284b2787-d3e7-1e9a-010b-c3c099f86a42", "secondlife:///app/agent/"+"97d02b42-9119-4708-804e-4c7d699162ae"+"/im",[], -112); } [12:01] Gavin.Hird @grid.xmir.org:8002: I have a comment to something Kitely posted [12:01] Ubit Umarov: very ugly :) [12:02] Ubit Umarov: Y and X should do the same [12:02] Andrew Hellershanks: I'd be careful about embedding special URLs in messages. They may not work across all browsers. [12:02] Gavin.Hird @grid.xmir.org:8002: https://www.kitely.com/virtual-world-news/2021/03/17/environmental-enhancements-and-improved-scripting/ [12:03] Gavin.Hird @grid.xmir.org:8002: here they posted a load of new functions of which I cannot see all implemented [12:03] Gavin.Hird @grid.xmir.org:8002: does that mean they have their own implementation? [12:03] Ubit Umarov: i didn't check the list [12:03] Kayaker Magic: No, they just pulled those functions from Ubit's additions. [12:03] Ubit Umarov: but that is abotu their own "fork" ofc [12:03] Gavin.Hird @grid.xmir.org:8002: llRequestUserKey was one [12:03] Andrew Hellershanks: Kayaker, You may be hitting a limit on number of queued events. [12:04] Kayaker Magic: Can I up that number? [12:04] Ubit Umarov: public LSL_Key llRequestUserKey(LSL_String username) [12:04] Ubit Umarov: that one we have gavin.Hird [12:04] Andrew Hellershanks: Kayaker, I think so. I'm trying to remember the name of the setting. [12:04] Gavin.Hird @grid.xmir.org:8002: ok [12:05] Gavin.Hird @grid.xmir.org:8002 whispers: is there a commit for it except hidden in cosmetics or updated syntax or something else? :-) [12:05] Andrew Hellershanks: Kayaker, In XEngine there is MaxScriptEventQueue with 300 default. [12:05] Selby.Evans @grid.kitely.com:8002: Is it a good idea to restart regions occasionally? [12:05] Object: Script running c3bcdb60-a0a8-4962-a8c3-b263e3adc4dc [12:06] Ubit Umarov: hmm ok not sure what key is that lol [12:06] Object: Script running a17dc2c8-3fa7-4ed1-93ab-7fb6e6ae97a8 [12:06] Gavin.Hird @grid.xmir.org:8002: looks like a random uuid [12:06] Kayaker Magic: Selby: I am leaving regions up for longer and longer times, sometimes months with issues. I think things are getting better in the OpenSim code. [12:07] Ubit Umarov: yeah kinda does [12:07] Ubit Umarov: Duhhhh [12:07] Ubit Umarov: silly [12:07] Gavin.Hird @grid.xmir.org:8002: months with issues? [12:07] Ubit Umarov: it is a dataserver thing [12:07] Andrew Hellershanks: Kayaker, I was checking the docs on the function but I don't see a rate limit on it unless it is sending to the debug channel. There is a length limit to the messages. [12:07] Ubit Umarov: well we do have llRequestUserKey gainv [12:08] Ubit Umarov: and gavin.Hird [12:08] Gavin.Hird @grid.xmir.org:8002: ok [12:08] Kayaker Magic: Selby: People who have events and lots of visitors still think reseting before an event is wise. [12:08] Gavin.Hird @grid.xmir.org:8002: will check back [12:09] Kayaker Magic: Andrew: It is a bunch of short messages (I'm not allowed to re-write the receiving script). [12:09] Object: Script running ed24f986-b4b1-4247-8137-6ecfea3ac26e [12:09] Object: The key for this user is : 284b2787-d3e7-1e9a-010b-c3c099f86a42 [12:09] Selby.Evans @grid.kitely.com:8002: Thanks, Kayaker [12:09] Ubit Umarov: ok that key makes more sense for my nick :) [12:09] Kayaker Magic: Selby: That was months WITHOUT issues. [12:10] Andrew Hellershanks: Selby, there have been cases of high memory usage some of which get freed on a restart. The Warp3D map tile generator has been known to leak memory (in the past?). That could require restarts if they are generated more than on region start. [12:10] Andrew Hellershanks: Selby, Best to check your region stats and see how they change over time. [12:10] Ubit Umarov: still think reseting before an event is wise. ?? [12:10] Ubit Umarov: reset a region ?? [12:11] Ubit Umarov: if so, plz ask that to the region grid Selby.Evans [12:11] Ubit Umarov: specially on kitely [12:12] Ubit Umarov: ( and how to do it there... ) [12:12] Gavin.Hird @grid.xmir.org:8002: with the flood of security updates for Linux and others, I am surprised anyone keeps a host up for months these days [12:12] Andrew Hellershanks: yea, I've seen statements about restarting regions before events to reduce chance the region will crash during the event. The origin of those statements is based more on past history rather than something that may (or may not) be needed in a current version of OS. [12:12] Kayaker Magic: On Kitely, your region is reset every time it goes empty for minute, so it happens often. [12:12] Selby.Evans @grid.kitely.com:8002: Restart is easy, I have done it on my Kitely 24/7 place [12:13] Gavin.Hird @grid.xmir.org:8002: is it not suspended and not reset? [12:13] Andrew Hellershanks: Gavin, pretty much any program can be restarted on the fly unless it is a fix for something in the kernel. [12:13] Gavin.Hird @grid.xmir.org:8002: there are kernel fixes pretty often these days [12:13] Ubit Umarov: well i don't know kitely mechanics on that, so better check with them [12:13] Andrew Hellershanks: There is work underway to provide a means to patch running kernels to avoid system reboots. [12:13] Selby.Evans @grid.kitely.com:8002: It did seem to fix a minor issue [12:14] Ubit Umarov: on "Nomal opensim" yes.. it is a nice idea to fully shutdown a region and restart it [12:14] Ubit Umarov: all code eventuall runs away in time [12:15] Ubit Umarov: in .net/mono, garbage collect just eventually totally fails [12:16] Andrew Hellershanks: Anything more for today? This meeting is trying my cats patience as she started calling for me to play about a half hour ago. :) [12:16] Selby.Evans @grid.kitely.com:8002: I will ask Ilan for advice also -- Mainly I was wondering whether to suggest restarts to users of the 24/7 places. [12:16] Andrew Hellershanks: Did the clocks in Europe change this past weekend.? [12:17] Kayaker Magic: I'm good for today! [12:17] Ubit Umarov: ye they did andrew [12:17] Selby.Evans @grid.kitely.com:8002: ok -- bye all [12:17] Ada.Radius @grid.kitely.com:8002: I must go, gotta reboot, computer and RL [12:17] Ubit Umarov: cya [12:17] Andrew Hellershanks: ok. I must congratulate everyone on their attendance. I don't think we had a single person be early or late this spring as a result of the clock changes. [12:17] Andrew Hellershanks: ok, Selby. tc. [12:18] Kayaker Magic: Ick. I turned the music up for Enya and now someone is shouting in my ear. [12:18] Jamie.Jordan @grid.kitely.com:8002: thanks everybody [12:18] Andrew Hellershanks: Kayaker, :) [12:18] Ubit Umarov: yes there are others on the stream :) [12:18] Ubit Umarov: like sabaton :p [12:19] Gavin.Hird @grid.xmir.org:8002: WWDC21 will be June 7-11, so more disruption from Apple, haha [12:19] Andrew Hellershanks: I have all my CDs copied to my HD and I run a player program that I've told to use shuffle play. It is like my own personal radio station (and it does have several Enya albums). [12:19] Ubit Umarov: fun stream now on enya again lol [12:20] Now playing: Enya - A kiss by the fountain [12:20] Ubit Umarov: [12:19] Now playing: Enya - A kiss by the fountain [12:20] Andrew Hellershanks: Not sure I know this Enya song. Must be on a newer album I don't have. [12:21] Now playing: Era - Infanati [12:21] Andrew Hellershanks: well, as there appears to nothing further for today I will wrap it up. [12:21] Andrew Hellershanks: Thanks for coming. See you all again next week.