It is currently April 26th, 2024, 3:08 am

Weather Json [new stuff] Moon Position on a 24 hour Roundline/Rotator ?

Get help with creating, editing & fixing problems with skins
User avatar
Mor3bane
Posts: 943
Joined: May 7th, 2016, 7:32 am

Re: Weather Json [new stuff] Moon Position on a 24 hour Roundline/Rotator ?

Post by Mor3bane »

Yincognito wrote: August 23rd, 2020, 8:52 pm Ok, I'll make one more attempt at figuring out what you meant, because I think I understand now. Hopefully I am right this time and won't be another misunderstanding. I'll post the code and a screenshot when it's ready.
You're really generous to continue to hash through this. I appreciate that. I really do. I wish somehow I could do the same for people as you and a few others do. I try and sometimes do, but not on these kinds of tough concepts.

Ah well, I am trying to learn more. In 2021 I plan to return to university. Perhaps there will be the opportunity for an extra math course or two...
My DevArt Gallery

There are many ways to be different - there is only one way to be yourself - be amazing at it

The law of averages says what it means; even if you get everything right, you will get something wrong. Therefore; self managing error trapping initiates another set of averages - amongst the errors, some of them will not be errors, instead those instances will appear to be "luck". One cannot complain of the 'appearance' of 'infinite regress of causation', even if it does not have a predictable pattern, only that it requires luck to achieve.
User avatar
Mordasius
Posts: 1173
Joined: January 22nd, 2011, 4:23 pm
Location: GMT +8

Re: Weather Json [new stuff] Moon Position on a 24 hour Roundline/Rotator ?

Post by Mordasius »

Yincognito wrote: August 23rd, 2020, 8:23 pm It's 23:15 where I live, so the moon should have already set at 22:39. I was hovering over the moon (I think) here, but while I can understand where the sun path / twilights / etc are, I don't get the moon position, as it seems "before" the sunset and dusk (at 20:12 and 20:45) towards the bottom right corner of the skin. What do you think?
The moon rises at the 9 o'clock position and sets at the 3 o'clock position on the circle. The lunar zenith, when the moon is at it's "highest", is at the 12 o'clock position. For the time between moonrise and moonset the moon shape is a light colour and there is a faint 'arm' radiating out from the center of the circle. I made it this way so I know where to look in the sky to see, or maybe not see, the moon.

Between moonset and moonrise the moon shape is a dark colour as it moves between the 3 o'clock and 9'oclock positions on the circle (and there is no 'arm').

You can check to see how things will be shown at different times of the day or night by editing [mTimeAngleNow]. e.g for 13:30 use

Code: Select all

