âTMª I'll end an AJ's podcast for your Monday âTMª
âTMª Most wonderful show is âTMª
âTMª Keeping up with the Joneses âTMª
- Mr. Jones.
- I get my Sunday name.
- Yes, yeah, definitely your Sunday name.
(laughs)
- How are you, Mr. Jones?
- I'm quite well, thank you.
- Welcome to episode 256 of Keeping Up with the Joneses.
- Yes.
- We're gonna be talking about some things we've learned.
I do wanna say you probably noticed,
I don't know if you noticed,
but this episode is marked explicit
in your podcast playlist.
- It is?
- It is, yeah.
- Wait, what are we talking about?
(laughing)
- See, I had a fourth thought about
what we'd be talking about.
And I just thought it's gonna be tagged with explicit
for the most part, it's not.
But if you're listening to this in the car
and your kids are in the car,
later on we're gonna be talking about five things
we've learned about being married.
And one of those, I plan on talking a little bit
about the physical aspects of being married.
And I just wanna give you warning.
So if you're listening to, with kids in your shop,
I'm not gonna be horribly explicit,
but I'm just gonna give you a little bit of warning
that that's coming later.
Other thing to know,
depends on which podcast client you're using.
- Is this also a little bit of warning for me
that that's coming later?
(laughs)
- I ran it past you, I asked here,
would you be okay if we talked about sex life
on the podcast? - Yes, but I didn't realize.
It's gonna be explicit.
- It's really not.
It's more that, you know, we're very open with our kids.
- Yes.
- But other people might not be in there,
might be listening to the car and, you know,
- Oh, I got you. - It's beautiful.
- It's a topic.
You might be like, "Ah, what a--"
- I feel slightly better now.
I can stop sweating. - So I'm gonna be sweating.
- Okay.
- I like, as in, if you're not married,
I don't think what we're gonna share
is gonna be unhelpful or defiling or--
- Oh yeah, okay, okay, good.
- The general topic. - Okay, thanks.
- Okay.
The other thing is, I did some research this weekend.
I'm using, when I listen to podcasts,
I listen, my favorite podcast app is Overcast.
- Yeah, that's what I used to.
- But I tend to use Apple's podcast
when I'm at home or in the car because it works with Siri.
So when I plug in my phone to our car,
we have CarPlay, the chapter support is way better
than Apple Podcasts than it is on Overcast.
So I can just use the skip up to switch between chapters.
And if you didn't know that we have chapters,
every one of our episodes have chapters.
So if you don't like the thing we're talking about,
you can skip to the next topic that we're talking about.
- Okay.
- We deliberately do that.
It works for the videos as well.
So members, if you're watching a video.
- Can I skip right now?
- And you want to skip.
(laughing)
But some podcast clients don't support that.
So if you're listening in Spotify right now,
you can't skip chapter.
Spotify doesn't have chapter support.
So it depends if you're using a good podcast plan or not.
- Good, alright.
- Wow, we're gonna get that. - We think catch up.
- We could catch up.
Jones, take us away.
- We had the Family Fall Carnival at Gray Center,
which was amazing.
- Describe that to people who weren't there.
What is a Family Fall Carnival?
- It's basically, it's an outdoor event.
This is the second time that we've done it
the way that we did it this time.
So we invite a bunch of food trucks in,
and then we had, I'm trying to even think,
eight or 10 inflatable, jumpy type things,
everything from for little tinys to teenager wipe out course.
- A big run of marathon type thing
over a big inflatable slides and climbing things.
- And then we have some rides, like swing rides
and mechanical things, climbing wall, that kind of stuff.
And then the face painting and balloon.
So basically like a balloon artist.
- Balloon modeler, yeah.
- Modeler, you think that's what it's called?
I don't think so.
- Balloon modeling?
- It's called a balloon artist.
- Well, forgive me, I didn't realize
we're in the realm of fine art.
- Yes, I think so.
- We were supposed to have a thing.
- What these people do is shocking with balloons.
- We were supposed to have a petting zoo,
but that didn't happen.
- Yes, there was some sort of error.
- But the point is there's lots of things
for kids to do in families to do.
- Yeah, and then we also had like, you know,
a popcorn station making fresh popcorn the whole time
and cotton candy, which is, I didn't have any,
but it is like my favorite thing.
It's just sugar. - It's one of the biggest
lines the whole time. - Yeah.
- Oh yeah.
- So it's all outdoors, it's a big fall celebration.
We open it up to the community.
Where about 700 people show up.
Yeah, it was so fun.
- It was so much fun.
- Yeah, and I loved how much of the community came out.
Like there was, you know, where there was plenty
of people from church, but there was also plenty of people
that I'd never seen before and their kids just,
it was, the fun for me was to begin with,
like for the first half an hour of the event,
I was just standing where everybody comes in saying,
"Welcome," and whatever.
And then the amount of people that stopped and said,
like, well, what, like, what are you charging?
Like, no, no, it's free.
Like you're well, okay.
So do we buy the popcorn?
No, no, that's free.
Like so to just be able to do that.
And they don't get it at all.
That was really fun.
Yeah, it was great.
Great, great event.
Well done.
Our staff for putting on and running that.
And it was awesome.
I loved it.
And I didn't, you know, I'm not normally an outdoor.

I don't even know what I am now.
I do like camping and do kind of like outdoors.
but the weather was great, you know, it was overcast, which was really
beautiful, right?
It wasn't hot, but yeah, at a great time.
Yeah.
I really enjoyed it.
Our kids loved it.
We also did baptisms as well.
We did, which was great.
Well, we didn't know it.
This is the first time I haven't baptized people in ages.
We're going to say gazillions.
Yeah, I was going to say gazillions of years.
I saw your gig gig gig gig gig gig gig gig gig gig gig.
Yeah.
That was Saturday Sunday.
I spoke at church.
You did.
Yeah.

But I taught on from the book of Revelation about being lukewarm.
You didn't even get to hear me, did you?
Haven't yet.
You protested.
You were like, I refuse to listen.
I was like, I'm not going.
No, we, we needed some help in children's ministry.
So I, I snuggled babies.
Yeah.

So I spoke on being lukewarm.
And then this week you were in the school teaching what teaching on prophetic.
So.
I'm thinking about sex.
You are so prophetic.
- Oh, right.
(laughing)
Told you it would be explicit this week.
- There was, folks.
Yeah, no, I, yes, spoke on prophetic at the school
and then finished our last Wednesday night prophetic class.
- Is it done now?
- It's done now.
- The Wednesday night training class?
- Yeah, I've done eight, or Amanda and I together,
I've done eight in a row and we're now done.
- I love that.
- So, mm-hmm.
- Good.
I wanted to mention something.
I was doing a teachable moment with Abby,
which I don't know if she cared about or not.
We have a grill that was actually bought for us
by the very wonderful Gary and Sarah Morgan.
- Yes.
- Which I don't know how old it would be then.
- It's old.
- 2012, I think it was,
'cause I looked at the warranty statement.
- Yes, it was 2012 because it was right after MJ was born.
- Okay, so back in 2012, our friends Gary and Sarah,
Sarah, Sarah, Gary and Sarah are visiting us.
And did we have a grill before that?
I don't know, like when I say grill for British people,
I mean a barbecue, like an outdoor mechanic
by which you can grill it.
- We did, but it wasn't, it had broken, I think.
- It had broken, so we were replacing it.
And Gary had a Weber grill.
I didn't know anything about grills.
But anyway, Weber grills tend to be expensive.
Like they're like twice the price of a cheap one
that you could just buy at Home Depot.
- Sure. - For those.
They're not horribly expensive.
- No, they're not horribly expensive.
- They can get there. - Yeah.
But anyways, like, bro, you need to get this, you need to get this, you need to get this.
And as a lifelong, well, we tried to be lifelong purchasers of quality goods over cheap goods.
We bought that and it's done us a great job.
Well, we tend to save up and get the one that's going to last longer rather than.
How often would you say we use our grill per week?
Four or five times a week?
Yeah, I was going to say three or four times a week.
We use it a lot.
- Yeah.
- And it came with warranty,
like the top part of it is like 25 year warranty
and the burners of this and the burners of that.
Anyway, as you tend to use a grill,
it parts of it wear out.

- As you are, yeah.
- And they have these flavorizer bars
and they'd worn out and so I went to
just to order replacement things.
And in the process of cleaning,
cleaning the grill,
I discovered that our burners,
the inside the kind of tubes that dispersed the gas
and get lit up, had kind of rusted through.
And what do you know?
They have a 10 year warranty on them that they won't do that.
So I love this.
I was, where was I going somewhere?
Before I went somewhere, I emailed Weber and just said,
here's my serial number, here's a photo of this.
And did I go to a meeting or did I?
- We were somewhere together.
- I just remember after words.
- Sending it and going to do the thing I had to do.
And then when I came back, open up my email,
they were like, absolutely.
We've just FedExed out new ones.
So they're here now.
- So they're here.
And I was just thinking about like,
it was just a little reminder.
Abby was like, what did you get in the mail?
And I was telling her,
try and steal this value in my daughter.
Don't buy cheap things.
- Yeah.
- Immediately, delay it and buy.
- The thing you actually want.
- Good things.
Yeah, that will last.
- Yeah.
So does that mean you're gonna do like man stuff
this afternoon and replace that?
- 'Cause we're not using a grill tonight.
I will replace them the next time I need to use a grill.
Okay.

