[07:59] <__keybuk> heh
[07:59] <__keybuk> NM is broken today
[07:59] <AlexExtreme> nm being the program nm or NetworkManager?
[08:01] <__keybuk> Network Manager
[08:02] <__keybuk> it amuses me no end that X-Chat is failing to render Md's quit message correctly
[08:03] <AlexExtreme> it works for me, after much charset setting changing ;)
[08:03] <__keybuk> heh
[08:03] <__keybuk> it gets it right, as long as you don't highlight it
[08:03] <__keybuk> I prefer the chinese, anyway
[08:03] <__keybuk> 
[08:03] <AlexExtreme> ah, i see what you mean, that's kinda weird :p
[08:04] <__keybuk> it must be a bug in the X-Chat text view widget
[08:04] <__keybuk> since the GTK+ standard one does it just fine if you paste it
[08:04] <AlexExtreme> yeah
[08:04] <ion_> It probably doesnt view combining characters correctly. vte has the same problem.
[08:07] <__keybuk> oh well
[08:07] <__keybuk> today I mostly trying to define the upstart state description machine/language
[08:56] <__keybuk>  *  W  - Weak until:  has to hold until  holds. The difference with U is that there is no guarantee that  will ever be verified. The W operator is sometimes called "unless".
[09:01] <__keybuk> fundamentally I think we need the basic operators:
[09:01] <__keybuk>   a AND b     - both a and b are true
[09:01] <__keybuk>   a OR b      - either a or b are true
[09:01] <__keybuk>   NOT a       - a is false
[09:01] <__keybuk> and
[09:02] <__keybuk>   a UNTIL b   - a is true and b is false; a resets b, b resets a
[09:03] <__keybuk> it's the "reset" bit that's causing me headaches
[09:03] <AlexExtreme> yes, i think those will be the only needed ones. it'd be possible to double up some operators like AND and OR, right? so i could do "a AND b AND c", where all 3 are true, and "a OR b OR c" where either one is true
[09:04] <__keybuk> sure
[09:04] <__keybuk> so given a primitive Event operand ("has the event happened?"), UNTIL is easy
[09:04] <__keybuk> since it can reset the value on either side
[09:04] <__keybuk> so   some-event UNTIL other-event
[09:04] <__keybuk> when some-event happens, we "forget" other-event has happened, until it happens again
[09:05] <__keybuk> at which point we "forget" that some-event happened
[09:06] <AlexExtreme> yes
[09:06] <__keybuk> so what happens with
[09:07] <__keybuk> NOT some-event UNTIL other-event
[09:07] <__keybuk> (NOT some-event) UNTIL other-event
[09:07] <__keybuk> to make that clearer
[09:08] <AlexExtreme> ick, that does cause headaches
[09:08] <AlexExtreme> hmm
[09:08] <AlexExtreme> so that's basically "run on any event that isn't 'some-event' until 'other-event' occurs"?
[09:09] <__keybuk> "NOT event" would mean "event has not happened"
[09:09] <AlexExtreme> ah
[09:09] <__keybuk> so it means "run from when 'some-event' has not happened until 'other-event' has happened"
[09:10] <__keybuk> it doesn't make any logical sense, does it? :p
[09:10] <__keybuk> likewise
[09:10] <AlexExtreme> absolutely non at all
[09:10] <__keybuk> a UNTIL b UNTIL c
[09:10] <__keybuk> makes no sense
[09:10] <AlexExtreme> *none
[09:10] <__keybuk> "run from a until b, until c happens; at which point a must happen again"
[09:11] <__keybuk> I think it's equivalent to "a UNTIL (b OR c)"
[09:13] <ion_> Whats the difference to the current complex-event-config implementation?
[09:19] <__keybuk> ion_: none, that's the problem I can't work out how to move on from
[09:21] <__keybuk> the other option I can see would be to do something like:
[09:21] <__keybuk> have "on" be Event and AND or OR
[09:21] <__keybuk> and have an additional "from" operator that's Event UNTIL Event and AND/OR on until only
[09:22] <__keybuk> on foo or bar
[09:22] <__keybuk> from a until b
[10:12] <__keybuk> I think it's definitely worth having the concepts partially seperate
[10:12] <__keybuk> e.g. the following primitives
[10:12] <__keybuk> Event - has this event been seen? yes/no
[10:13] <__keybuk> EventCombination - have {both of, either of} two events been seen
[10:13] <ion_> Has this event been seen? true/false/filenotfound
[10:13] <__keybuk> why filenotfound?
[10:14] <ion_> http://worsethanfailure.com/Articles/What_Is_Truth_0x3f_.aspx
[10:15] <__keybuk> that's ternary logic
[10:15] <__keybuk> databases tend to use it
[10:15] <__keybuk> TRUE, FALSE and NULL
[10:16] <ion_> You do know the worsethanfailure website, dont you? :-) It used to be called the Daily WTF.
[10:17] <__keybuk> no
[10:18] <ion_> http://worsethanfailure.com/Articles/Classics-Week-How-Not-to-Parse-Command-Line-Arguments.aspx
[10:18] <ion_> It contains real-life examples of code WTFs submitted by readers. :-)
[10:18] <__keybuk> what's wrong with that? :p
[10:19] <__keybuk> quite a cunning way to do it
[10:19] <__keybuk> a lot of GTK+ uses that trick (though it wraps it with something called GQuark)
[10:19] <ion_> Hehe
[10:20] <__keybuk> State - defines a period between two EventCombinations
[10:20] <ion_> For daily laughs, i recommend subscribing to the wtf feed. :-)
[10:20] <__keybuk> and then
[10:20] <__keybuk> StateCombination - are we in {both of, either of} two states
[10:27] <__keybuk> this doesn't seem that elegant to me
[10:46] <AlexExtreme> http://en.opensuse.org/Boot_time << /me somehow thinks that that is completely unrealistic...
[10:47] <AlexExtreme> they want to get the boot time down to 5 seconds
[10:47] <AlexExtreme> i just don't see how that is possible
[10:48] <__keybuk> heh, that seems to be getting reported a lot this week
[10:49] <__keybuk> the page is over a year old!
[10:49] <AlexExtreme> it is?
[10:49] <AlexExtreme> hmm
[10:49] <AlexExtreme> it is
[10:49] <AlexExtreme> then i wonder why distrowatch are reporting it...
[10:52] <__keybuk> *shrug*