User:Woozle/blog/2009-04-07 1003 The Money Situation: Difference between revisions
update: application submitted |
m Text replace - "flag=including" to "flag=$including" |
||
Line 48: | Line 48: | ||
<let name=data index=TimeStamp>2009-04-07 1003</let> | <let name=data index=TimeStamp>2009-04-07 1003</let> | ||
</hide><noinclude><if not flag=including>{{:project:code/lib/data}}<call ShowBlogPostPage></if></noinclude> | </hide><noinclude><if not flag=$including>{{:project:code/lib/data}}<call ShowBlogPostPage></if></noinclude> |
Revision as of 03:28, 20 January 2013
<hide> <let name=data index=Title>The Money Situation</let> <let name=data index=User>Woozle</let> <let name=data index=TopicsUser></let> <let name=data index=TopicsGlobal>\money\bills\mortgage\Josh</let> <let name=data index=TextAbove>This is at the root of what makes me freeze up when I'm trying to tackle gi-normous to-do lists, I think: the fact that no matter how hard I work, we're still ultimately facing a situation where we may have to move again. I don't know the rules and I don't know what the options are, but here's the situation.</let> <let name=data index=TextBelow>Sandy's income is $2000 a month, plus $10k annually (birthday/Xmas gifts) in the Fall/Winter. Almost half the $10k goes to property tax (based on the most recent inflated "value" of the house -- which we never had any interest in selling and consequently we don't actually have $350k lying around from which we can draw off $4500 every year, but since the real estate industry sets the rules around here we still have to pay it), so realistically that's more like $5000/year, which makes her total income $29k/year or just over $2400/month.
Now, outgo (rough numbers):
Debt:
- mortgage: $750
- credit cards: $1253
Spending:
- utilities: $500
- purchases: $2000
Obviously the level of purchasing makes everything impossible. I've got to look at that more closely and see how much it can be trimmed... but just the minimum payments (750+1253+500 = $2503) now total more than Sandy's actual income, even without buying groceries.
We've been coasting along using the credit cards for groceries and such and paying just the minimums on the cards hoping the Josh situation would be resolved soon, because at that point two things happen: (1) expenses are reduced somewhat; (2) my time is significantly freed up, so I can spend more time working for clients (i.e. more income) or possibly get a "real" job (not easy even in the best economy and even less likely now, but still possible).
The Josh situation remains unresolved, and I don't see anything happening in the next two months, and we have used up the Christmas money and arrived (as expected) at the point where we don't quite have enough to pay the minimum charges on the credit cards.
2009-04-07 update (started typing on 04/06): I wasn't done typing this, but a new event has pushed the Date With Disaster off another month or so: Sandy's mutual fund sent a letter warning that they were going to close one of her two accounts because it fell below $1000, so we decided to cash the whole thing in (a little over $2000) and use that to finish off this month's bills. Next month, I think we need to lock up the credit cards, go to paying cash (Visa check card) for everything, and send hardship letters to all the credit card companies.
I was in the process of contacting a credit counseling agency, but the one I chose has made things difficult by not responding to my email and insisting on using the phone for everything. Maybe I won't bother with them, or maybe I'll look for someone else.
Also, we came up with the idea of setting up a computer for me in Mel's room so I could work uninterrupted during certain parts of the week and make more money. Right now, I don't have any allocated spans of time during which I can reasonably expect not to be interrupted, so it's very difficult to even start concentrating on a project.
- Down side: more expenses (~$500 for a completely new system, hard drive, and monitor); some time required to assemble and get it set up
- Up side: excuse to buy a new LCD monitor and a system board even faster than this one (woo-hoo!) if I can find one for cheap (awww...).
Also also, if we can get SSI for Josh, that's another income stream; we've been told it may include back-payments, though not all in a lump. We'll see what happens with that.
I knocked our telecomm expenses down by $50-$70 by reducing DirecTV to the basic plan ($60 -> $30), reducing the Vonage line from "unlimited" to "500 minutes" ($30->$20) and moving the Verizon wired phone line over to Vonage as well, under the same plan ($50 -> $20). We desperately need to get rid of the storage unit ($100/mo) but making room in the house is taking a lot of time (which takes away from money-making activities). I'm thinking I can get rid of vbz.net's Vonage line completely (~$20), at least until vbz has staff who would like to have a phone again.
A debt-consolidation loan of $160k at 5% (which seems to be the going rate at the moment) comes to about $1100/month, putting total non-discretionary expenses at about $1600, which leaves discretionary spending at about $800/month plus whatever I can bring in.
Maybe that's the way to go.
Does anyone have any thoughts on this?
2009-04-07 17:09 update: it looks like consolidating the credit cards into the mortgage and refinancing at "today's low rates" (5%) means that all the cards together would only add another $100-$150 on top of the mortgage monthly amount. This would leave us with something like $1200 in discretionary spending, which ought to be enough. The exact numbers will depend on how much they have to jack up the interest rate due to Sandy's jobless status. (~3 years of on-time payments ought to count for something, I should think, and perhaps they will.)
I submitted the application online (yay for online applications!) at CountryWide, and we'll just have to see what happens. </let>
<let name=data index=TimeStamp>2009-04-07 1003</let> </hide><if not flag=$including>==GetLinkBrief()== <func GetLinkBrief>
<let name=links.out>
- </let>
<let name=links.out append copy=data[Date] /> <let name=links.out append> :[[</let> <let name=links.out append copy=pg_title /> <let name=links.out append>|more]]:[[Talk:</let> <let name=links.out append copy=pg_title /> <let name=links.out append>|talk]]: </let>
<if flag=$data[wpage]> <let name=wtLink>[[</let> <let name=wtLink append copy=data[wpage] /> <let name=wtLink append>|</let> <let name=wtLink append copy=data[Title] /> <let name=wtLink append>]] § </let> </if><else> <let name=wtLink>[</let> <let name=wtLink append copy=data[URL] /> <let name=wtLink append> </let> <let name=wtLink append copy=data[Title] /> <let name=wtLink append>]</let> </else>
<let name=links.out append copy=wtLink /> <let name=links.out append> § </let>
<let name=text copy=data[TextShort] /> <if flag=$text></if><else> <let name=text copy=data[Text] len=200 /> </else>
<let name=links.out append copy=text trim /> <let name=links.out append> [[</let> <let name=links.out append copy=pg_title /> <let name=links.out append>|more...]]</let>
</func>
ShowRecentLinks(max)
<func ShowRecentLinks max>
<let name=idx /> <let name=including val=1 /> <for table="qryW3_Titles_Catgs" where="(cl_to='Data/links') AND (page_namespace=0)" sort="page_title DESC" limit=$max name=pg hide> <let name=pg_title val="@row.page_title" /> <let name=idx inc /> <if not flag=$noLoad> <load page=$pg_title /> </if> <if flag=$data[Title]> <call GetLinkBrief /> </if><else> <let name=links.out>
- [[</let>
<let name=links.out append copy=pg_title /> <let name=links.out append>]]</let> </else> <let name=links.rtn append copy=links.out /> <let name=links.out /> <let name=data /> </for>
</func>
ShowTopic(iTopic,iMax)
This should eventually be able to show data in any format: news links, blog entries... <func ShowTopic iTopic iMax>
<let name=idx /> <let name=including val=1 /> <let name=topic farg=iTopic /> <if not flag=$topic> <let name=topic parse>Woozle/blog/2009-04-07 1003 The Money Situation</let> </if> <let name=topic self with="_"> </let>
<let name=sqlWhere>(page_namespace=0) AND (cl_to='</let> <let name=sqlWhere append copy=topic /> <let name=sqlWhere append>')</let>
<for table="qryW3_Titles_Catgs" where=$sqlWhere sort="page_title DESC" name=pg empty="no items yet" limit=$iMax hide> <let name=pg_title val="@row.page_title" /> <let name=idx inc /> <if not flag=$noLoad> <load page=$pg_title local /> </if> <if flag=$data[Title]> <call GetBrief /> </if><else> <let name=links.out>
- [[</let>
<let name=links.out append copy=pg_title /> <let name=links.out append>]]</let> </else> <let name=exclude val=0 /> <let name=links.rtn append copy=links.out /> <let name=data null /> </for>
</func>
GetBlogEntryBrief()
<func GetBlogEntryBrief> INPUT:
data[*] - from blog entry page pg_name - full name of page being displayed (including namespace)
<if not flag=$noLoad> <load page=$pg_name /> </if>
<let name=e.out>
- </let>
<let name=e.out append copy=data[TimeStamp] /> <let name=e.out append> [[</let> <let name=e.out append copy=pg_name /> <let name=e.out append>|</let> <let name=e.out append copy=data[Title] /> <let name=e.out append>]] § </let>
<let name=text copy=data[TextAbove] /> <if flag=$text></if><else> <let name=text copy=data[TextBelow] len=200 /> </else>
<let name=e.out append copy=text trim /> <let name=e.out append> [[</let> <let name=e.out append copy=pg_name /> <let name=e.out append>|more...]]</let>
</func>
GetBlogEntryBriefChrisFormat()
<func GetBlogEntryBriefChrisFormat> INPUT:
data[*] - from blog entry page pg_name - full name of page being displayed (including namespace)
<if not flag=$noLoad> <load page=$pg_name /> </if>
<let name=e.out></let> <let name=e.out append>[[</let> <let name=e.out append copy=pg_name /> <let name=e.out append>|</let> <let name=e.out append copy=data[Title] /> <let name=e.out append>]], </let> <let name=e.out append copy=data[TimeStamp] /> <let name=e.out append>
</let>
<let name=text copy=data[TextAbove] /> <if flag=$text></if><else> <let name=text copy=data[TextBelow] len=200 /> </else>
<let name=e.out append copy=text trim /> <let name=e.out append> [[</let> <let name=e.out append copy=pg_name /> <let name=e.out append>|more...]]
</let> </func>
GetBlogEntryFull()
<func GetBlogEntryFull> INPUT:
data[*] - from blog entry page pg_name - full name of page being displayed (including namespace)
<if not flag=$noLoad> <load page=$pg_name /> </if>
<let name=e.out>
==</let>
<let name=e.out append copy=data[Title] /> <let name=e.out append>==
posted at </let>
<let name=e.out append copy=data[TimeStamp] /> <let name=e.out append>
</let>
<let name=e.out append copy=data[TextAbove] /> <let name=e.out append copy=BlogFoldDivider /> <let name=e.out append copy=data[TextBelow] />
-- category display
<let name=e.out append copy=BlogFoldDivider /> <let name=e.out append>
Categories –</let>
<let name=noCat val=1 /> <call MakeBlogCatgs /> <if flag=$wtCatGlob> <let name=e.out append> general: </let> <let name=e.out append copy=wtCatGlob> </if> <if flag=$wtCatUser> <let name=e.out append> user: </let> <let name=e.out append copy=wtCatUser> </if> <let name=e.out append></let>
</let> </func>
ShowRecentBlogEntries(max,funcEntry)
<func ShowRecentBlogEntries max funcEntry>
<let name=idx /> <if not flag=$funcEntry> <let name=funcEntry val="GetBlogEntryBrief" /> </if> <let name=including val=1 /> <for table="qryW3_Titles_Catgs" where="(cl_to='Data/blog/post')" sort="page_title DESC" limit=$max name=pg hide> <let name=pg_nspace_code>{{ns:</let> <let name=pg_nspace_code append val=@row.page_namespace /> <let name=pg_nspace_code append>}}</let> <let name=pg_nspace copy=pg_nspace_code parse /> <let name=pg_title val="@row.page_title" /> <let name=pg_name copy=pg_nspace /> <let name=pg_name append>:</let> <let name=pg_name append copy=pg_title /> <let name=idx inc /> <call func=$funcEntry /> <let name=e.rtn append copy=e.out /> <let name=data /> </for>
</func>
ShowRecentBlogEntriesFull(max)
<func ShowRecentBlogEntriesFull max>
<let name=idx /> <let name=including val=1 /> <for table="qryW3_Titles_Catgs" where="(cl_to='Data/blog/post')" sort="page_title DESC" limit=$max name=pg hide> <let name=pg_nspace_code>{{ns:</let> <let name=pg_nspace_code append val=@row.page_namespace /> <let name=pg_nspace_code append>}}</let> <let name=pg_nspace copy=pg_nspace_code parse /> <let name=pg_title val="@row.page_title" /> <let name=pg_name copy=pg_nspace /> <let name=pg_name append>:</let> <let name=pg_name append copy=pg_title /> <let name=idx inc /> <call GetBlogEntryFull /> <let name=e.rtn append copy=e.out /> <let name=data /> </for>
</func>
ShowRecentBlogEntriesByTopic(max,topic)
<func ShowRecentBlogEntriesByTopic max topic>
<let name=topic self with="_"> </let>
<let name=sql>(cl_to='</let> <let name=sql>SELECT q1.* FROM qryW3_Titles_Catgs AS q1 LEFT JOIN qryW3_Titles_Catgs AS q2 ON q1.cl_from=q2.cl_from WHERE (q1.cl_to='Data/blog/post') AND (q2.cl_to='</let> <let name=sql append copy=topic /> <let name=sql append>') ORDER BY page_title DESC LIMIT </let> <let name=sql append copy=max />
<for sql=$sql> <let name=pg_nspace_code>{{ns:</let> <let name=pg_nspace_code append val=@row.page_namespace /> <let name=pg_nspace_code append>}}</let> <let name=pg_nspace copy=pg_nspace_code parse /> <let name=pg_title val="@row.page_title" /> <let name=pg_name copy=pg_nspace /> <let name=pg_name append>:</let> <let name=pg_name append copy=pg_title /> <let name=idx inc /> <let name=data[Title] null /> <load page=$pg_name /> <if flag=$data[Title]> <call GetBlogEntryBrief /> <let name=e.rtn append copy=e.out /> </if> <let name=data /> </for>
</func>
MakeBlogCatgs()
<func MakeBlogCatgs>
<let name=catUser copy=data[TopicsUser] /> <let name=catGlob copy=data[TopicsGlobal] /> <let name=wtCatUser null /> <xploop list=$catUser var=topic> <let name=wtCatUser append> [[user:</let> <let name=wtCatUser append copy=data[User] /> <let name=wtCatUser append>/</let> <let name=wtCatUser append copy=topic /> <let name=wtCatUser append>|</let> <let name=wtCatUser append copy=topic /> <let name=wtCatUser append>]]</let>
<let name=wtCatUser append>[[:category:user/</let> <let name=wtCatUser append copy=data[User] /> <let name=wtCatUser append>/</let> <let name=wtCatUser append copy=topic /> <let name=wtCatUser append>|c]]</let>
<if not flag=$noCat> <let name=wtCatUser append> [[category:user/</let> <let name=wtCatUser append copy=data[User] /> <let name=wtCatUser append>/</let> <let name=wtCatUser append copy=topic /> <let name=wtCatUser append>|</let> <let name=wtCatUser append copy=topic /> <let name=wtCatUser append>]]</let> </if> </xploop> <let name=wtCatGlob null /> <xploop list=$catGlob var=topic> <let name=wtCatGlob append> [[</let> <let name=wtCatGlob append copy=topic /> <let name=wtCatGlob append>]]</let>
<let name=wtCatGlob append>[[:category:</let> <let name=wtCatGlob append copy=topic /> <let name=wtCatGlob append>|c]]</let>
<if not flag=$noCat> <let name=wtCatGlob append>[[category:</let> <let name=wtCatGlob append copy=topic /> <let name=wtCatGlob append>]]</let> </if>
</xploop>
</func>
ShowBlogPostPage()
<func ShowBlogPostPage>
<let name=PostDate copy=data[TimeStamp] len=10 /> <let name=wtDate>[[</let> <let name=wtDate append copy=PostDate /> <let name=wtDate append>]] ([[:category:</let> <let name=wtDate append copy=PostDate /> <let name=wtDate append>|category]])</let>
<let name=wtDate append>[[category:</let> <let name=wtDate append copy=PostDate /> <let name=wtDate append>]]</let>
<let name=wtTitle>
==</let>
<let name=wtTitle append copy=data[Title] /> <let name=wtTitle append>==</let> <if flag=$data[TextAbove]> <let name=wtTextBrief>
In Brief </let>
<let name=wtTextFull>
The Rest </let>
<let name=wtTextBrief append copy=data[TextAbove] /> </if><else> <let name=wtTextBrief null /> </else> <let name=wtTextFull append copy=data[TextBelow] />
<call MakeBlogCatgs />
General categories for blog posts: -- the fact that it's a post:
<let name=wtCatGlob append></let>
-- date:
<let name=wtCatGlob append>[[category:</let> <let name=wtCatGlob append copy=PostDate len=10 /> -- just the date for the category <let name=wtCatGlob append>|]]</let> <let name=wtCatGlob append copy=PostDate /> -- full timestamp for sorting <let name=wtCatGlob append>]]</let>
<let name=user copy=data[User] /> <if flag=$user> <let name=wtUser>[[user:</let> <let name=wtUser append copy=user /> <let name=wtUser append>|</let> <let name=wtUser append copy=user /> <let name=wtUser append>]]</let> </if><else> <let name=wtUser>unknown</let> </else> <echo>
<get name=wtTitle /> <get name=data index=Text /><get name=wtTextBrief /><get name=wtTextFull />
</func>
ShowBlogPostPage_v2()
<func ShowBlogPostPage_v2>
<let name=PostDate copy=data[TimeStamp] len=10 /> <let name=wtDate>[[</let> <let name=wtDate append copy=PostDate /> <let name=wtDate append>]] ([[:category:</let> <let name=wtDate append copy=PostDate /> <let name=wtDate append>|category]])</let>
<let name=wtDate append>[[category:</let> <let name=wtDate append copy=PostDate /> <let name=wtDate append>]]</let>
<let name=wtTitle>
==</let>
<let name=wtTitle append copy=data[Title] /> <let name=wtTitle append>==</let> <if flag=$data[TextAbove]> <let name=wtTextBrief>
In Brief </let>
<let name=wtTextFull>
The Rest </let>
<let name=wtTextBrief append copy=data[TextAbove] /> </if><else> <let name=wtTextBrief null /> </else> <let name=wtTextFull append copy=data[TextBelow] />
<call MakeBlogCatgs />
General categories for blog posts: -- the fact that it's a post:
<let name=wtCatGlob append></let>
-- date:
<let name=wtCatGlob append>[[category:</let> <let name=wtCatGlob append copy=PostDate len=10 /> -- just the date for the category <let name=wtCatGlob append>|]]</let> <let name=wtCatGlob append copy=PostDate /> -- full timestamp for sorting <let name=wtCatGlob append>]]</let>
<let name=user copy=data[User] /> <if flag=$user> <let name=wtUser>[[user:</let> <let name=wtUser append copy=user /> <let name=wtUser append>|</let> <let name=wtUser append copy=user /> <let name=wtUser append>]]</let> </if><else> <let name=wtUser>unknown</let> </else> <echo>
<get name=wtTitle /> <get name=data index=Text /><get name=wtTextBrief /><get name=wtTextFull />
Specs | |
Timestamp: | <get name=PostDate /> |
Author: | <get name=wtUser /> |
User topics: | <get name=wtCatUser /> |
Global topics: | <get name=wtCatGlob /> |
</func>
ShowBlogPostPage_v1()
<func ShowBlogPostPage_v1>
<let name=PostDate copy=data[TimeStamp] len=10 /> <let name=wtDate>[[</let> <let name=wtDate append copy=PostDate /> <let name=wtDate append>]] ([[:category:</let> <let name=wtDate append copy=PostDate /> <let name=wtDate append>|category]])</let>
<let name=wtDate append>[[category:</let> <let name=wtDate append copy=PostDate /> <let name=wtDate append>]]</let>
<let name=wtTitle>
==</let>
<let name=wtTitle append copy=data[Title] /> <let name=wtTitle append>==</let> <if flag=$data[TextAbove]> <let name=wtTextBrief>
In Brief
</let>
<let name=wtTextFull>
Full Story
</let>
<let name=wtTextBrief append copy=data[TextAbove] /> </if><else> <let name=wtTextBrief null /> </else> <let name=wtTextFull append copy=data[TextBelow] />
<call MakeBlogCatgs />
General categories for blog posts: -- the fact that it's a post:
<let name=wtCatGlob append></let>
-- date:
<let name=wtCatGlob append>[[category:</let> <let name=wtCatGlob append copy=PostDate len=10 /> -- just the date for the category <let name=wtCatGlob append>|]]</let> <let name=wtCatGlob append copy=PostDate /> -- full timestamp for sorting <let name=wtCatGlob append>]]</let>
<let name=user copy=data[User] /> <if flag=$user> <let name=wtUser>[[user:</let> <let name=wtUser append copy=user /> <let name=wtUser append>|</let> <let name=wtUser append copy=user /> <let name=wtUser append>]]</let> </if><else> <let name=wtUser>unknown</let> </else> <echo>
Specs
Timestamp: | <get name=PostDate /> |
Author: | <get name=wtUser /> |
User topics: | <get name=wtCatUser /> |
Global topics: | <get name=wtCatGlob /> |
<get name=wtTitle /> <get name=data index=Text /><get name=wtTextBrief /><get name=wtTextFull /></echo> </func><call ShowBlogPostPage></if>