- We'll talk about the boy next week.
- Okay.
- All right, 'cause I'm excited.
I'll probably take photos and whatnot.
- Yeah.
- Anything else happened this week?
- Um, I don't think so.
- All right.
Well, then let's talk about our main topic.
- Yes.
- We're talking this week about five things.
I challenge you, I was like, come up with five things
that you've learned about marriage that surprised you.
five things you didn't know or five things you've learned.
Yeah.
And you've got five.
Take it away.
I you think I have all five.
I hope you have all five.
Oh, do you have five different ones?
I can.
I can't find.
But I thought I told them.
I'll just say I have five.
Gosh, you didn't even want to jump in there.
Oh, wait.
I completely forgot to talk about something.
OK.
So my first one is I'm just kidding.
For God.
I meant to mention that we are, or I am, launching the Boundaries Academy.
Yeah.
And so if you remember, but if you remember, in the summer, I did the Boundaries Summer School.
Yeah.
I had so much fun doing the Boundaries Summer School.
I ran two schools around the Boundaries Summer School and I ran the Boundaries Masterclass.
Yes.
And I plan on running them both again in the fall.
Yes.
And in fact, this episode comes out on Monday, October 18th.
Looking at Chris, is that right?
Monday, October 18th.
And as you're listening to this, registration just opened for the Boundaries Academy.
Alan, what's the Boundaries Academy?
It's basically the summer school that we're doing in Fall.
Wait a minute, Alan, what's the Boundaries Academy?
It's the Boundaries Summer School that we're doing in Fall.
Oh, okay.
The Boundaries Fall School didn't sound good.
And so I just thought, I'm going to call out the Boundaries Academy.
If you're interested in learning about Boundaries,
in learning about how to get your voice back,
in learning how to actually upgrade the quality of the relationships you live,
I'm thinking like Thanksgiving is coming.
Yeah, I was thinking it was pretty good timing for Thanksgiving and Christmas is coming out.
Because we all think we're doing great until you spend time with your family again.
Right.
If you find that in some relationships, you don't feel like there's equal power or that you get to speak or that you, you know, your boundaries are being encroached upon.
Or you revert back to something that you weren't before.
Absolutely.
We would love you to enroll in the boundaries.
What are we calling it?
Academy.
Boundary Academy. Basically what will happen is during the week you'll watch videos. We've got the
boundaries course already prepared. You'll watch some videos. You'll meet with me on Saturday morning,
Saturday mornings my time. If you go to the website, I'll give you all the times for around the world.
You'll meet with me for five weeks and it's just a time for us to process. What did you learn that
week? You get to ask questions. You get to bring your real-time situations. One of the things I love
so much about the Boundary Summer School is brave students would say like this is literally what's
what's going on in my life right now.
I was listening to the boundaries teaching and I'm thinking,
how do it like, is this my issue, is it their issue?
How do I apply what I learned?
And whether you're bringing something
or you're just listening to somebody else
bring their thing, there's real connection, real value
and I absolutely love doing it.
We've got great feedback,
which is why we're running it again.
So registration is open.
It stays open until Wednesday the 27th,
which is about 10 days from now.
It all depends on when you're listening to it.

Stay focused, Jones.
The Boundaries Masterclass.
 - And then you'd see a whale
or dolphin jumping out?
- Yeah, so I just realized I'm like staring at it like,
"Oh my God."
"Are you with me?"
- Yeah, no, I'm ready.
Boundaries Masterclass is for people who want to go really deep into their story.
And so it's like a blend of all the feelings teaching that we did last year, a blend of the
boundaries teaching, all processed in a group environment. I am limiting the class size to only
five people. And you're going to discover your story, you're going to discover
part of how your boundaries are the way they are, you're going to be doing a lot of processing during the week.
You'll still watch the boundaries course, you'll watch some of the stuff that we talk about feelings.
And then again, on Saturdays, we'll meet together and we'll process that in a group format.
It is very thorough.
It is very intense.
And it is one of my favorite things to do to be with people and guide them through that process.
What are you laughing?
because do you remember earlier in the week you said something about you
referenced something about how the Scottish used how for why? Yes. You just
did it. I did. You were like, you're going to discover how you're I can't
remember but I would have phrased it why your boundaries are the way they are
and you said you're going to discover how your boundaries are the way they
are. My Scottishism is coming back. There you go. Well, we can pray. So if you
would like to learn more about the Boundaries Academy or the Boundaries
summer school, you've not got much time to sign up for it.
It starts October 30th.
That is a Saturday.
So like by the time you're listening, you've only got two weeks to get in, get started.
It's going to be tremendous fun.
I hope you can join us.
Go to Alan and ag.com/boundrace to learn all about the details for both those schools.
So good.
Okay.
I'm glad I remembered that.
All right.
Yeah, that was good.
Okay.
Back to five things you've learned about being married to Moa.
I was trying to think of some pithy.

So then I stopped and clarified and nobody laughed.
And I was like, maybe I've just lost my audience.

I've learned that my husband will forget things and then just, you know,
but that's not actually true.
Can you've been married twice?
So maybe you should have 10 things you've learned.
10 things you've learned.
Five things from the first one from the first marriage.
All right. Well, take us away.
What do you have?
Number one.
Well, my first one is like we've had a huge value on the love languages,
you know, like learning to speak each other's love languages and five
love languages.
Yes.
What are they?
So they are physical touch.
Yes.
Words of affirmation, gifts, quality time and acts of service.
Yes.
Thank you.
Well done, Bravo.
Huge value on those things.
So my contemplation this morning was like, oh, those change in different seasons of marriage.
But then as I think about it, I don't think yours have. There's still physical touch and
words of affirmation.
Yeah, I like to think about them as quality touch in physical time.
Inventive two new categories. I think I stole that from Josh Borisons.
Yeah.
Mine, you don't think mine have changed?
Not really.
Oh, come now. I protest.
Oh, okay. Yeah. No. Okay. That's fine. You're bigger on quality time now than you used to be.
You're on my Twitter. My quality. My name is.
Sometimes I'm like, get out of the room.
Historically, I would not have needed quality time with you at all. And I thought that
everything wrong. Yeah, that I needed it. You were so clingy. Yeah. And now I would say
that my need for quality time is higher. Most people that know me would say it was clingy.
I think I was normal and you were just like, I have no emotional needs.
Possibly.
Possibly.
But now I would say my need for quality time is higher than my past.
You're in a sure quality time.
Yeah, for sure.
Like even this morning, like we had a rough night of sleep last night.
So you go up at three, welcoming up at four.
I've been awake since four.
I didn't wake up on purpose.
No, I just want to be clear.
Like it's not like I went.
I'm awake.
So you should be too.
You were trying to draw blood from me.
start to just walk up and I was like, what are you doing?
Why?
Why?

So we've been awake since four.
You put the kids to bed.
Ironically, it's supposed to be our day off that didn't really
happen for a whole host of other reasons.
But you get the kids on the bus and send them to school.
And then you say to me, babe, I'm so trash.
I'm going to go back and get a couple hours of sleep.
Probably an hour into you having sleep, which now is only
baby 8.30 AM.
Well, I went to bed at 8.30.
Oh, you went to bed at 30.
So it's like 930.
Yeah.
I'm like, who wonder if it's too early for me to wake her up?
Like, I'm sorry.
I wonder what she's thinking.
What if she needs an-- I just want to go in.
Maybe I could just give her hug.
Oh, my gosh.
And I don't want to wake her up.
I'm like, jonesing for some jonesing.
Yeah.
Right?
You're so cute.
Oh, no, it's true.
And I never used to be like that.
Like, I could go for long trips.
Like, I remember going to Japan for how long did I go to Japan?
Is this going to be good to hear from my heart?
I didn't miss you at all.
I didn't know.
I didn't and I had nothing to do with you.

You lied to me via text messages.
I never told you that I missed you.
You did.
Did I ask you some?
You're good like that.
You're going to meet me.
Yeah.
Yeah.
Anyway, sorry.
So, yes.
How have yours changed?
Well, I realized probably I would say acts of service
were things that I didn't even--
I had no value on before.
But once you're a mom and you're trying to work full time
and those hit me more than they hit my,
oh my gosh, I feel loved,
more than spending quality time or whatever.
Like I feel like, I feel like in my need to be alone,
the busier I get that my need to be alone has grown.
And so probably my quality time has deadened somewhat.
You know.
- You need quality alone time.
- And equality alone time,
which sometimes is hard to find in our house
'cause there's four other people who want to mummy,
mummy, mummy, and then there's you, darling.
(laughs)
Let me just lie next to you and watch this video.
Please don't.
I don't want to secondhand hear your video.
I don't care about that person.
And their nasally voice is driving me insane.
But I just want to be with you.
Great.
Lucky me.
Let me put in my earphones.
Continue.
Continue.
What else?
I would say, yeah, mostly the.
Where's your gift?
Because gifts used to be your number one.
Yes.
And quality time close second.
Well, here's the thing.
I think I mean, I still love.
Well thought out gifts.
But really, you're going to love the back
tattoo of order to your 50th.
This is great.
There's really not like a lot of stuff that I'm like,
because I'm not a huge shopper.
I'm not, you know, there's not a huge
There's amount of things where I'm like,
oh, I don't have that and I really want it.
Like probably for the most part,
if I really want it, I have it.
Does that make sense?
- It's a weird stage of life to get to.
- I know.
And so like, I mean, like you're saying,
hey, you're turning 50 in a few weeks at what two months?
Let's not, no, I guess it's not even two months.
It's like a month.
And what do you want?
And I'm literally like, I don't know.
Like, you know, I have to really think about things.
So I know I have to start my list on my phone
'cause otherwise I won't remember the little things
I think of.
So gifts isn't so much of a thing anymore.
- My observation as your physical touch has changed.
- Yes, but I think that changed because I determined
to try and be thankful for the fact that you liked it.
Like you were so high physical touch
and I would just get frustrated like,
just quit touching me all the time.
Like every time you walk by you don't have to touch me.
- No idea.
It's in the Bible.
But again, I think moms would relate to this.

It's not, it was lower price.
Right.
And to a certain level, you're like, "Yes, I expect that."
But I just want to go to the bathroom by myself.
You know what I mean?
But then add in that your husband is physically affectionate at any moment that you happen
to be within reach.
Yeah.
But something switched and it felt like overnight where you were not just no longer bothered by that,
but also a welcome recipient of that, but also an avid doer of physical touch.
Like so you will frequently be physically touching me, which has not been a norm.
No. Well, I mean, I guess it's really been the last couple of years.
Yes, it has.
I feel like I hit the jackpot.
- Yeah, but I think that all started from that
thankfulness thing where I felt like the Lord was like,
why don't you be thankful for things
instead of being frustrated?
I think I also was looking around at the state
of some friends of mine,
marriages where their husbands were not physically
affectionate at all and feeling like,
"Oh, I'm really sad for you."
And they were sad about it.
And then I'm like, "Oh my gosh, what am I doing?"
So yeah, I just decided to start being thankful
and then I was able to appreciate.

