The Lutheran Geek

The life and times of a WoW-playing, Java-programming dude in Chicago

Wednesday, February 25, 2015

Formal Languages, part 2: Regular Expressions and Regular Languages

Before I start in on this entry, I need to give credit where credit is due and note that my main reference source for these blog posts on formal languages is my grad school textbook, An Introduction to Formal Languages and Automata, Third Edition by Peter Linz (the 5th edition is linked). If you're out there, Peter, thanks for writing an awesome intro to this nerdy topic, and congratulations on having a great first name. 🙂 So let's talk about regular expressions. Again, we're not talking about the Perl version with lazy matching and look-ahead and look-behind and all that magic; we're discussing austere, formalized regular expressions. The idea is that a regular expression matches a set of strings, and those strings make up a regular language. (This is jumping the gun a bit because we actually define regular languages using finite automata, but we'll come back to that later.) For formality's sake, we first note that the empty set ∅ and the empty string λ themselves are regular expressions; the former is, of course, a set of zero sentences, while the latter is a set of one sentence, namely the empty string. In addition, any member a in a given alphabet ÎŁ is also a regular expression of a single sentence one symbol long. We then add on concatenation (r1·r2, or more simply, r1r2), alternation (r1 + r2, which is expressed in Unix and Perl REs as r1 | r2, and means "r1 or r2") and star-closure (r*, i.e. zero or more rs in a row), where the rs are composed of the primitive regular expressions ∅, λ, and all a ∈ ÎŁ. (We almost always ignore the ∅ and λ, however, and just talk about combinations of symbols in the alphabet ÎŁ.) We can also group sub-expressions with parentheses. So this way, we can say things like "a language with an even number of as followed by an odd number of bs", which would be expressed as: r = (aa)*(bb)*b To break that down, we first see that (aa)* represents any number of aas: 0, 1, 2, etc., and so gives us an even number of as. The second part, (bb)*b, indicates that we again have an even number of bs, but then there is one extra b at the end, giving us an odd number. We can give many examples of regular expressions: "all bit strings (i.e. strings of 0s and 1s) which has at least one pair of consecutive 0s", "all strings on an alphabet such that the length is divisible by 3", "all bit strings that, when interpreted as a binary number, is greater than or equal to 39", and so on. So it seems like we can define quite a few complicated languages using just this simple way of expressing patterns! However, remember the example from part 1:
This isn't a true regular expression, as we noted - you can't do things in regular expressions like "lazy matching" or "back-referencing". All we can say is "this followed by that", "this or that" and "zero or more thises". But maybe it's possible that there is a regular expression that does what the above does, namely match all composite numbers expressed in unary notation. Try if you'd like, but you'll soon see it's futile. In another post, I'll explain the goofily-named pumping lemma which is used to prove that a particular grammar does not represent a regular language, and thus cannot be represented by a regular expression. We'll then use the pumping lemma to prove that we can't construct a regular expression for this language. I think that's enough for now. Next time, we'll discuss finite automata and how they're used to truly define regular languages. As a preview, we'll see that there are two types: deterministic automata which require that you always know what to do next, and non-deterministic automata which allows "guesses" as to how to proceed. The magic part, as we'll see, is that they are equivalent! But you'll have to come back later to see what I'm talking about. 🙂
posted by Peter at 9:34 pm  

Sunday, February 15, 2015

Formal Languages, Part 1: Basic Concepts

Last week, there was a link posted on Hacker News that described a regular expression that only matches non-prime numbers (expressed as a string of "1"s, i.e. in so-called "unary" notation):
Commenters noted that this is not a real regular expression. But what does that mean? Anyone with experience in Perl regular expressions can see that this clearly will work just fine; the linked article does a good job of breaking down how this goes about matching (or not matching) a given string of 1s. You see, the history of Unix has sort of muddied the term "regular expression" to the point that it means something in practice that is broader than the theory. Originally, the old Unix command line tool grep was designed with classical "regular expressions" in mind. However, as is well-known, classical regular expressions are very limited, and so a separate tool called egrep was written to accept so-called "extended regular expressions", and eventually egrep's notion of an extended RE is what we now call a "regular expression". So what is a "classical" regular expression? To explore that question, we need to look into the field called "formal languages". Despite the name, the field has little to do with programming languages or spoken languages, although it is used in theoretical studies of these kinds of language. Formal language study is the study of patterns, in a way. It asks: what is the simplest pattern which can describe this (usually infinite) set of strings? So to understand what a regular expression is, we need to set down some definitions first that will allow us to talk about formal languages in general. Once we do that, we can talk about the family of so-called "regular languages" that regular expressions encompass, and go beyond that to define more powerful languages.

Basic concepts of formal languages

A language is just a set of strings that are constructed from an alphabet. An alphabet is simply a finite set of symbols such as 'a', 'b', 'c', etc. Traditionally, an alphabet is denoted with the symbol Σ. Strings are composed of zero or more symbols from the alphabet - the so-called empty string is traditionally denoted by λ. Since strings can contain many consecutive copies of a particular symbol, we can use a shorthand to represent repetition: an = aaaaaa… (n times) For n = 0, we define a0 = λ When starting with an alphabet Σ, it's useful to talk about the possible strings it can make. Σ* is the set of all strings consisting of zero or more symbols from Σ. So say that our alphabet was very simple: it just consisted of {a}. In this case, Σ* = { λ, a, aa, aaa, aaaa, … } or, more succintly, Σ* = { an : n ≥ 0 } Σ* always contains λ; if we want to exclude it, we define Σ+ = Σ* - { λ } A language, then, is just a subset of Σ* - perhaps in a way we can define succinctly, perhaps not. A string that is a member of a language is called a sentence. Remember, these are formal, abstract terms, so don't get too hung-up on the real meaning of "language" or "sentence" here. Finally, we have the concept of "grammars". Again, this isn't like a grammar you're used to, although it's quite close! Sentences in various languages can only be constructed in certain ways; some (like English) are subject-verb-object, some (like Japanese) are subject-object-verb; even others use different combinations. So a basic grammar rule in English is expressed as: [sentence] ⇒ [subject] [verb] [object] Subjects and objects can be further defined as agglomerations of nouns and articles and such. In the same way, we define grammars with our languages and alphabets: G = (V, T, S, P) G is a grammar described as a combination of three sets and one element:
  • V is defined as a set of variables; as few as one. These are usually denoted with capital letters such as S, A, B, etc.
  • T is defined as a set of terminal symbols. This is almost always the alphabet Σ that we are already familiar with
  • S is a single member of V, referred to as the start variable; by convention, it's usually just the letter S. This variable is assumed to be, naturally, the start of any derivation using our grammar.
  • P is a set of productions similar to our grammar rule above. Productions can contain any number of variables and/or terminal symbols on either side of the arrow, though we specify that the left side contains at least one symbol, while the right side can be empty (i.e. λ).
A language, thus, can be defined as all the sentences such that there is some chain of productions in P called a derivation that produces the sentences - we denote this language as L(G), or the language derived from the grammar G. To wrap up, here's a simple grammar: G = ({S}, {a, b}, S, P) where P is given by the two productions: S ⇒ aSb S ⇒ λ We can derive the sentence "aabb" as so: S ⇒ aSb ⇒ aaSbb ⇒ aabb By applying the first rule 0 or more times, followed by the second rule, it's pretty easy to see that this grammar defines a fairly simple language: L(G) = { anbn : n ≥ 0 } So now we can talk about formal languages. Next time, we'll actually get into regular languages, although along the way we will have to detour and talk about "automata". Robots? Well, not really. More like a robot that defines a language. 🙂
posted by Peter at 8:22 pm  

Sunday, February 8, 2015

An engineer’s devotional

Back in 1998, I was a volunteer at Christ Lutheran Church in Albany Park. I worked there as a youth worker for a year through the Lutheran Volunteer Corps. Being right out of college, it was a great way to spend a year to start finding my way in the post-adult world, as well as to give back a little before I got consumed in the world of work. This past week, the pastor, Tom Terrell, contacted me and others asking us if we were willing to contribute entries for his congregation's Lenten devotional. It was really great to hear from him, and considering what a crazy week this has been personally (more about that some other time), I accepted the opportunity. Here is my humble contribution.
O LORD, my heart is not lifted up, my eyes are not raised too high; I do not occupy myself with things too great and too marvelous for me. But I have calmed and quieted my soul, like a weaned child with its mother; my soul is like the weaned child that is with me. O Israel, hope in the LORD from this time and forevermore.
-- Psalm 131 (NRSV) These days, I work as a software engineer. I'm fortunate enough to work with a group of people who are very down to earth and wonderful people, but I've seen some of the darker sides of what people can become in this line of work: arrogant, dismissive, and forgetful of the fact that working with the people around them matters more than the programs they design. It can be a struggle to be a more gentle soul in this line of work when an unstated expectation of your job is that you should always assert yourself to the front of every discussion. God wants us to be the best "us" we can be. God does not expect us to fit into one particular mold, no matter what our particular gifts are. The psalm I quoted above encourages me that God especially loves those who take the time to be quiet and try to understand: understand life, understand our role in the world, understand love, understand ourselves. God also does not leave us alone in this struggle, but is a partner with us, hand quietly on our shoulder as we go through life.
posted by Peter at 5:32 pm  

Saturday, April 26, 2014

Foreign key declarations in MySQL

In my few years working closely with MySQL, I've found something surprising about how foreign keys are declared. For the longest time, I've been used to declaring foreign keys like so:
create table foo (
foo_id int(11) primary key auto_increment,
-- ...

create table bar (
bar_id int(11) primary key auto_increment,
foo_id int(11) not null references foo(foo_id),
-- ...
After a while, I started noticing that foreign key constraints were not being enforced like I thought they would be. When I looked at the SHOW CREATE TABLE statement for these tables, I found something surprising: the foreign keys were not created! After a bit of frustration, I took to the internet, and found the following quote in MySQL's documentation:
MySQL does not recognize or support "inline REFERENCES specifications” (as defined in the SQL standard) where the references are defined as part of the column specification. MySQL accepts REFERENCES clauses only when specified as part of a separate FOREIGN KEY specification.
(emphasis mine) What's worse, when you try to use an "inline REFERENCES" as above, MySQL will silently ignore it! I hunted around a bit to see if I could find any way to make this syntax a fatal error, but there doesn't seem to be. So anyway, you need to create foreign keys the "long way" in MySQL:
create table bar (
bar_id int(11) primary key auto_increment,
foo_id int(11) not null,
-- ...
foreign key bar_foo_id (foo_id) references foo(foo_id)
It's frustrating that the inline REFERENCES is just ignored instead of treated as a syntax error - it fools you into thinking that your DDL was fully processed, but you don't get so much as a warning that it was not processed 100% as you might expect. Does anyone know why don't just treat this as an error? To me it seems like bad behavior on MySQL's part. Maybe it's time to switch to PostgreSQL. 😛
posted by Peter at 6:02 pm  

Friday, August 6, 2010

I’ve only got one word for you:

Acetylseryltyrosylserylisoleucylthreonylserylprolylserylglutaminylphenylalanylvalylphenylalanylleucylserylserylvalyltryptophylalanylaspartylprolylisoleucylglutamylleucylleucylasparaginylvalylcysteinylthreonylserylserylleucylglycylasparaginylglutaminylphenylalanylglutaminylthreonylglutaminylglutaminylalanylarginylthreonylthreonylglutaminylvalylglutaminylglutaminylphenylalanylserylglutaminylvalyltryptophyllysylprolylphenylalanylprolylglutaminylserylthreonylvalylarginylphenylalanylprolylglycylaspartylvalyltyrosyllysylvalyltyrosylarginyltyrosylasparaginylalanylvalylleucylaspartylprolylleucylisoleucylthreonylalanylleucylleucylglycylthreonylphenylalanylaspartylthreonylarginylasparaginylarginylisoleucylisoleucylglutamylvalylglutamylasparaginylglutaminylglutaminylserylprolylthreonylthreonylalanylglutamylthreonylleucylaspartylalanylthreonylarginylarginylvalylaspartylaspartylalanylthreonylvalylalanylisoleucylarginylserylalanylasparaginylisoleucylasparaginylleucylvalylasparaginylglutamylleucylvalylarginylglycylthreonylglycylleucyltyrosylasparaginylglutaminylasparaginylthreonylphenylalanylglutamylserylmethionylserylglycylleucylvalyltryptophylthreonylserylalanylprolylalanylserine. (The "longest word to appear in print" - it's the name of a protein from the "tobacco mosaic virus".)
posted by Peter at 10:36 am  

Thursday, May 6, 2010

Java Generics – a problem I couldn’t quite overcome

For the most part, Java Generics work quite well for 99% of my needs when doing generic programming. The API is fairly intuitive, and I rarely have to use the weird features like <? super T> or whatever. However, I came across a situation that generics couldn't quite handle. I was working on a GWT project, and I found myself looking for a sortable table much like a JTable can do pretty much out of the box in Swing. I found a simple implementation that stores each row of the table in a RowData class. Now, the thing about such a row is that an instance of a row would contain several different objects of varying types; maybe a string in the first column,  a few numbers in the next columns, a date or two in other columns. So we can't parameterize the RowData class directly... or can we? We do want to specify that the types of objects we put in our RowData instances are instances of Comparable, because we are going to sort a collection of rows on one column (thus, the RowData itself is declared as public class RowData implements Comparable<RowData>). So would it make sense to declare the class as public class RowData<T extends Comparable<? super T>> ...? No, because then you are restricting the type of object you are using in the RowData. We have to leave it unparameterized. So we have to maintain a list of these objects. Well, maybe we can just parameterize this list as a list of Comparables, since we know they all have to be Comparable:
private List<Comparable<?>> columnValues = new ArrayList<Comparable<?>>();
Seems sensible. However, we are going to have a problem in our compareTo() method:
public int compareTo(RowData other) {
		Comparable<?> obj1 = this.getColumnValue(this.sortColIndex);
		Comparable<?> obj2 =  other.getColumnValue(this.sortColIndex);

		return obj1.compareTo(obj2); // compiler error!
In the end, I had to compromise and drop the used of generics. My coworker Andy called this solution "concise, but not precise."
public int compareTo(RowData other) {
	if (null == other) {
		return -1;

	if (!(this.getColumnValue(this.sortColIndex) instanceof Comparable<?>)
		|| !(other.getColumnValue(this.sortColIndex) instanceof Comparable<?>)) {
		return 0;
	// I'm promising that these are mutually comparable, but guaranteeing this
	// at compile-time is nigh impossible!
	Comparable obj1 = (Comparable) this.getColumnValue(this.sortColIndex);
	Comparable obj2 = (Comparable) other.getColumnValue(this.sortColIndex);
	return obj1.compareTo(obj2);
Inelegant, but I couldn't come up with a better way to do it. I'm thinking you could use reflection to cast the objects, but unfortunately GWT does not allow much access to the reflection API beyond getClass() and the instanceof operator.
posted by Peter at 10:48 am  

Monday, July 27, 2009

Screw you gnome-terminal!

OK, geekiness time. Most people hate a blinking cursor in a terminal - that huge blinking square is irritating beyond belief. Strangely, though, a blinking caret (the thin line you see in most text editors) is quite all right by most people. However, in their infinite wisdom, GNOME decided that all users want the caret and cursor to behave the same, and have hard-wired the cursor behavior to be the same as the caret behavior, which is stupid. At least they did for a few versions; they are now decoupled again, but they don't give you an easy way to turn off the blinking. Here is the magic incantation to access the secret setting to turn off blinking: gconftool-2 -s /apps/gnome-terminal/profiles/Default/cursor_blink_mode -t string off Done! now you can hack in peace. 🙂
posted by Peter at 9:37 am  

Monday, March 16, 2009

Sin, depression, and norms, part 2

So this morning, I laid out my best understanding of what sin is. Short version: it's bad, yo. No surprise there.  Historically, there are Seven Deadly Sins:
  • lust
  • gluttony
  • greed
  • sloth
  • wrath
  • envy
  • pride
Really, though, you can boil those Seven down to two: covetousness (lust, gluttony, greed, envy) and self-idolatry (sloth and pride). In my opinion, wrath is not so much a sin in and of itself as it is an overreaction to either covetousness or self-idolatry. What's interesting is that these are both focused on the self and leave out the most important type of sin that I examined as part of the Ten Commandments: ungratefulness. You could say "ungratefulness towards God", but really, you don't even have to be a religious believer to understand that this world is a pretty darn amazing place, and to have a sense of entitlement is ruinous and leads to all other destructive behavior. (Just so we have our taxonomy complete, here's where I think the Ten Commandments go here (using the numbering that has the first four as the God-related ones):
  • Ungratefulness: Commandments 1-5 (the four involving honoring God, plus honoring mommy and daddy)
  • Self-idolatry: Commandment 6 (arguable, but murder seems to imply you value your life more than another) and 9 ("I'm too important to be bothered with telling the truth")
  • Covetousness: Commandments 7 (acting on sexual coveting), 8 (acting on material coveting), and 10 (the act of coveting itself)
A stretch, but eh, I'm no theologian. 🙂 ) Where I'm going with all this is to examine why a focus on sin is harmful towards those suffering with depression, clinical or otherwise. I've had many brushes with depression; thankfully they've been relatively fleeting and not chronic. My understanding of it will, of course, be colored by my own experience, but I'll give it a shot. When you are depressed, everything is seen to be worthless, most of all yourself. Every action you take is surrounded by fear of the consequences of those actions, expecting the worst possible result at every turn. The outside world seems worthless to you; you want to completely unplug from it and from other people. In essence, you become a twisted mirror image of a healthy (albeit still flawed) person: where a normal person has excess pride, you have an excess of self-deprecation; your apathy overtakes any possible covetousness; worst of all, you seem to others to be utterly ungrateful for the world around you, which I proposed is the worst of the three types of sin. It's a double-whammy: you see nothing good in the world externally or internally, and the world has a large chance of misunderstanding you as being self-centered and ungrateful. Depression can lead to behavior that can also be seen as covetous or self-idolatrous. In my own experience, depressive thoughts do not fully overtake you, but rather you are left with a longing for normalcy, and in so doing begin to wistfully look at others, thinking their lives to be perfect and free of the same crushing doubts that you are experiencing. In so doing, you are wishing for that which you don't have in the thinking that it will cure all your ills and return you to the land of the Normal, because it's more important to be Normal than anything else. (Remember the third word in the title of this post, "norms"? I'll come back to the issue of norms in my next post, but keep it in mind.) Finally, the very act of being so focused on your own well-being is a warped version of worshiping the self. Even though you are not idolizing the self, but rather demonizing and cursing it, by doing so you put yourself as the cause of all the negativity you experience in your life. You envision yourself as a sort of twisted anti-God: not a Satan, as it were, but a being who inflicts incalculable harm on everything around yourself. Now imagine having all these burdens put on yourself by depression - seeing yourself as an unintentionally malevolent force, unable to be grateful for all that you have, and longing for a different life. Switch around the attitudes from overly dark to overly light, and you have the standard me-first Westerner: can't do wrong, master of your own domain (no, not in the Seinfeld sense), always wanting more and more. This is the person to whom the Confession is aimed: it is a chance for a good but flawed person (i.e. most of us) to acknowledge his shortcomings and plead for forgiveness. However, envision yourself as the depressed person reading these words. In one sense, perhaps you are reading a description of yourself that you already "know": I fall short, I am a bad person, etc. The depressed person will not see this as cleansing, but as a further trip down that dark path of self-loathing, thinking, "wow, even God thinks I'm terrible". The damage has been done, and all you can think is about those words you said: "I have sinned..." How hurt and confused you must feel. Once you say those words, nothing else that is said matters; the absolution will fall on deaf ears, in all likelihood, and you will spend the remainder of the time stuck in your thoughts, unable to receive anything good. Part 3 will examine religious (at least, Christian) norms, how they conflict with the needs of the depressed, and what should change in that regard. (As a postscript, I strongly suspect I am not the first person to pursue this line of thinking, and I'm sort of winging it right now. Suggestions on outside sources would be most welcome as I seek to explore this matter further.)
posted by Peter at 5:10 pm  

Monday, March 16, 2009

Sin, depression, and norms

It's Lent, which means that it's time to fire up the Sackcloth and Ashes Machine in most mainline Christian churches. Now, the Catholics have this area pretty well perfected compared to most Protestant churches (I can't speak to Orthodox faiths and their attitude towards sin, but never mind). However, we Lutherans like to dwell on sin as well. Most long-time ELCA Lutherans can recite the Brief Order of Confession and Forgiveness from memory. Here's the money paragraph:
We confess that we are in bondage to sin and cannot free ourselves. We have sinned against you [God] in thought, word, and deed, by what we have done and by what we have left undone. We have not loved you with our whole heart; we have not loved our neighbor as ourselves. For the sake of your Son, Jesus Christ, have mercy on us. Forgive us, renew us, and lead us, so that we may delight in your will and walk in your ways, to the glory of your holy name. Amen.
That's pretty standard wordage among the various ways to do mass confessions in various churches. The church I've been attending, Immanuel Lutheran here in Chicago, tends not to do the Confession on most standard Sundays. However, during Lent, they've broken it out. It makes sense as Lent is supposed to be a more somber time, meant to encourage self-reflection on the nature of our humanity. Even still, I am uncomfortable about this sort of self-flagellation. Granted, merely confessing our shortcomings falls way short of, say, whipping your back with a chain. But my problem is that, for someone suffering mentally and thinking themselves to be a permanently defective person each and every day, a recounting of how awful we are doesn't help. It should be noted that the Order mentioned above is for confession and forgiveness; that is, the pastor announces the absolution of all our sins. But I will hope to explain why this is unsatisfactory in my mind to say "yeah you suck, but hey, God loves you anyway". First, we need to define the nature of sin. There's about 2000 years of theological thought that I would have to cover to see the evolution of thought about what sin is, but I think I'll just stick with a definition from Luther:
...we deny to those propagated according to carnal nature not only the acts, but also the power or gifts of producing fear and trust in God. For we say that those thus born have concupiscence, and cannot produce true fear and trust in God.
"Concupiscence" basically means lust, greed; it encompasses the desire to cling to earthly things. This clinging is thought to be the root of (or at least a fairly large contributor to) all earthly sin, and is explicitly stated as such in the writings of Paul:
For the love of money is a root of all kinds of evil. Some people, in their eagerness to get rich, have wandered away from the faith and caused themselves a lot of pain.
Thus, sin is turning away from God in order to pursue earthly goods. What is frustrating to me is that most superficial investgations of sin that I have heard about in the past stop here, and assume that the reader understands that ignoring God is the worst wrong that a person can do. Let's go a little further and understand what is meant by this, and try to make our definition of sin a little more concrete. A good place to start, of course, is the Ten Commandments:
I am the Lord your God, who brought you out of the land of Egypt, out of the house of slavery; you shall have no other gods before me. You shall not make for yourself an idol, whether in the form of anything that is in heaven above, or that is on the earth beneath, or that is in the water under the earth. You shall not bow down to them or worship them; for I the Lord your God am a jealous God, punishing children for the iniquity of parents, to the third and the fourth generation of those who reject me, but showing steadfast love to the thousandth generation of those who love me and keep my commandments. You shall not make wrongful use of the name of the Lord your God, for the Lord will not acquit anyone who misuses his name. Remember the sabbath day, and keep it holy. For six days you shall labor and do all your work. But the seventh day is a sabbath to the Lord your God; you shall not do any work—you, your son or your daughter, your male or female slave, your livestock, or the alien resident in your towns. For in six days the Lord made heaven and earth, the sea, and all that is in them, but rested the seventh day; therefore the Lord blessed the sabbath day and consecrated it. Honor your father and your mother, so that your days may be long in the land that the Lord your God is giving you. You shall not murder. You shall not commit adultery. You shall not steal. You shall not bear false witness against your neighbor. You shall not covet your neighbor’s house; you shall not covet your neighbor’s wife, or male or female slave, or ox, or donkey, or anything that belongs to your neighbor.
These are the basic rules we are expected to live by, handed down by God to the Hebrew exiles during the exodus, and passed down to us today. We can split them into two chunks; the first through fourth Commandments which dictate our relation to God, and the remaining six which dictate interpersonal relationships. These latter Commandments are easier to understand, since they have clear social utility by laying out a basic minimal definition of justice. You could argue that honoring your parents are not strictly necessary to have justice, and while true, there is quite a bit of social utility in keeping your parents in high regard: it provides an incentive for people to have children and to raise them well, knowing that their children, if they are instilled with a sense of justice, will be able to care for them when they age and are no longer able to look after themselves. The other of these latter commandments speak for themselves: murder (premeditated or otherwise), adultery, theft, false witness, and covetousness are uniformly ruinous to societies, and must be proscribed. Let us examine the first four commandments: you shall have no god before God; you shall worship only God; you shall not misuse God's name; you shall keep the Sabbath holy. God provides a justification for these rules; God states that it was God who created the world in six days and rested on the seventh; who brought the Hebrews out of slavery; who ultimately is unwilling to tolerate those who would consider any other entity greater than God. All this presupposes the existence of God and all seems a bit harsh in the light of the Christian message of absolution, but let's take a broader view of what God is asking here. (The first two Commandments are actually a bit redundant; in fact, the Catholic and Lutheran tradition is to combine them into the single First Commandment, and later break the sentence describing covetousness into two Commandments, first proscribing coveting your neighbor's house, then coveting your neighbor's possessions.) God is basically commanding a sense of gratefulness here. God is saying, "Look, the world is an amazing place. You were born into it, and have all these resources at your command. The work you do is certainly important, but the very existence of the world is something you should recognize and always keep at the forefront of your mind. To that end, don't be flip about all of this; don't instill yourself with a sense of entitlement. Be grateful! You have been given these amazing gifts; recognize them as such and don't take them for granted." Ignoring this message is the main source of what we should consider to be "sin", and it's very important for certain to recognize that a sense of me-first entitlement is what leads us to destructive behavior. But what is ignored in all this talk about sin, entitlement, self-destruction, and so on, is a discussion of what people with real self-hatred - that is, depression - go through. What does this talk of sin do for them to build them up? Can it do ANYTHING to build them up? That'll be covered in my next post...
posted by Peter at 11:26 am  

Monday, July 28, 2008

Life on hold

I found out today it will be "three to four weeks" until I am able to close on my condo. This comes one week after the nominal close date specified in the contract I signed back in June, a date the selling agent had agreed to in advance. This whole situation is frustrating beyond belief. I hiave never felt so powerless over a situation. Everyone on "my side" is assuring me that they are working their hardest to resolve this situation. But there's nothing I can do. The ironic part of all this is that my preparedness to get everything lined up for the new condo is actually working against me. I've had to call ATT, DirecTV, Comcast, etc. to let them know that, no, I am not actually moving when I said I was. So now I go into a holding pattern. Thankfully, I was able to extend my lease of my apartment in Evanston for a month while this nonsense gets sorted out. There's really just nothing to say. I was hoping to make a post here explain the process and what's holding me up, but frankly, I just don't have the energy right now. I've been spending too much time today just feeling defeated. It's really all I can muster right now; just that feeling of "well crap, there's nothing I can do". Everything's on hold: my new place to live, the settling in, my parents coming to visit my new place, getting a dog. All of it has to wait. It's all incredibly unfair; I just want to scream and cry, but what good can that do? Ugh. That's about all I can muster now. Just, ugh. 🙁
posted by Peter at 2:26 pm  
Next Page »

Powered by WordPress