[mTimeAngleNow]
; Measure=Time
; TimeZone=#Tzone#
; Format=( ( %#H + ( %#M/60 ) )*15) 
;;------ force a given time --------
Measure=Calc
Formula=( ( 13+ ( 30/60 ) )*15) 
User avatar
Yincognito
Rainmeter Sage
Posts: 7164
Joined: February 27th, 2015, 2:38 pm
Location: Terra Yincognita

Re: Weather Json [new stuff] Moon Position on a 24 hour Roundline/Rotator ?

Post by Yincognito »

Mordasius wrote: August 24th, 2020, 5:49 am The moon rises at the 9 o'clock position and sets at the 3 o'clock position on the circle. The lunar zenith, when the moon is at it's "highest", is at the 12 o'clock position. For the time between moonrise and moonset the moon shape is a light colour and there is a faint 'arm' radiating out from the center of the circle. I made it this way so I know where to look in the sky to see, or maybe not see, the moon.

Between moonset and moonrise the moon shape is a dark colour as it moves between the 3 o'clock and 9'oclock positions on the circle (and there is no 'arm').

You can check to see how things will be shown at different times of the day or night by editing [mTimeAngleNow]. e.g for 13:30 use

Code: Select all

[mTimeAngleNow]
; Measure=Time
; TimeZone=#Tzone#
; Format=( ( %#H + ( %#M/60 ) )*15) 
;;------ force a given time --------
Measure=Calc
Formula=( ( 13+ ( 30/60 ) )*15) 
Ah, yes, it makes sense now - thanks for explaining it. I didn't see the risen version of the moon since it did already set, hence my confusion, as couldn't compare the behaviors.

That being said, isn't this what Mor3bane is looking for, since both the sun and the moon rotate on the whole 360 degrees arc? :confused:
Profiles: Rainmeter ProfileDeviantArt ProfileSuites: MYiniMeterSkins: Earth
User avatar
Mor3bane
Posts: 943
Joined: May 7th, 2016, 7:32 am

Re: Weather Json [new stuff] Moon Position on a 24 hour Roundline/Rotator ?

Post by Mor3bane »

I think I have managed a compromise.

I am trying to incorporate the shape into my skin. After some adjustments in color etc, I think I have a possible workaround using pbutler6's code.

I will update when I seethe results pan out over time. (ah, time. such a timid beast of prey when properly coded). :Whistle
My DevArt Gallery

There are many ways to be different - there is only one way to be yourself - be amazing at it

The law of averages says what it means; even if you get everything right, you will get something wrong. Therefore; self managing error trapping initiates another set of averages - amongst the errors, some of them will not be errors, instead those instances will appear to be "luck". One cannot complain of the 'appearance' of 'infinite regress of causation', even if it does not have a predictable pattern, only that it requires luck to achieve.
User avatar
Yincognito
Rainmeter Sage
Posts: 7164
Joined: February 27th, 2015, 2:38 pm
Location: Terra Yincognita

Re: Weather Json [new stuff] Moon Position on a 24 hour Roundline/Rotator ?

Post by Yincognito »

Just for reference, since the problem seems to be solved and a workaround appears to have been found - maybe it'll be a good starting point for others...

Code:

Code: Select all

[Variables]
Update=25
NTStep=300

Radius=90
ImageW=32
DialSW=2
Offset=(PI/20)

SRH=6
SRM=26
SRS=15
Sunrise=(#SRH#*60*60+#SRM#*60+#SRS#)
SSH=20
SSM=4
SSS=45
Sunset=(#SSH#*60*60+#SSM#*60+#SSS#)
MRH=16
MRM=36
MRS=17
Moonrise=(#MRH#*60*60+#MRM#*60+#MRS#)
MSH=0
MSM=14
MSS=5
Moonset=(#MSH#*60*60+#MSM#*60+#MSS#)
NTH=8
NTM=12
NTS=35
Nowtime=(#NTH#*60*60+#NTM#*60+#NTS#)

[Rainmeter]
Update=#Update#
DynamicWindowSize=1
AccurateText=1
BackgroundMode=2
SolidColor=0,0,0,80
LeftMouseUpAction=[!ToggleMeasure Counter]

---Measures---

[Counter]
Disabled=1
Measure=Calc
Formula=((Counter+#NTStep#)%(24*60*60))
OnUpdateAction=[!SetVariable Nowtime [Counter]][!SetVariable NTH (Trunc([Counter]/(60*60)))][!SetVariable NTM (Trunc(([Counter]%(60*60))/60))][!SetVariable NTS ([Counter]%60)]

[Suntime]
Measure=Calc
Formula=(((24*60*60)+#Sunset#-#Sunrise#)%(24*60*60))
DynamicVariables=1

[Moontime]
Measure=Calc
Formula=(((24*60*60)+#Moonset#-#Moonrise#)%(24*60*60))
DynamicVariables=1

[SinceSunrise]
Measure=Calc
Formula=((((((24*60*60)+#Nowtime#-#Sunrise#)%(24*60*60))*((12*60*60)/[Suntime]))>=(12*60*60))?(((12*60*60))+((((24*60*60)+#Nowtime#-#Sunset#)%(24*60*60))*((12*60*60)/((24*60*60)-[Suntime])))):((((24*60*60)+#Nowtime#-#Sunrise#)%(24*60*60))*((12*60*60)/[Suntime])))
MaxValue=(24*60*60)
DynamicVariables=1

[SinceMoonrise]
Measure=Calc
Formula=((((((24*60*60)+#Nowtime#-#Moonrise#)%(24*60*60))*((12*60*60)/[Moontime]))>=(12*60*60))?(((12*60*60))+((((24*60*60)+#Nowtime#-#Moonset#)%(24*60*60))*((12*60*60)/((24*60*60)-[Moontime])))):((((24*60*60)+#Nowtime#-#Moonrise#)%(24*60*60))*((12*60*60)/[Moontime])))
MaxValue=(24*60*60)
DynamicVariables=1

---Meters---

[UpArc]
Meter=Roundline
W=(#ImageW#+#Radius#*2)
H=(#ImageW#+#Radius#*2)
StartAngle=(PI)
RotationAngle=(PI)
LineStart=(#Radius#-#DialSW#/2)
LineLength=(#Radius#+#DialSW#/2)
LineColor=255,255,255,255
Solid=1
AntiAlias=1
DynamicVariables=1

[DownArc]
Meter=Roundline
W=(#ImageW#+#Radius#*2)
H=(#ImageW#+#Radius#*2)
StartAngle=(0)
RotationAngle=(PI)
LineStart=(#Radius#-#DialSW#/2)
LineLength=(#Radius#+#DialSW#/2)
LineColor=96,96,96,255
Solid=1
AntiAlias=1
DynamicVariables=1

[Sun]
Meter=Rotator
MeasureName=SinceSunrise
ImageName=#@#Sun.png
W=(#ImageW#+#Radius#*2)
H=(#ImageW#+#Radius#*2)
OffsetX=(-#Radius#+#ImageW#/2)
OffsetY=(#ImageW#/2)
StartAngle=(PI)
RotationAngle=(PI*2)
DynamicVariables=1

[Moon]
Meter=Rotator
MeasureName=SinceMoonrise
ImageName=#@#Moon.png
W=(#ImageW#+#Radius#*2)
H=(#ImageW#+#Radius#*2)
OffsetX=(-#Radius#+#ImageW#/2)
OffsetY=(#ImageW#/2)
StartAngle=(PI)
RotationAngle=(PI*2)
DynamicVariables=1

[Text]
Meter=String
X=(#CURRENTCONFIGWIDTH#/2)
Y=(#CURRENTCONFIGHEIGHT#/2)
W=(#ImageW#+#Radius#*2)
H=(#ImageW#+#Radius#*2)
FontFace=Tahoma
FontColor=255,255,255,255
FontSize=8
StringAlign=CenterCenter
StringEffect=Shadow
FontEffectColor=0,0,0,255
AntiAlias=1
Text="Sun = #SRH#:#SRM#:#SRS# - #SSH#:#SSM#:#SSS##CRLF#Moon = #MRH#:#MRM#:#MRS# - #MSH#:#MSM#:#MSS##CRLF#Now = #NTH#:#NTM#:#NTS##CRLF#Sun: [SinceSunrise:%,2]%, Moon: [SinceMoonrise:%,2]%"
DynamicVariables=1
Preview:
ezgif.com-optimize.gif
I added a counter and set the update to 25 milliseconds to be able to animate the whole thing (basically, only the 'now' time changes) on a left mouse click - feel free to remove it if you like.

As mentioned before:
- times are hardcoded in the [Variables], but they can be parsed from someplace else if needed (just make sure they are the times of today, in other words if you use time measures, subtract the 00:00:00 aka 12 AM of the day they represent from the Time measures to get the "timestamps" used here; or, you can just simply extract the hours, minutes and seconds from the parsed strings and it'll be the same result)
- the sun/moon set before the sun/moon rise (which can happen, depending on what and how you parse those times and from what sources) are fully accounted here, since I added and got the modulo of a full day, i.e. (24*60*60), when subtracting times in the formulas; the current code even has the moonset happening before the moonrise, to better see how the skin reacts to it
- since the 'up' (celestial body risen) and 'down' (celestial body set) arcs are half circles but the daytime / moontime widely vary over the course of seasons and such, meaning the actual 'up' interval of sun / moon differ from their 'down' intervals while the arcs representing them in this skin are equal at 180 degrees each, the sun and moon will appear to move either faster or slower while they traverse one of these arcs compared to the other (for example, if the day length is 14 hours and the night length is 10 hours, the sun will move faster on the 'down' arc, since the same unit of time translates into a longer arc on the 'down' arc compared to the 'up' one - similar approach for the moon). This is handled by the *((12*60*60)/[Suntime]) and similar parts in the formulas
- the code doesn't care about the previous or the next moon or sun rise and set times, as the movement is done on the basis of current rise and set times; therefore, it's possible that a small "jump" is made at the time of updating with the values for the next day. Given the fact that these differences are generally not that big (a couple of minutes for the sun, roughly 50 minutes for the moon) compared to the full arcs, I rated this as acceptable in the interest of simplicity

Personally, I would have prefered that the 'up' and 'down' arcs are proportional in length with the actual suntime and moontime - it would have simplified the [SinceSunrise] and [SinceMoonrise] formulas a bit while slightly complicating the StartAngle and RotationAngle formulas when placing them vertically symmetrical, I even set the latter appropriately for a moment when editing the code - but it appears that the equal half circles are more popular among folks compared to accurately representing time invervals on the "sundial", and the change is not that hard to make, so it is what it is.
You do not have the required permissions to view the files attached to this post.
Profiles: Rainmeter ProfileDeviantArt ProfileSuites: MYiniMeterSkins: Earth
User avatar
Mor3bane
Posts: 943
Joined: May 7th, 2016, 7:32 am

Re: Weather Json [new stuff] Moon Position on a 24 hour Roundline/Rotator ?

Post by Mor3bane »

Yincognito wrote: August 24th, 2020, 7:44 pm Just for reference, since the problem seems to be solved and a workaround appears to have been found - maybe it'll be a good starting point for others...

Code:

Code: Select all

[Variables]
Update=25
NTStep=300

Radius=90
ImageW=32
DialSW=2
Offset=(PI/20)

SRH=6
SRM=26
SRS=15
Sunrise=(#SRH#*60*60+#SRM#*60+#SRS#)
SSH=20
SSM=4
SSS=45
Sunset=(#SSH#*60*60+#SSM#*60+#SSS#)
MRH=16
MRM=36
MRS=17
Moonrise=(#MRH#*60*60+#MRM#*60+#MRS#)
MSH=0
MSM=14
MSS=5
Moonset=(#MSH#*60*60+#MSM#*60+#MSS#)
NTH=8
NTM=12
NTS=35
Nowtime=(#NTH#*60*60+#NTM#*60+#NTS#)

[Rainmeter]
Update=#Update#
DynamicWindowSize=1
AccurateText=1
BackgroundMode=2
SolidColor=0,0,0,80
LeftMouseUpAction=[!ToggleMeasure Counter]

---Measures---

[Counter]
Disabled=1
Measure=Calc
Formula=((Counter+#NTStep#)%(24*60*60))
OnUpdateAction=[!SetVariable Nowtime [Counter]][!SetVariable NTH (Trunc([Counter]/(60*60)))][!SetVariable NTM (Trunc(([Counter]%(60*60))/60))][!SetVariable NTS ([Counter]%60)]

[Suntime]
Measure=Calc
Formula=(((24*60*60)+#Sunset#-#Sunrise#)%(24*60*60))
DynamicVariables=1

[Moontime]
Measure=Calc
Formula=(((24*60*60)+#Moonset#-#Moonrise#)%(24*60*60))
DynamicVariables=1

[SinceSunrise]
Measure=Calc
Formula=((((((24*60*60)+#Nowtime#-#Sunrise#)%(24*60*60))*((12*60*60)/[Suntime]))>=(12*60*60))?(((12*60*60))+((((24*60*60)+#Nowtime#-#Sunset#)%(24*60*60))*((12*60*60)/((24*60*60)-[Suntime])))):((((24*60*60)+#Nowtime#-#Sunrise#)%(24*60*60))*((12*60*60)/[Suntime])))
MaxValue=(24*60*60)
DynamicVariables=1

[SinceMoonrise]
Measure=Calc
Formula=((((((24*60*60)+#Nowtime#-#Moonrise#)%(24*60*60))*((12*60*60)/[Moontime]))>=(12*60*60))?(((12*60*60))+((((24*60*60)+#Nowtime#-#Moonset#)%(24*60*60))*((12*60*60)/((24*60*60)-[Moontime])))):((((24*60*60)+#Nowtime#-#Moonrise#)%(24*60*60))*((12*60*60)/[Moontime])))
MaxValue=(24*60*60)
DynamicVariables=1

---Meters---

[UpArc]
Meter=Roundline
W=(#ImageW#+#Radius#*2)
H=(#ImageW#+#Radius#*2)
StartAngle=(PI)
RotationAngle=(PI)
LineStart=(#Radius#-#DialSW#/2)
LineLength=(#Radius#+#DialSW#/2)
LineColor=255,255,255,255
Solid=1
AntiAlias=1
DynamicVariables=1

[DownArc]
Meter=Roundline
W=(#ImageW#+#Radius#*2)
H=(#ImageW#+#Radius#*2)
StartAngle=(0)
RotationAngle=(PI)
LineStart=(#Radius#-#DialSW#/2)
LineLength=(#Radius#+#DialSW#/2)
LineColor=96,96,96,255
Solid=1
AntiAlias=1
DynamicVariables=1

[Sun]
Meter=Rotator
MeasureName=SinceSunrise
ImageName=#@#Sun.png
W=(#ImageW#+#Radius#*2)
H=(#ImageW#+#Radius#*2)
OffsetX=(-#Radius#+#ImageW#/2)
OffsetY=(#ImageW#/2)
StartAngle=(PI)
RotationAngle=(PI*2)
DynamicVariables=1

[Moon]
Meter=Rotator
MeasureName=SinceMoonrise
ImageName=#@#Moon.png
W=(#ImageW#+#Radius#*2)
H=(#ImageW#+#Radius#*2)
OffsetX=(-#Radius#+#ImageW#/2)
OffsetY=(#ImageW#/2)
StartAngle=(PI)
RotationAngle=(PI*2)
DynamicVariables=1

[Text]
Meter=String
X=(#CURRENTCONFIGWIDTH#/2)
Y=(#CURRENTCONFIGHEIGHT#/2)
W=(#ImageW#+#Radius#*2)
H=(#ImageW#+#Radius#*2)
FontFace=Tahoma
FontColor=255,255,255,255
FontSize=8
StringAlign=CenterCenter
StringEffect=Shadow
FontEffectColor=0,0,0,255
AntiAlias=1
Text="Sun = #SRH#:#SRM#:#SRS# - #SSH#:#SSM#:#SSS##CRLF#Moon = #MRH#:#MRM#:#MRS# - #MSH#:#MSM#:#MSS##CRLF#Now = #NTH#:#NTM#:#NTS##CRLF#Sun: [SinceSunrise:%,2]%, Moon: [SinceMoonrise:%,2]%"
DynamicVariables=1
Preview:
ezgif.com-optimize.gif
I added a counter and set the update to 25 milliseconds to be able to animate the whole thing (basically, only the 'now' time changes) on a left mouse click - feel free to remove it if you like.

As mentioned before:
- times are hardcoded in the [Variables], but they can be parsed from someplace else if needed (just make sure they are the times of today, in other words if you use time measures, subtract the 00:00:00 aka 12 AM of the day they represent from the Time measures to get the "timestamps" used here; or, you can just simply extract the hours, minutes and seconds from the parsed strings and it'll be the same result)
- the sun/moon set before the sun/moon rise (which can happen, depending on what and how you parse those times and from what sources) are fully accounted here, since I added and got the modulo of a full day, i.e. (24*60*60), when subtracting times in the formulas; the current code even has the moonset happening before the moonrise, to better see how the skin reacts to it
- since the 'up' (celestial body risen) and 'down' (celestial body set) arcs are half circles but the daytime / moontime widely vary over the course of seasons and such, meaning the actual 'up' interval of sun / moon differ from their 'down' intervals while the arcs representing them in this skin are equal at 180 degrees each, the sun and moon will appear to move either faster or slower while they traverse one of these arcs compared to the other (for example, if the day length is 14 hours and the night length is 10 hours, the sun will move faster on the 'down' arc, since the same unit of time translates into a longer arc on the 'down' arc compared to the 'up' one - similar approach for the moon). This is handled by the *((12*60*60)/[Suntime]) and similar parts in the formulas
- the code doesn't care about the previous or the next moon or sun rise and set times, as the movement is done on the basis of current rise and set times; therefore, it's possible that a small "jump" is made at the time of updating with the values for the next day. Given the fact that these differences are generally not that big (a couple of minutes for the sun, roughly 50 minutes for the moon) compared to the full arcs, I rated this as acceptable in the interest of simplicity

Personally, I would have prefered that the 'up' and 'down' arcs are proportional in length with the actual suntime and moontime - it would have simplified the [SinceSunrise] and [SinceMoonrise] formulas a bit while slightly complicating the StartAngle and RotationAngle formulas when placing them vertically symmetrical, I even set the latter appropriately for a moment when editing the code - but it appears that the equal half circles are more popular among folks compared to accurately representing time invervals on the "sundial", and the change is not that hard to make, so it is what it is.
This looks amazing
I am looking forward to incorporating this variant.
Using the modified code from pbutler6 seems to be working fine. However, having the option to use an image in a rotator was my first preference, hence the persistent request for assistance in that view.
Thanks and great work Yincognito.
Once again (i say that a lot dont i?) thank you from the top of my curious and grateful heart. (Curious to learn more ways to code rainmeter, and possibly other scripting languages and code bases).
:rosegift:
My DevArt Gallery

There are many ways to be different - there is only one way to be yourself - be amazing at it

The law of averages says what it means; even if you get everything right, you will get something wrong. Therefore; self managing error trapping initiates another set of averages - amongst the errors, some of them will not be errors, instead those instances will appear to be "luck". One cannot complain of the 'appearance' of 'infinite regress of causation', even if it does not have a predictable pattern, only that it requires luck to achieve.
pbutler6
Posts: 100
Joined: April 27th, 2020, 8:10 pm

Re: Weather Json [new stuff] Moon Position on a 24 hour Roundline/Rotator ?

Post by pbutler6 »

I like the idea of using images rather than shapes and would like to try to update my skin.

Where can I get copies of you sun and moon images?
User avatar
Yincognito
Rainmeter Sage
Posts: 7164
Joined: February 27th, 2015, 2:38 pm
Location: Terra Yincognita

Re: Weather Json [new stuff] Moon Position on a 24 hour Roundline/Rotator ?

Post by Yincognito »

pbutler6 wrote: August 25th, 2020, 4:12 pm I like the idea of using images rather than shapes and would like to try to update my skin.

Where can I get copies of you sun and moon images?
If you're talking about mine, I just googled "sun png" and "moon png" (also got an "earth png" in the @Resources folder, thought of placing it in the middle of the skin, but had to move the info text around so I gave up the idea for now) and then just set their canvas (to equalize the size of the opaque pixels) and their size properly to 32x32 in Photoshop. If you want the little 32x32 images in my previews, here they are:
Sun.png
Moon.png
Earth.png
If you'd like them bigger, just google them and modify them as you like. When I reduced their size for this skin, they obviously lost some quality from their large size versions.
You do not have the required permissions to view the files attached to this post.
Profiles: Rainmeter ProfileDeviantArt ProfileSuites: MYiniMeterSkins: Earth
User avatar
Yincognito
Rainmeter Sage
Posts: 7164
Joined: February 27th, 2015, 2:38 pm
Location: Terra Yincognita

Re: Weather Json [new stuff] Moon Position on a 24 hour Roundline/Rotator ?

Post by Yincognito »

Mor3bane wrote: August 25th, 2020, 8:12 am This looks amazing
I am looking forward to incorporating this variant.
Using the modified code from pbutler6 seems to be working fine. However, having the option to use an image in a rotator was my first preference, hence the persistent request for assistance in that view.
Thanks and great work Yincognito.
Once again (i say that a lot dont i?) thank you from the top of my curious and grateful heart. (Curious to learn more ways to code rainmeter, and possibly other scripting languages and code bases).
:rosegift:
Yeah, don't worry, it was my pleasure to help you - and I've grown fond of this little skin as well in the meantime, hahaha! I just couldn't stand the fact that I didn't quite get what you wanted until now, that was the only thing that bothered me. As for the rest, I enjoyed it. ;-)
Profiles: Rainmeter ProfileDeviantArt ProfileSuites: MYiniMeterSkins: Earth
User avatar
Mor3bane
Posts: 943
Joined: May 7th, 2016, 7:32 am

Re: Weather Json [new stuff] Moon Position on a 24 hour Roundline/Rotator ?

Post by Mor3bane »

Yincognito wrote: August 25th, 2020, 4:38 pm Yeah, don't worry, it was my pleasure to help you - and I've grown fond of this little skin as well in the meantime, hahaha! I just couldn't stand the fact that I didn't quite get what you wanted until now, that was the only thing that bothered me. As for the rest, I enjoyed it. ;-)
If we were talking rather than typing, I think I could have done better describing things - my brain and the keyboard function at two different speeds and things get lost in translation from brain to fingers lol. Sometimes I try too hard to simplify things so as not to be too verbose, perhaps verbosity is better than repetition. Well, not perhaps, most certainly so.

In the future I will not spare the ink, so to speak.

I will share the final version once ive got it all pretty and such. :)
My DevArt Gallery

There are many ways to be different - there is only one way to be yourself - be amazing at it

The law of averages says what it means; even if you get everything right, you will get something wrong. Therefore; self managing error trapping initiates another set of averages - amongst the errors, some of them will not be errors, instead those instances will appear to be "luck". One cannot complain of the 'appearance' of 'infinite regress of causation', even if it does not have a predictable pattern, only that it requires luck to achieve.