- Yeah, essentially, yeah.
(laughs)
- That's a great one, babe.
So you have learned that your love language
has changed over time.
- Yes.
Yeah.
- Yeah.
- All right, what's your number two?
- Number two, I think, I was thinking back
to like the beginning of our marriage.
And I think one of the things that was helpful
to understand was that our normals were very different
And that doesn't mean that you're broken.
- I had that on my list too.
And we haven't swapped notes.
I don't know if you're not.
So you were noticing our normals were different.
- Yeah.
- And what did you--
- Well, to begin with, I was like,
your normals are different and my normals are right,
you know, or they make the most sense to me.
And so you're broken or a need of fixing
or education on some of them.
- Describe what a normal is to people
who are not familiar with their terminology.
- Well, like, what, you don't,
I think you don't realize what your normals are until little circumstances.
So for example, we had a dessert normal, right?
So your dessert normal was your family ate dessert with every meal.
Every single meal, even breakfast, you'd have like toast with jam.
Where my normal growing up was we had dessert if it was somebody's birthday.
In our house.
So this is why Canada has such a low standard of living.
You think so?
No, I don't.
They might have a lower diabetes as well.
So yeah, I realized like when we first got married, I think we'd been married about two
weeks and you were sitting at the island and you finish your dinner and you were like,
did you make me dessert?
And I was like, well, I mean, why would it make you dessert?

And I'd be like, what does February have to do with dessert?
I'm like, your birthday's in June, mine's in November.

- Yeah.
- And you were like, well, like, so you don't love me?
You know, you're being all cheeky about it.
And I was just like, what on earth are you talking about?
Why would you have dessert today?
And it took me a while to figure out,
oh, you actually think that you need to have dessert
at every meal.
And I would realize we would go out for dinner
and you would check the dessert menu first to decide.
I can't a good Christian.

And I was like, again, like in my head,
I'm like, not your birthday.
You're clearly not ordering dessert.
- Right.
- So that's what I mean by a normal.
- And the funny thing about a normal
is you don't know it exists until it's contradicted.
And so imagine how many other,
if that's just dessert, which is humorous,
imagine how many other of those normals exist,
which you don't know isn't normal to your spouse
till you start living with.
So your normals might be that everybody yells and is loud in the family.
Your normal might be that nobody ever shows conflict in your family.
You know, so they can be any range of whatever.
What time is appropriate time and go to bed?
Right.
And you don't realize what they are until somebody hits up against it and you
have a reaction because they've just confronted your normal.
So we'll be talking about some of that on the boundaries courses.
Oh, okay.
Those are real things.
Yeah.
Because then, you know, I have a normal about what grandparents involvement is with children,
which might be different from my grandparents' view of how much access it should have to our
children. And you don't know that there until conflict happened.
Yeah, for sure.
Are there any normals, aside from dessert that you want to talk about that have become apparent
to you? Or here's one, can you think of normals that have shifted for you from being married to me,
Or normals that have shifted from me being married to you.
Well, let me think about that.
I eat more dessert than I ever have in my whole life.
Thanks a lot.
Thankfully have good teeth.
You do.
Yeah, you really do.
I really do.
Yeah, I do not.
I'm always praying that kids end up with my teeth so they don't have cavities.
Gosh, I didn't think about that.

Can you think of?
What am I trying to think of normals that have shifted?
Normals that have shifted for us.
I noticed the normals that have shifted for us when we go be with my family.
And I noticed things that they do that I've long since stopped doing that.
I didn't know I'd stop doing it.
I was like, oh, that's like that's something.

Into that, you know, goes around her life that's normal for her.
That was probably normal for you from your childhood.
That is so foreign to me.
And that she eats her dinner at 11 o'clock at night and things like that.
That's one of many. Yeah, she didn't do that when I was a kid. No, you have to feed the kids before you put them to bed.
It's like a thing in Canada. Yeah, yeah, but you don't have dessert. So I'm not sure which one I know what's worse, right?
So you can't think of any normals have changed because of course we've created new normal. Yeah, I mean, it's hard to think of on the fly.
I'm sure there have because we've now made our
Our family normal. It's like one of our family normals is every dinner
We sit down with the kids. We have you know, no devices duh, but and we do highs lows and unexpected
Yeah
And we started doing that because of COVID because of all getting locked in the house today and trying to
You know choosing what you know, what can we be thankful for what's our high today?
And now we've just continued doing it and it's our thing like if we don't do it the kids are like yeah
- So it's our family normal.
- Did you say grace as a child growing up?
I would say grace at every single meal, no matter what.
And I realized we never say grace as a family.
- Yeah.
- I don't know, it's like pastors walking right here,
but we had a family grace.
Thank you Lord Jesus for this nice food, Amen.
We would just all say it, Rol.
We'd all sit down and in unison, we would all just say,
"Thank you Lord Jesus for this nice food, Amen."
- So when we were at the cottage, we would say grace
because grandpa always said grace,
nobody touched their food, nothing got served
until we had all stood in a circle, held hands,
and said, "Grace."
- Can't wait to get scarier by the moment.
- I know, right?
And then if everybody was particularly,
all the grandkids were particularly like jumpy,
like couldn't wait to,
then he would sometimes elongate it
'cause he just thought it was really funny.
- Of course he's a grandpa.
- Yeah, yeah.
- He's taking dad jokes on the next level.
- Yeah.
- We say Grace at big events.
- Yes, he would also,
he would also always finish with saying,
"Bless this food to our use in us and your service."
In Jesus' name, amen.
you'll always finish by saying it that way.
But anyway.
- Whatever it was.
- My number three was I was thinking about,
and I think about this often,
but it shifted something for me probably 10 years ago
when I heard Chip say this comment about,
hey, make your marriage about out serving one another.
And I realized in many ways my marriage was about
keeping a tally of what I was doing,
what and what you were not doing.
- For our first healing week was all about, wasn't it?
- Yes, it's all about that.
And then add to that, I'm a very high shaper
who views all of life in 15 minute increments
called a unit of time.
So I would also assess the different,
like if I did two tasks and you did two tasks,
but yours was like putting out the garbage
and checking the mail for example,
I'm trying to think of something.
And mine was like cooking dinner.
I'm like, I spent six units
and you didn't even spend one full unit.
And so no, you have not contributed.
- A moment here.
That whole theory was never explained.
Like that was just a assumed knowledge.
- It's in my head.
- It was in your head.
It was very well thought out to you.
I did not know anything about this at all.
So I didn't know there was a,
you know, for me there was a division of labor
but for you there was an inequality
of time spent doing that labor.
- Yes.
Yeah.
The other problem was most of my tasks would revolve on me being at computer, but also
my unwinding time was being on a computer.
So for your casual observation of Allen's computer use, you can chart your unit meter,
which would usually end in distress.
Yes.
Yeah.
Yeah.
But I digress, continue.
Yeah.
So anyway, I realized like, oh, I'm not making this about trying to out serve you.
I'm making this about fairness and it's not working for me.
Like I'm spending most of the time frustrated
because also it's impossible.
Thanks, darling.
It's impossible to assess what the other person is doing.
Like any given day, I only actually know what I did
and what I got done and I can guess at best
what you have been doing on your computer.
If I were to go and ask you, I would probably find
you did more stuff than I am aware of.
So I realized there's no fair way to assess it,
but if I'm not trying to assess it,
if I'm making it just about, can I out-serve you
then actually I can move into thankfulness.
And that makes me, for me it just distressed me.
Like, oh, actually I'm gonna change the goalposts.
- I can't remember when that changed,
but I can absolutely remember prior to that change
and post that change.
- Yeah.
Like I don't remember what time in our marriage happened,
but I remember, oh, wow, something shifted.
- Yeah.
And I think I also end up like,
insert in very busy and very stressful seasons.
That's my easiest thing to fall back into is like,
you're not doing your share.
But the Lord is so good to be like,
hey, remember we're not, that's not how we do this.
So, yeah.
- That's killer babe.
- Yeah.
- That's gold right there, part of people.
Yeah.
Number four.
Number four, I think for us, I think the biggest transformation I've seen in you and
probably us as individuals has been all the feelings work.
So number four would be investing in your marriage because it costs something to go
and do courses and do counseling and be vulnerable with other people and invite them in and
and all that kind of stuff, but I think it's so worth it.
Even if you have a great marriage,
I've never thought we have a bad marriage.
I've always thought we have a great marriage.
And in my opinion, it's just getting better and better
and better.
And particularly since doing all the feelings work,
like I would say, I didn't think it was bad before,
but it just sort of exploded into wonder.
- Yes.
So yeah, number four would be invest in your marriage
and keep investing even if it feels like things are really good.
You know, I think you can always be inviting input and growing.
I think one of the kindest gifts you gave me in the season
where I started doing therapy.
So neither of us in our married life had done therapy.
We had done stuff before we were married.
But I said, you know, I want to go see a therapist.
I think I'm struggling with grief.
And yes, it was a cost financially,
but it was more of a cost inconveniently
because at the time I was doing it Tuesdays,
Mondays and Tuesdays were just the longest days
at the school.
And I remember how dead tired we were on Tuesdays.
Do you remember that just like exhausted?
And so now I'm adding, I'm driving half an hour
north of where we are for me to go do that.
Sometimes you would then pick up the kids,
drive all the way north to meet me
to pick me up from counseling,
and then we'd all go out as a family.
Like it wasn't an easy addition.
Like me going to do counseling cost our family self-taught.
- Oh, it was super inconvenient.
- Super inconvenient.

- Last brutal.
- Yeah.
- And yet, and so anyway, as I look back,
that was extremely expensive in terms of our energy levels,
schedule, the whole family had to pivot around me doing that.
And I never heard you complain once about that.
And even initially, you kind of like were deeply, you weren't suspicious of me of
me doing the work.
You were suspicious of the work.
Yeah.
You were suspicious of what I was learning.
You were suspicious enough, curious enough to come and do some of the training.
Yeah.
But it wasn't like, oh, I've done this.
I know this would be a huge benefit for you.
It was really faith that you were like, OK, I think you want to do this.
And I just remember the gift you gave me that you never complained once,
even though it cost you enormously.
And I think about the, the dividends it paid off, the obvious ones, like, you
know, I got better communicating with my own heart.
So I was better communicating with yours and the kids.
But also the softer aspects.
Like I was driving home the other day.
I don't know if you were in the car and I've got the kids in the back of the car
and MJ, where it's at red light, MJ is like, Dad, do you see us?
Do you still see a therapist?
I said, "No, I don't know honey.
"What were you thinking that made you think about that?"
He was just like, "I just think it was so good
"that you had somebody to speak to about feelings.
"And you're somebody I speak to about my feelings."
I was like, "Yeah, it's really important."
And he said, "You know what made me think about that
"is I really miss Nana."
- Yeah, I was.
- Oh, you were in a car?
- It's just such a tender moment that my kids got the gift
of seeing, talk about normals, that it is normal
for your parents to go to therapy
and it doesn't mean something's wrong.
So the gift that we've given our kids aside
from both of us having done work in therapy
and we're better people for it,
means that it's normalized.
It's not weird for our kids to think about going to therapy
or that your parents go to therapy.
- Yeah.
- Number five?
You're crushing it by the way.
For somebody who said, "Oh, I'm not sure
"I've got five things."
You're really crushing it.
- I think number five is probably, for me,
is letting each other be passionate
of the things that you're passionate about.
- I love that.
- So, thanks.
I think that's something that we didn't necessarily have
at the beginning, but I think as we've grown,
I'm not saying we did a horrible job,
I just don't have any memory of--
- Well, tell me what you mean, first of all.
- Well, I mean, you're passionate about video games.
- Yes.
- To begin with, I felt super threatened by that
because video games represented something very negative
for me because of my past with my siblings
playing video games and all that kind of stuff.
I mean, I hadn't really played them.
- Your words, you'll lose me as I came in.
- I mean, for me, I was like, "Ooh!"
And I just felt the Lord challenge me,
"Hey, are you gonna trust me in this?
"Are you gonna listen to fear?
"Are you gonna try and control him?
"These are your options kind of thing."
But yeah, so I was just more thinking about that.
like we've been able to let each other play to our strengths
and also therefore have weaknesses
and be comfortable with that.
- I think it's so funny that you think
that that isn't something that's being present.
And here's why I have never, ever in the history
of our marriage ever felt you limit me
or shame me for my interest ever.
So it's not like, oh, you were saying,
you know, I don't think we did a good job of this initially.
I was like, my whole experience of you,
you have really redefined what it means to be in relationship
because never once have you ever,
like all I've ever felt from you is,
like admittedly I'm fairly nerdy about certain things.
- Fairly nerdy.
- Right.
And it was never shamed.
- Oh my God, a scale of one to 10, 48.
- Here's a simple example.
We started traveling.
- Yeah, yeah.
- I knew nothing about airlines, airports,
hotel programs, I didn't know anything about any of those things.
And as soon as we start traveling, I guess the producer in me is just like,
if this is what we're going to do for a living,
we need to learn how this works so we can maximize it.

How can we sit in first class?
There's these things called airport lounges.
I want to these, like I want upgrades, blah, blah, blah.
And I don't know how many hours I devoted to insane levels of research.
Yes.
And I never felt punished, shamed, or ridiculed for doing any of those things.
Right.
And I would come to you with just excitement about,
like, hey, June, about this.
And you start line says, this and, oh, this and, you know,
I think we should send Denise Jordan a thank you for that.

And one of the things she's like,
hey, man are built to consume information
and just want to know things.

So I would learn to make fun of it.
Like, which is probably why I preempted this with, you know, I'm a little bit of a nerd.
Whereas I've never felt that from you.
I've never felt ridiculed for what I'm good at or shamed it for what I'm bad at.
Cause there's tons of stuff I'm bad at.
Like I'm like, you are like what?
We are in the basement right now.
And as I look over there, there is your workshop with a, I don't even know the name of a saw band saw table saw.
Miter saw, myter saw set up.
There's a work table like every time I bring a tradesman down to the basement, they kind of like nod and approval at all my stuff.
And I have to tell them, oh, none of that stuff, it's all my wife.
And they think I'm making a joke.
Right.
But like, I've never been good at the things that you would think men should
automatically be good at putting a shelf, changing light bulbs, we doing
wearing, you've done all of that.
Right.
And you've never shamed me for it.
But you never shamed me for it either.

So I would, but that, so that illustrates my point perfectly.
I get to be me.
Yes, but your point was like that wasn't present early in our marriage.
And that's a bit of the through me.
Oh, here's the other funny one is you always want to marry an outdoors athletic person.
That's true.
Yeah.
And I've never been an outdoors athletic person.
That's true.
And again, you never complained about that.
Never like, oh, could you just try never manipulate never even asked?
No, no, but I mean, again, like, not that I necessarily recommend making a list of what you want in your future spouse.
I mean, we did.
We did. Yes. But I felt like the Lord invited me to do that. But but also you weren't outdoorsy,
but you were like 98% of everything else. Do you know what I mean? So body of Greek God.
Right. All that kind of stuff.  I need to buy in on the plan. Like we're going to have short-term inconvenience
instead of flying home from Frankfurt to Toronto. We're going to fly home from Frankfurt via
Paris via London to Ottawa and then and then we'll get the such such and such. And the reason
we're doing that is we've got fly flight segments instead of just two flights. But it does mean
we're never sleeping again. Right. And we'll also have to still work this hotel. But don't
worry because I've offset those costs here and you know, the end of the year.
And you were just like, yeah, I totally go for it.
Yeah.
Yeah.
Well, because you were so cute about it.

Um, yeah, I mean, you're maybe you're right.
Maybe it was, uh, I just couldn't think of examples of like, you know, early in
marriage, whether I was whether we were doing that well or not.
Does that make sense?
So well, one of the things that was that we've discovered, talking about normals
is my level of criticism of you was invisible to me.
- Yes. - And very obvious to you.
- Yes. - So like, obviously,
I don't want to be critical of my wife.
And yeah, historically, I've been very critical of you.
And for me, it's like, well, I'm not being critical.
You're just being oversensitive.
- Yes.
- Where does that fit into this thing?
- Into this thing, how?

And I'm wondering if my criticism showed up in,
Here's all the ways you're failing as a wife.
- Yes, probably.
- I excited the answer, but can you remember where those were
and how that got fixed, providing a prefix?
- I think mostly it got fixed by you all of a sudden
feeling your feelings and, you know,
because a lot of criticism before that was about,
would be about any emotional response,
which I'm not a particularly, I don't think,
emotional person, like in terms of like,
I'm not always gushing with emotion.
I am an emotional person, but it would usually be if it was an emotional response that couldn't
be registered as logical that we would end up with.
Well, what it was was me not being willing to feel shame.
Yes.
Having limitations.
Well, or any emotion, really.
Yes.
Yeah.
Yes.
But certainly, like, if you're going to do something that feels like shame to me, I have to get
that away as quickly as possible.

And I remember examples of that.
Yeah.
That kind of been fun.
No, it really wasn't.
OK.
Um, what was number five?
It's not.
I mean, but I was just going to say like that's not a let's go back to number four
where you get counseling.
Uh, no, but I mean, that's not a prevalent thing for us anymore.
I mean, I think we have moments where particularly for both really tired.
You and we end up in old patterns and have to go, wait, what, what happened?
Why are we, you know, being unkind to one another?
And so yeah, maybe knocked out of the park.
Thank you.
Thank you.
Okay.
Do you want to hear my five?
Yes.
There was a lot of similarities between mine and yours.
Right.
As there should be probably.
Number one, the thing that I didn't know,
but I've learned about marriage, is that marriage gets better.
It does.
And I don't think it gets better by default.
It's just ours has gotten better.
And I would agree with what you were saying that,
and no point do I think we've had a bad marriage.
Right.
And yet, we absolutely have a better marriage today
than we have had in previous seasons.
Sure.
It was certainly more challenging at the beginning,
even though it still felt great.
- But I don't even remember it being challenging.
I remember being there challenging moments,
but I don't remember the overall feel of marriage being hard.
- No, it wasn't.
The overall feel wasn't that.
Just I think when I think about the last,
particularly the last three or four years,
particularly after the feelings work, realizing,
oh, there's a lot less managing that happens now,
if that makes sense.
- Yeah, I think I was just with a friend the other day
and I would catch on with him.

He said, you know marriage is hard.
And I don't think I've ever gone through a season
where I would need to describe marriage is hard.
- Okay.
- I think these days have been hard.
- Sure, sure.

But I can count them on like one hand.
- Right.
- In how many years have we been married?
17?
- Nearly 17.
- Right.
So I'm amazed that our marriage keeps getting better
and grateful for that.
- Yeah, I'm grateful too.
Number two, it's very similar to the thing
that you were saying about normals.
Like you don't know that you have normals until you do.
And we've kind of talked a lot about that,
but that whole dynamic for me of,
I'm embarrassed by some of the normals I didn't know I had.
- Like what?
- Surrounding what is women's jobs
and what are men's jobs and marriages.
Like I think if somebody wrote them out on paper
and said, do you believe this?
I would say no, but then I really did.
- Yeah, you really did.
That was scary to me that these things are ingrained
and you don't know that you have them.
- Yeah.
- We're going faster 'cause I think
we've explored some of these topics.
- What was number three?
- I think number three.
Number three pivoted slightly on what you were talking
about earlier.
I was thinking about like how we grow better
together than we do separately.
- Yeah, for sure.
- Well, what I mean by that is I watch
Maricouples, where maybe the husband grows in an area spiritually, physically,
relationally, communication, and the wife doesn't, or maybe the wife grows in a
different area, and it benefits them as individuals, but doesn't benefit their
marriage. Yes. So one of the examples related to our own life is I went and did
counseling, therapy, group work, feelings work. And I did that and you didn't.
Yes. And our marriage benefited from me becoming a better communicator or, you know, having
access to their feelings or even having understanding of dynamics that were previously invisible to me.
Right. Undoubtedly that was helpful. Yes. But I think because your curiosity got peaked
and you went on your own journey, you didn't do the same things as me. You didn't do in the same
order as me. Yeah. But you started allowing your curiosity to go, what is, what is he talking about?
And as you did that journey and as I was on my journey,
together that benefit does really, really well.
- Yeah.
- Like I could see how the work of me just doing therapy
on my own would be beneficial,
but could also introduce new problems.
- Yeah, well, I think for me watching it,
I was like, this is obviously changing you.
It's having a huge impact.
And you're using language that I really don't understand.
So if I'm, to begin with, I was sort of like,
if I'm going to support you and understand your journey
this, I want to go get some training and whatever. And not really realizing how disconnected I was
myself from my own emotions until I started exploring that. But think how kind and altruistic it was.
What do you mean? Well, what I mean is you were like, I don't understand what he's saying in order
to be a supporter of spouse. I want to learn why he's excited for him. Yes. And God was like, surprise.
Guess what? It's for you. But it was beautiful. Yeah. Oh, thank you.
but it really has.
And now I think it's so funny now the tables returned
because now you're in therapy and I'm not.
- Yes.
- Like I'm trying to find a therapist
and I've emailed four of them and I guess 2021
is a busy season.
- Yeah.
- I understand why.
But I'm watching you in therapy
and I'm watching you reap the benefits
and it's really provoked me like, man,
I really miss having that.
- Yeah.
- Like I've not been in therapy for over a year and a bit.
- Yeah.
- And I'm, man, I really miss that.
- Yeah.
- And yeah, so anyway,
that whole thing of growing together, super, super important.
- Super important.
- It's kind of sad, like as pastors spiritually,
sometimes you realize that one member spiritually
is ahead of the other.
And like, you can kind of,
I haven't really seen that successfully navigate
'cause it usually turns to control for the good reasons.
- For the good reasons.
- Well, we think it's good reasons.
Imagine how horrible it would be for me
If I try to course you into getting in touch with your heart,
for good reasons, I know the fruit of this,
but it would be horrible for you having to do something
because you feel like I want you to do something.
- Right, okay.
I was like, what are good reasons to control each other?
- Well, that's not good reasons.
- Yeah, yeah.
- Okay. - What's number four?
- Number four would be,
this is the thing that I've learned
that I didn't know I needed to learn.
It's gonna sound so elementary
and I'm embarrassed I'm saying this,
but you know, healthy shame embracing your limitations is,
The revelation I got when we were fighting one of the times
we were at Disney.

- I know exactly the moment you're talking about.
- But do you remember what we were fighting about?
- Uh...
Yes.
- Oh, you do?
Okay.
Love keeps no record of wrongs,
but I guess one of us is more spiritual than the other.
(laughing)
But I remember being a Pete crescendo
and I remember the Holy Spirit saying to me,
Ellen, she's the only other eyewitness to this event.
And I remember it just the penny dropping like,
"This woman is so for me."
Like, I've got 14 years, I don't know how long ago it was.
I've got years, decades under my belt of being with this woman
who loves me, is devoted to me, is only wanting my good,
and she's telling me something I can't hear.
Like, seriously, I don't believe what she's saying.
Why would she lie to me?
She's not petty, she's not trying to win points,
She's not trying to win the argument.
And when the Holy Spirit was like,
she's the only other eyewitness, like listen to her.
And I just realized in that moment,
like the clarity of that moment that God gave me you
for my good and I am served well by listening
to what you have to say.
And I think previously I would listen to you
if it agreed with the way I was going already,
but actually listening to you and allowing myself
to be persuaded by you has been so helpful.
I remember that you shifted right in the middle of our
one right in the middle of the fight.
You literally you were sitting on the bed at Disney in the in the cars hotel.
Hotel was our last night.
Yeah.
And you shifted and all of a sudden we're treating what I was saying seriously
and with kindness because I remember I started bawling because I was like, this
isn't I remember you were suspicious.
Yeah.
Because I just said, baby, you're right.
Let.
I'm not listening to you.
Tell me what you have to say.
and you were like, what are you doing?
Like, like, it was such a radical departure from this.
My body language shifted, my tone of voice.
But that lesson didn't just serve me well in that moment,
it served me well in the years subsequent to that.
That listening to you is really good.
I'm surprised you're not capitalizing on this.
- Oh, I'll capitalize on it later.
(laughs)
- Which brings me to number five.
- Yeah, what's number five?
Well, our sex life is not what I thought it would be.
Yes.
Well, I was hoping you might find me on that.
Well, I mean, because you've said that before.
Yeah.
And all I mean by that is like it's sexuality is a single Christian is really,
really weird, right?
Cause nobody really talks about it.
So you're just left to figure it all out yourself.
So like, and imagine what's everything.
I'm growing up, like I'm staying away from pornography.
I've seen Hollywood movies and I'm trying to get an accurate,
I mean, just imagine how preposterous this is.
As a single man, I'm trying to prepare myself for a married life that includes sex.
Nobody's preparing me for it.

So all I've got are, you know, movies and TV versions of my childhood, not childhood,
but teenage fantasies.
Right.
Right.

No concept that actually sex is going to be with, of course,
this concept is going to be with another person.
But thinking about their wishes, their needs, their desires, their
interests, the things that please them, displease them.
No concept of that.
I thought, especially when we were getting married, you know, once you get married,
like you'll be as horny as I am, we'll, our sex drives will match one for one.
It will be awesome.

Every day.
Yeah.
And it's still a me.
I feel like I have to apologize to my younger self when you're like, Hey, babe, do you want
to have sex?
And I'm just like, babe, I'm exhausted.

Like never did that even pop into my head that I would ever turn down sex or be because
I'm tired.
Like I feel like 20 year old down is like, you know, yelling from the path.
You know, like, what are you doing?
I mean, that's just one aspect of it, just thinking like, you know, like, I never factored
in that you would be too tired to have sex.
Never, never in a million years.
No, there's ways around that.
Yes.
Afternoons sex, baby.

It's true.
It's true.
Or, you know, lunchtime because we work at home sex.
No, but seriously, I was gonna say nitty gritty.
That's the wrong phrase to use.
But the specifics that accompany,
we've been married for 17 years.

And it isn't at all what I thought it would be like.
And in so many ways, it's so much better
than I thought it would, but it's in the realm
that I would never have considered.
It's a bit like, when you say people who don't have kids,
What do you think having kids is going to be like,
they're going to sketch out some realistic events
of having kids, but they're utterly unprepared
for what it's going to be like, as we were, as we are.
And I think, you know, in the same way that I said,
you know, I've never thought of our marriage being bad,
but it's all only gotten better.
I would say the same thing about our sex life.
- Yeah.
- I'll say this right now.
 - Oh yeah.
- Which is why we actually also created a video course
for people who are about to get married.
So if you're listening to this and you're about to get married, we actually have a soon-to-be-married
sex class.
Yeah.
Nobody's good at anything when you first start doing it.
The best example I've ever heard is Dr. Kevin Lehman, who says that when people come into
his office for help with sex, he gives the husband a violin, gives the wife a bow, and
says, "Can you just play that?"
And then when they look at him, they're like, "Well, it's not rocket science.
Everyone's seen somebody playing a violin."
You know, you know what to do, but why can't you make it good?
And so it's...
And I think the temptation that the enemy would love to lie to you is that the sex life you have right now is the sex life you'll have for the rest of your life.
And my response would be only if you want it to be that way.
Right.
But the way to have a different sex life requires huge amounts of vulnerability, transparency, and kindness.
Yeah.
Yeah, yeah.
So, see, it wasn't explicit, but we're talking about sex life.
And I think you want to say about our sex life?
No, I mean, I agree.
I think I think yeah, I think I don't ever remember thinking our sex life was bad.

Well, I don't know. I don't know that I spent time contemplating that really.
Maybe that's a man thing. I just really didn't.
I spent plenty of time contemplating.
I didn't.
Never know.
But I'm more than happy.
I'm thrilled with what our sex life looks like now, you know.
And I would say it's just gotten better and better and better.
Who knew what a Batman Cape could just add to our sex life?
For reals, yeah.
Not for reals.
No.
Not for reals.
Oh, the outtakes of this episode, they could be magnificent.
Yeah.
Well, there was your, I loved your five.
Thank you.
I liked yours too.
Yeah, thank you.
Right.
I don't have a list of those questions for you this week,
because I forgot to write it down.
Well, that's good, because I think we went pretty long with our five and five.
So if you have any questions that you'd like to send us so that we can answer listener questions, go to
Allen and AJ calm slash ask and if you would like the show notes from this episode
You can go to Allen and AJ calm slash 256
Whoop whoop and if you would like to become a member if you'd like to watch
The the podcast episodes if you'd like to receive discounts on say upcoming courses like the boundaries course or the boundaries masterclass
You can go to allen and ag.com/join and if you're a member you can actually you could put your eyes out of focus and see if you can see the
Whale jumping out of Alan's shirt
I mean these are the real advantages and don't forget our boundaries masterclass and the boundaries
Academy yeah registration is open as you're listening to this right now and closes Wednesday December 27th
Nope, not December Wednesday October 27th. I'll be fine. I'll be fine. It's gonna be good. All right. God bless you.


{{current.location}}
Background Image by {{creditAuthor}}
Powered by
Open Weather Map
Icons courtesy of
The Weather Icons
©2017
Z Nicholas Brown


{{ post.title }}
{{ post.excerpt }}
--- layout: home title: Code for Portland | A Code for America Brigade in Portland, Oregon ---
Code for Portland is a Code for America Brigade. We're uniting hackers with the city, and working on projects that make a difference in our communities.
Learn More »You can find us on Google Groups and on Freenode IRC #codeforportland. Come join in the discussion, or bring your own topics; it's all out in the open!
Join in »Get involved, or just come to see what we're up to. Coming to a Meetup is a great way to see what we're all about!
View details »{{ post.excerpt }}
{{ post.excerpt }}


|
| void | LogMsg (const char *szMsg,...) |
| | Log a message to X-Plane's Log.txt with sprintf-style parameters. More...
|
| |
| int | CBIntPrefsFunc (const char *, [[maybe_unused]] const char *item, int defaultVal) |
| |
| void | CBPlaneNotifier (XPMPPlaneID inPlaneID, XPMPPlaneNotification inNotification, void *) |
| |
| float | GetTimeFragment () |
| | Returns a number between 0.0 and 1.0, increasing over the course of 10 seconds, then restarting. More...
|
| |
| float | GetTimeUpDown () |
| | Returns a number between 0.0 and 1.0, going up and down over the course of 10 seconds. More...
|
| |
| double | deg2rad (const double deg) |
| | Convert from degree to radians. More...
|
| |
| char * | strScpy (char *dest, const char *src, size_t size) |
| | Save string copy. More...
|
| |
| positionTy | FindCenterPos (float dist) |
| | Finds a position 200m in front of the user's plane serving as the center for further operations. More...
|
| |
| void | CirclePos (positionTy &pos, float heading, float radius) |
| | Put the position on a circle around itself. More...
|
| |
| void | ConvLocalToWorld (const positionTy &pos, double &lat, double &lon, double &alt) |
| | Convert local position to world coordinates. More...
|
| |
| XPMPPlaneCallbackResult | SetPositionData (XPMPPlanePosition_t &data) |
| | Handles requests for plane's position data. More...
|
| |
| XPMPPlaneCallbackResult | SetSurfaceData (XPMPPlaneSurfaces_t &data) |
| | Handles requests for plane's surface data. More...
|
| |
| XPMPPlaneCallbackResult | SetRadarData (XPMPPlaneRadar_t &data) |
| | Handles requests for plane's radar data (doesn't actually change over time) More...
|
| |
| XPMPPlaneCallbackResult | SetInfoData (XPMPInfoTexts_t &data) |
| | Handles requests for plane's informational texts. More...
|
| |
| XPMPPlaneCallbackResult | CBPlaneData (XPMPPlaneID inPlane, XPMPPlaneDataType inDataType, void *ioData, void *) |
| | Callback function handed to XPMP2, will be called in every drawing frame to deliver plane position and configuration. More...
|
| |
| bool | ArePlanesCreated () |
| | Is any plane object created? More...
|
| |
| void | PlanesCreate () |
| | Create our 3 planes (if they don't exist already) More...
|
| |
| void | PlanesRemove () |
| | Remove all planes. More...
|
| |
| void | PlanesShowHide () |
| | Show/hide the planes (temporarily, without destroying the plane objects) More...
|
| |
| void | PlanesCycleModels () |
| | Cycle the CSL models of the 3 planes. More...
|
| |
| void | MenuUpdateCheckmarks () |
| |
| void | CPRequestAIAgain (void *) |
| | Callback function for the case that we might get AI access later. More...
|
| |
| void | CBMenu (void *, void *inItemRef) |
| | Callback function for menu. More...
|
| |
| PLUGIN_API int | XPluginStart (char *outName, char *outSig, char *outDesc) |
| |
| PLUGIN_API void | XPluginStop (void) |
| |
| PLUGIN_API int | XPluginEnable (void) |
| |
| PLUGIN_API void | XPluginDisable (void) |
| |
| PLUGIN_API void | XPluginReceiveMessage (XPLMPluginID, long inMsg, void *) |
| |
Example plugin demonstrating XPMP2 techniques.
This plugin creates 3 planes, one with each of the available ways of using the XPMP2 library. All planes move in a circle around a position 200m in front of the user's plane (even if the user plane moves).
- Subclassing XPMP2::Aircraft, which is the recommended way. This plane flies highest, 100m above the user plane.
- Subclassing the legacy class XPCAircraft. This plane flies in the middle, 50m above the user plane.
- Using direct C functions. This plane always rolls on the ground, no matter how high the user plane flies.
Three menu items are provided:
- "Toggle Planes" creates/removes the planes.
- "Toggle Visibility" shows/temporary hides the planes without destroying them.
- "Cycle Models" changes the CSL model used per plane. Also, it flips the visibility of labels in the map view...just for a change.
For the plugin to work properly some CSL models are necessary in some folders under Resources
(all folders under Resources
are scanned for xsb_aircraft.txt
file, so the actual structure underneath Resources
does not matter).
The directory structure would look as follows:
XPMP2-Sample/
lin_x64/
XPMP2-Sample.xpl
mac_x64/
XPMP2-Sample.xpl
win_x64/
XPMP2-Sample.xpl
Resources/
Doc8643.txt
related.txt
CSL-Models, e.g. in a folder CSL/
- Author
- Birger Hoppe
- Copyright
- (c) 2020 Birger Hoppe
-
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
 IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


|
AAX SDK
2.3.1
Avid Audio Extensions Development Kit
|
Background processing support for AAX DSP and Native plug-in algorithms.
Each algorithm render callback may optionally be associated with a background processing callback. This background callback will be triggered regularly in an idle context on a separate thread, and can be used to perform any background task required by the algorithm.
Background thread processing is supported for both AAX DSP and AAX Native plug-ins.
The background processing callback is called from a true idle thread context. On DSP accelerated platforms, this means that the callback will be triggered continuously whenever the chip is not executing an interrupt, i.e. the algorithm render callback. Since the render callback's resource requirements are well-defined (or at least strictly bounded,) the background thread's available cycles are also deterministically bounded.
However, the background thread itself has a lower priority than the DSP shell. While the background callback's execution will not be interrupted by shell operations, it will be blocked in the event of a contention for memory resources with the shell. As a result, the number of memory operations that may be performed in this callback will be less well-defined when the host is consuming memory resources,e.g. when delivering a very large coefficient block to the DSP.
If your TDM plug-in does not perform any resource-intensive memory operations then you can assume a guaranteed performance level for its DSP background thread. Development tools are available that will test a plug-in by refreshing its entire context memory at every interrupt, and the background thread performance characteristics measured by these tools, plus an additional buffer to account for any pathological cases that may be missed by the performance check, should provide a guaranteed performance baseline for the background thread that will be completely safe for any Pro Tools operation scenario.
The background processing callback is not provided with any data pointers and does not have access to any facilities for managed communication with the rest of the plug-in. Therefore, the background process must use shared global data structures to interact with the render callback. Your plug-in will need to manually synchronize access to this data.
Usually the background callback will want to interact with the render callback via the algorithm's private data blocks. Therefore, private data blocks that are provided to an algorithm's context will not be relocated by the host between calls to the render callback, and background processes can reliably access this data once provided with a pointer. The same is not true for audio buffers, meters, coefficient ports, etc. - this data can all be relocated by the host when the render callback is not executing.
TI Guide


## Contact
<<<<<<< HEAD
Best way to contact me is via Email. Drop me an email if you are interested in discussing any of my research area topics or any other topic !
=======
Best way to contact me is via Email. Drop me an email if you are interested in discussing any of my research area topics
>>>>>>> origin/gh-pages


{{ _('Welcome to my portfolio with solution and explanation of all coding interview questions I have taken while applying for a job or practicing.') }}
{{ _('Here is the list of interviewers and questions:') }}
-
{% for category, articles in categories | sort %}
- {{ category }} ({{ articles|count }}) {% endfor %}


Asher, age 3, asked where I got my @vektrasays t-shirt from. I told him @evanphx, and he said "Oh," as if that totally explained everything.
9/30/2014, 8:16:29 PM
Favs: 1
Retweets: 2
link--- layout: tweet ---
Asher, age 3, asked where I got my @vektrasays t-shirt from. I told him @evanphx, and he said "Oh," as if that totally explained everything.
9/30/2014, 8:16:29 PM
Favs: 1
Retweets: 2
link


{{ partial "header.html" . }} 404 Oops! Either you've found a bug (in which case, please tell me) or you're just making things up. This page doesn't exist! Go to home page {{ partial "footer.html" . }}


M_process(3fm) - [M_process::INTRO] Fortran Module for calling process-related C functions from Fortran (LICENSE:PD)
Synopsis
Description
Options
Examples
See Also
Author
License
use M_process, only : process_open_read, process_open_write, process_closeuse M_process, only : process_readline, process_readall, process_writeline
use M_process, only : streampointer, process_debug
Module M_process(3f) lets Fortran code read/write lines from/to processes.These Fortran procedures use the ISO_C_BINDING interface to define Fortran-callable versions of the C procedures popen(3c)/pclose(3c) and fgets(3c)/fputs(3c). A set of record-oriented wrapper routines are then used to create a simple Fortran-callable interface.
A POSIX C interface is generally available but may require using a Linux subwindow or an application such as CygWin on MSWindows platforms.
Basically, you
The procedures defined are:
o Open a process for either reading from or writing to using formatted sequential text records (eg. "lines"); much like with a regular file. o pass a CHARACTER variable to/from the process that represents a record. o Use internal READs and internal WRITEs or parsing routines to create or interpret the lines. o when done close the process much like closing a file.
! open process to read from subroutine process_open_read(cmd,fp,ierr)where the variable types are! open process to write to subroutine process_open_write(cmd,fp,ierr)
! read line from process subroutine process_readline(string,fp,ierr) ! read all of process output into a string string function process_readall(cmd,ierr) result (string)
! write lines to process subroutine process_writeline & & (string|string_array,fp,ierr[,trm=.t.|.f.])
! close process subroutine process_close(fp,ierr)
character(len=*) :: cmd type(streampointer) :: fp character(len=*) :: string integer :: ierr
maximum character value length is currently 4096
cmd command passed to system to start process fp C file pointer returned by process_open_*() string data line to send or receive from process ierr error flag returned.
o process_writeline(3f) : negative indicates an error o process_readline(3f) : Non-zero indicates an error
An example that places all the output of a command into a single string variable (see process_readall(3) for an even simpler way to do this) ...
program read_ex use M_process ,only: process_open_read, process_readline use M_process ,only: streampointer, process_close implicit none ! C file pointer returned by process_open() type(streampointer) :: fp ! check status of calls to process module routines integer :: ierr ! hold results, assuming sufficient memory is available character(len=:),allocatable :: string ! long enough to hold any expected line character(len=4096) :: line string= !###! open process to read from call process_open_read(ls,fp,ierr) !###! read output of process till end do call process_readline(line,fp,ierr) if(ierr.ne.0)exit !###! append output lines together string=string//trim(line)// write(*,*)[//string//] enddo write(*,*)trim(string) !###! Wrap up call process_close(fp,ierr) end program read_exWhen calling a line-mode program from another program the most natural way is to open a process and write to it.
Following is an example program that calls the M_process module to start a plotting program called gnuplot(1) and give it enough commands to generate a plot. It then lets you interactively interact with the gnuplot(1) program or continue on in the program.
program gnuplotExample use M_process ,only: process_open_write, process_writeline use M_process ,only: streampointer, process_close implicit none ! ! Example of Fortran writing GNUPLOT command and data file. ! !*! line of data to write !*! (assumed long enough to hold any command line) character(len=4096) :: line !*! C file pointer returned by process_open() type(streampointer) :: fp !*! check status of calls to process module routines integer :: ierr !*! DO loop counter integer :: i !*! number of points to put into curve to be plotted integer,parameter :: n=50 !*! arrays to fill with curve data to be plotted real :: x(n),y(n) integer :: ios !*! Define sample X,Y array. do i=1,n !*! set X() values as whole numbers 1 to N x(i)=i !*! y(i)=(x(i)+0.5)**2 enddo !*! Write the GnuPlot commands !*! open process to write to (ie. start gnuplot(1) program) call process_open_write(gnuplot,fp,ierr) !*! create in-line dataset $SET1 call process_writeline($SET1 <<EOD,fp,ierr) do i=1,n !*! Write the X,Y array as coordinates to be plotted. write(line,(2(f10.3,1x)))x(i),y(i) call process_writeline(line,fp,ierr) enddoThis program starts a bash shell that, among other things, calls sqlite3 and gnuplot. In this case the text is fixed to keep the example simple. More typically the text would be conditionally selected or generated by the program.call process_writeline([character(len=128) :: & &EOD , & &set title " Example of GNUPlot data and command file generation", & &set nokey , & &plot $SET1 with lines , & &],fp,ierr)
!*! Additional gnuplot commands; in this case interactively entered write(*,(a))enter gnuplot commands or "." to exit do write(*,(a),advance=no)gnu>> read(*,(a),iostat=ios)line if(line.eq..)exit call process_writeline(trim(line),fp,ierr) enddo !*! Wrap up call process_close(fp,ierr) write(*,*)CLOSED THE PROCESS. RETURNING TO PROGRAM end program gnuplotExample
program demo_M_process use M_process ,only : process_open_write, process_writeline use M_process ,only : streampointer, process_close implicit none ! C file pointer returned by process_open() type(streampointer) :: fp ! check status of calls to process module routines integer :: ierr character(len=:),allocatable :: text(:)This example shows a routine to read the output of one command and then call another command to write that output to.! open process to write to (ie. start gnuplot(1) program) !!call process_open_write(cat,fp,ierr) ! open process to write to (ie. start gnuplot(1) program) call process_open_write(bash,fp,ierr)
text=[character(len=128) :: & "rm -f sqlite1.db", & "sqlite3 sqlite1.db <<\EOF", & "-- ***********************************************",& "CREATE TABLE IF NOT EXISTS animals( ",& " name TEXT NOT NULL PRIMARY KEY , ",& " hair INT NOT NULL , ",& " mobility INT NOT NULL , ",& " vision INT NOT NULL ); ",& "-- ***********************************************",& "INSERT INTO animals(& &name,hair,mobility,vision) VALUES(kittens,4,5,1);",& "INSERT INTO animals(& &name,hair,mobility,vision) VALUES(mice ,6,7,2);",& "INSERT INTO animals(& &name,hair,mobility,vision) VALUES(rats ,2,3,3);",& "-- ***********************************************",& ".quit", & "EOF", & "##################################################",& "sqlite3 -header -column sqlite1.db select * from animals",& "sqlite3 sqlite1.db & &select name, hair, mobility, vision from animals",& "##################################################",& "gnuplot --persist <<\EOF ",& "######################################## ",& "#set terminal gif ",& "#set output M_process.3.gif ",& "######################################## ",& "#set terminal png ",& "#set output bar.png ",& "######################################## ",& "#set terminal pdf enhanced ",& "#set output bar.pdf ",& "######################################## ",& "#set style data lines ",& "######################################## ",& "set datafile separator ""|"" ",& "set style data histogram ",& "set style histogram cluster gap 1 ",& "set style fill solid border rgb ""black"" ",& "set auto x ",& "set yrange [0:*] ",& "plot ""< sqlite3 sqlite1.db & &select name, hair, mobility, vision from animals"" \ ", & " using 2:xtic(1) title ""hair"", \ ",& " using 4:xtic(1) title ""vision"", \ ",& " using 3:xtic(1) title ""mobility"" ",& "quit ",& "EOF ",& " "]
!!write(*,(a))text call process_writeline(text,fp,ierr) call process_close(fp,ierr) write(*,(a))CLOSED THE PROCESS. RETURNING TO PROGRAM
end program demo_M_process
program test implicit none call readit(ls -l) call writeit(cat -n) containssubroutine readit(cmd) use M_process ,ONLY: process_open_read, process_readline use M_process ,ONLY: streampointer, process_close ! C file pointer returned by process_open() type(streampointer) :: fp ! command line executed to start process character(len=*) :: cmd ! line of data to read (assumed long enough to hold any input line) character(len=4096) :: line integer ierr ! open process to read from call process_open_read(cmd,fp,ierr) write(*,*)READTEST: process is opened with status ,ierr ierr=0 do while(ierr .eq. 0) ! read a line from the process call process_readline(line,fp,ierr) if(ierr.ne.0)then write(*,*)READTEST: ierr is ,ierr exit endif write(*,*)READTEST: line://trim(line) enddo call process_close(fp,ierr) write(*,*)READTEST: process closed with status ,ierr end subroutine readit !--------------------------------------------------------------------- subroutine writeit(cmd) use M_process, only: process_open_write, process_writeline use M_process, only: streampointer, process_close ! C file pointer returned by process_open() type(streampointer) :: fp ! command line executed to start process character(len=*) :: cmd ! line of data to write (assumed long enough to hold any output line) character(len=4096) :: line integer :: ierr integer :: i ! open process to write to call process_open_write(cmd,fp,ierr) write(*,*)WRITETEST: process is opened ierr=0 do i=1,10 write(line,("WRITETEST: line ",i0))i call process_writeline(line,fp,ierr) if(ierr.lt.0)then write(*,*)WRITETEST: process write error ,ierr exit endif enddo call process_close(fp,ierr) write(*,*)WRITETEST: process closed with status ,ierr end subroutine writeit end program test
o PIPES: pipe(3c), popen(3c), pclose(3c), fflush(3c) o NAMED PIPES: mkfifo(3c), mknod(3c) o SUBPROCESSES: fork(3c) o OTHER: fflush(3c)
John S. Urban
Public Domain
| Nemo Release 3.1 | M_process (3) | July 22, 2023 |


Minilog for Lisp is a set of Common Lisp subroutines implementing ... library of Common Lisp subroutines for use in programs that manipulate information encoded in Standard Information Format (SIF), a variant of first order predicate calculus. It includes translators to convert expressions from one form to another, pattern matchers of various sorts, subroutines to create and maintain SIF knowledge bases, and a sound and complete inference procedure based on model elimination.
The inference procedure used in Epilog is based on a technique called model elimination. The procedure closely resembles that of Prolog; but, unlike that that of Prolog, the procedure used in Epilog is sound and complete for the entire language, i.e. all consequences the system derives are correct and it can derive all correct consequences of the information it is given.
SIF, the language supported by Epilog, is a proper subset of KIF (Knowledge Interchange Format), i.e. all expressions in SIF are expressions in KIF, but not all KIF expressions are expressions in SIF. Despite this subset relationship, SIF is fully expressive, i.e. for any set of KIF sentences, there is an equivalent set of SIF sentences. Thus, using the subroutines in Epilog, it is possible to build a sound and complete inference procedure for all of KIF.
This document is a brief introduction to some of the key features of Epilog. For more detailed information, the reader is referred to the Epilog reference manual.
KIF is a prefix version of the language of first order predicate calculus with various extensions to enhance its expressiveness. In Epilog, KIF expressions are represented as Lisp atoms and lists (but not dotted pairs).
The basic vocabulary of the language includes variables, logical operators, and constants. Individual variables are distinguished by the presence of ? as initial character, and sequence variables are distinguished by the presence of an initial @. There is a fixed set of operators =, /=, listof, quote, not, and, or, =>, <=). All others words are constants.
From this basic vocabulary, we can build terms to refer to objects in the universe of discourse, as in the following examples.
(father art) (+ 2 3)
The language is distinctive in its use of a quotation operator to write terms that refer to expressions. For example, the following term refers to the expression (+ 2 3) literally.
(quote (+ 2 3))
From terms, we can build sentences. First and foremost, this provides the ability to encode simple data, as in the examples shown below.
(parent art bob) (parent art bea) (parent bob cal)
Using the logical operators in SIF, it is possible to encode more complex sorts of information (such as negations, disjunctions, rules, and so forth). The expression shown below is an example of a logical sentence in SIF. It defines a grandparent as a parent of a parent.
(<= (grandparent ?x ?z) (parent ?x ?y) (parent ?y ?z))
Epilog provides capabilities for managing knowledge bases of sentences encoded in SIF. In this section, we introduce the subroutines for creating, examining, and destroying knowledge bases. We also look at Epilog's heterarchical theory mechanism.
The save command is used to add facts to a specified theory. Here, we add the facts that Art is the parent of Bob, Bea, and Bess to the theory named global.
User: (save '(parent art bob) 'global) Lisp: (PARENT ART BOB) User: (save '(parent art bea) 'global) Lisp: (PARENT ART BEA) User: (save '(parent art bess) 'global) Lisp: (PARENT ART BESS)
Once we have some facts in a theory, we can examine its contents. The knownp command takes a sentence and a theory as arguments. If the sentence is ground, then knownp succeeds if and only if the theory contains that sentence. If the sentence includes individual or sequence variables, knownp succeeds if and only if the theory contains a sentence that matches the argument for some binding of the constituent variables.
User: (knownp '(parent art bob) 'global) Lisp: T User: (knownp '(parent ?x bob) 'global) Lisp: T User: (knownp '(parent @l) 'global) Lisp: T
The knownx command takes an expression, a sentence, and a theory as arguments. If the theory contains a matching sentence, knownx plugs the variable bindings (if any) into the specified expression and returns the answer. There is no restriction on the position of the variables in the query. Note that there are three possible answers for the second query. The knownx subroutine always returns the first answer it finds.
User: (knownx '?x '(parent ?x bob) 'global) Lisp: ART User: (knownx '?y '(parent art ?y) 'global) Lisp: BOB User: (knownx '(related @l) '(parent @l) 'global) Lisp: (RELATED ART BOB)
The knowns subroutine is similar to knownx except that it returns a list of all possible answers. The order of answers on the list is the order in which they are found in the theory.
User: (knowns '?y '(parent art ?y) 'global) Lisp: (BOB BEA BESS) User: (knowns '(related ?x ?y) '(parent ?x ?y) 'global) Lisp: ((RELATED ART BOB) (RELATED ART BEA) (RELATED ART BESS))
The knowng subroutine takes the same arguments as knownx and knowns and returns an answer generator as value. Each time this generator is called, it returns a different answer to the orginal question. When all answers have been exhausted, it returns nil.
 If drop succeeds in finding a matching sentence to remove, it returns the sentence as value.
User: (drop '(parent art bess) 'global) Lisp: (PARENT ART BESS) User: (knowns '?y '(parent art ?y) 'global) Lisp: (BOB BEA)
By specifying different theory arguments to these subroutines, we can manipulate theories without affecting other theories. For example, here we add some sentences to a new theory, called mytheory. Notice that only the new information is available in this new theory.
 This subroutine takes a theory name and a list of sentences as arguments and arranges that the theory contains exactly those sentences specified and no more. Here, we create a theory called another with two more facts about Art.
 In the following example, we access our old data by specifying global in our call to knowns.
User: (knowns '?y '(parent art ?y) 'global) Lisp: (BOB BEA)
Often in working with theories, it is useful to include the facts from one theory inside of another theory. We can do this by using the save command to add them in the other theory as well, but this is wasteful. An alternative is to call the includes routine on two theories, thereby telling the database routines that the first theory implicitly includes the second. Here, we say that mytheory includes global and another and thereby make all of the facts in these theories available whenever a subroutine accesses mytheory. The includees subroutine returns a list of all theories included in the theory specified as argument. The variable *includers* always contains a list of theories with included theories.
User: (includes 'mytheory 'global) Lisp: DONE User: (knowns '?y '(parent art ?y) 'mytheory) Lisp: (BILL BETTY BOB BEA) User: (includees 'mytheory) Lisp: (GLOBAL) User: *includers* Lisp: (MYTHEORY)
The variable *theories* contains a list of theories containing one or more sentences. empty removes all sentences from a given theory. reset resets the state of the database and all variables in Epilog to their initial values.
 The procedure is enhanced to handle metalevel information, and there are also some extensions to support procedural attachment and nonmonotonic reasoning. In this section, we take a look at the basic first order reasoning capabilities; the metalevel reasoning ability is described in the next section; and procedural attachments and nonmonotonic reasoning are discussed in the section thereafter.
The special strength of the inference subroutines is their ability to do inference with logical information encoded as implications. Here, we enter a definition for the grandparent relation, and we enter some facts about Art's family. Although, according to our definitions, Art is the grandparent of Cal, knownp answers nil. This is the correct answer for knownp -- after all, the fact is not stored explicitly in the theory. By contrast, findp is able to prove the fact. The findx subroutine is able to find a grandparent of Cal and a grandchild of Art. The finds subroutine is able to find all of the grandchildren of Art. The findg subroutine returns a generator.
 Epilog is also capable of forward reasoning (from premises to conclusions using forward implications).
As an example, consider the following interaction. By setting *saves* to (family), the user directs the system to save literals involving the family relation. The forward implication asserts that, if a person is in a particular family, then all of his children are in that family as well. By writing it as a forward implication, we are saying that the implication should be triggered whenever we get information about a person's family. The subroutine assume is used to add sentences to the database and conduct all such forward chaining. If we discover that Art is a Garfunkel, then we immediately conclude that Bob and Cal and Coe are Garfunkels as well and these facts are stored explicitly in the database.
 Much, if not most, of our conceptualization of the world naturally takes the form of functions. For functional information, we use a notation much closer to that of Lisp. If a list is empty, the result of appending the list onto a second list is just the second list; otherwise, the result is obtained by adding the first element of the list to the result of appending the rest of the list to the second list.
User: (save '(= (append (listof) ?m) ?m) 'global) User: (save '(<= (= (append (listof ?x @l) ?m) (listof ?x @n)) (= (append (listof @l) ?m) (listof @n))) 'global)
Now it is possible to append two lists by making a call to the findx routine.
User: (findx '?z '(= (append (listof 1 2) (listof 3 4)) ?z) 'global) Lisp: (listof 1 2 3 4)
The inference subroutines also include a subroutine, called findval, capable of evaluating terms directly.
User: (findval '(append (listof 1 2) (listof 3 4)) 'global) Lisp: (listof 1 2 3 4)
Here, we have a more interesting example of automated reasoning. Given the axioms of equality (reflexivity, symmetry, and transitivity) and the group axioms (left and right identities for the * function, right inverse, and associativity), we ask the system to prove that the right inverse is also a left inverse.
 While Epilog can handle such cases, the computational cost can be quite large. For example, the computational cost for the previous examples is just a few milliseconds apiece, whereas the cost in this case is about a second, and the cost to prove more complicated theorems can be much higher. Fortunately, the inference algorithm used in Epilog is quite simple; and, as a result, it is usually possible to predict its computational performance on a given knowledge base and to control that performance by writing sentences in a judicious manner.
One of the distinctive features of SIF is that it allows us to express knowledge about knowledge. In order to encode such metaknowledge, we use a conceptualization in which expressions in the language are treated as objects in the universe of discourse and in which there are functions and relations appropriate to these objects. In SIF, atoms are treated as primitive objects (i.e. having no subparts). Complex expressions (i.e. non-atoms) are treated as lists of subexpressions (either atoms or other complex expressions). In particular, every complex expression is viewed as a list of its immediate subexpressions.
In order to assert properties of expressions in the language, we need a way of referring to those expressions. There are two ways of doing this in SIF. One way is to use the quote operator in front of an expression. For example, to refer to the symbol john, we use the term 'john or, equivalently, (quote john). To refer to the expression (p a b), we use the term '(p a b) or, equivalently, (quote (p a b)).
With a way of referring to expressions, we can assert their properties. For example, the following sentence ascribes to the individual named john the belief that the moon is made of a particular kind of blue cheese.
User: (save '(believes john '(material moon stilton)) 'global) Lisp: (BELIEVES JOHN '(MATERIAL MOON STILTON))
Since expressions are first-order objects, we can quantify over them, thereby asserting properties of whole classes of sentences. For example, we could say that Mary believes everything that John believes. This fact together with the preceding fact allows us to conclude that Mary also believes the moon to be made of blue cheese.
 We can denote a complex expression like (p a b) by a term of the form (listof 'p 'a 'b), as well as '(p a b). All of Epilog's subroutines treat the quote and listof forms of denotation as equivalent. If variables are included in the list form, then any attempt to match the two forms will result in the variables being bound to the appropriate subexpressions.
User: (findp '(believes mary (listof 'material 'moon 'stilton)) 'global) Lisp: T User: (findx '?y '(believes mary (listof 'material 'moon ?y)) 'global) Lisp: 'STILTON
Unfortunately, these listof expressions can be quite cumbersome. In order to reduce this complexity, SIF defines the read macro characters ^ and , to assist the user in writing such expressions in a more natural form. The use of ^ signals thats the following expression is to be quoted except for those components preceded by commas.
User: (findx '?y '(believes mary ^(material moon ,?y)) 'global) Lisp: 'STILTON
The advantage of the listof representation over the quote representation is that it allows us to quantify over parts of expressions. For example, let us say that Lisa is more skeptical than Mary. She agrees with John, but only on the composition of the moon. The first sentence below asserts this fact without specifically mentioning stilton. Thus, if we were to later discover that John thought the moon to be made of rocks, then Lisa would be constrained to believe this as well. The second sentence relates our assertion about Lisa's beliefs to the world of real objects, not just symbols.
User: (save '(<= (believes lisa ^(material moon ,?y)) (believes john ^(material moon ,?y))) 'global) User: (findp '(believes lisa '(material moon stilton)) 'global) Lisp: T
Another use of quote and listof is in the formalization of rules of inference. For example, the following sentence formalizes the ordered resolution rule of inference for ground clauses. If the first literals in two clauses are complementary, then it is legal to conclude the clause consisting of the remaining literals of each clause. (Adding unification to this formalization to handle non-ground clauses presents no serious problems.)
User: (save '(<= (resolution ^(or ,?p ,@l) ^(or (not ,?p) ,@m) ^(or ,@n)) (= (append (listof @l) (listof @m)) (listof @n))) 'global)
With this information, it is possible for the system to answer metalevel questions about resolution, like the one shown.
User: (findx '?r '(resolution '(or p q) '(or (not p) (not r)) ?r) 'global) Lisp: (LISTOF 'OR 'Q '(NOT R))
While there is little practical value to defining resolution in this way, this example illustrates the power of the representation and the Epilog routines. More practical examples of this include representation of knowledge about the beliefs, goals, interests, and capabilities of agents and metainformation useful in the control of reasoning.
The knowledge base manipulation routines in Epilog are unable to answer even the simplest questions of arithmetic or equality (unless those facts are explicitly stored). By contrast, the inference subroutines have knowledge of many basic concepts of SIF, e.g the < concept.
User: (findp '(> 3 2) 'global) Lisp: T
Predefined terms are evaluated using the == relation. In this case, the second argument to == may be a variable.
 The function constant execute takes as argument a fragment of Lisp. Whenever an equation with an execute term as first argument is evaluated, the specified procedure is called on the specified arguments and the a description of the value is unified with the term occurring as the second argument of the equation. The following examples illustrate this mechanism.
User: (findp '(== (execute (listp '(a b c))) 't) 'global) Lisp: T
Note that calls can be made to the inference routine itself and thus implement a kind of nonmonotonic reasoning.
User: (deftheory global (parent art bob) (parent art bea) (parent art bess) (= (length (listof)) 0) (<= (= (length (listof ?x @l)) ?n) (= (length (listof @l)) ?n1) (== (+ ?n1 1) ?n)) (<= (= (numchildren ?x) ?z) (== (execute (finds '?y '(parent art ?y) 'global)) ?y) (= (length ?y) ?z))) Lisp: DONE User: (findval '(numchildren art) 'global) Lisp: 3
Epilog also includes a full range of utilities (e.g. secondary storage handling) and debugging aids (e.g. for tracing inference routines).
Please remember that this document is just an introduction to Epilog. It is intended to be suggestive, not exhaustive. Although the subroutines presented here illustrate the key features of Epilog, there are many other subroutines as well. Although the examples used here are quite simple (in keeping with the introductory nature of the presentation), Epilog is intended for use in the construction of very complex knowledge-based systems.