{"id":3129,"date":"2015-01-31T15:49:22","date_gmt":"2015-01-31T20:49:22","guid":{"rendered":"http:\/\/journal2.alanv.org\/?p=3129"},"modified":"2016-05-31T17:46:52","modified_gmt":"2016-05-31T21:46:52","slug":"life-work-expenses","status":"publish","type":"post","link":"https:\/\/journal2.alanv.org\/?p=3129","title":{"rendered":"Life, climbing, work, expenses"},"content":{"rendered":"<p><a href=\"http:\/\/life.alanv.org\">My photo journal<\/a> has been updated to bring it up to today.<br \/>\nAfter the holidays, life has returned to its usual habit of climbing on Tuesday, board games on Thursday, and climbing (plus food) on Friday. It&#8217;s a nice routine, and it means I get out of the house, so that&#8217;s good.<br \/>\nClimbing and gaming photos from January have also made it up at <a href=\"http:\/\/photos2.alanv.org\">photos<\/a>.<br \/>\n<img decoding=\"async\" src=\"http:\/\/photos2.alanv.org\/knowngalleries\/RockClimbing115\/DSC_6471.jpg\"><br \/>\nTraverse party!<br \/>\n<img decoding=\"async\" src=\"http:\/\/junk.alanv.org\/images\/kartikclimb.gif\" \/><br \/>\n<img decoding=\"async\" src=\"http:\/\/junk.alanv.org\/images\/michaelclimb.gif\" \/><\/p>\n<p>I made a bad thing at work. During some refactoring for a feature I built for the last release, I apparently failed to notice that the class I was pulling code out of was a singleton, so I added instance variables in the base class. The feature in question was a login feature, so the end result was a concurrency bug where users could get logged in as other users.<br \/>\nOops.<br \/>\nLesson learned: Singletons are dangerous. Be careful when using them and probably avoid them for things that don&#8217;t want state to be shared (like a global whitelist or something), even if they don&#8217;t currently have any state.<\/p>\n<p>I&#8217;ve belatedly crunched all my expenses from the past year. As expected, 2014 is the year that breaks my spending trend: I spent $11,664.02 in 2011, $12,356.83 in 2012, $13,698.12 in 2013, and $15,821.38 in 2014 (not including wedding expenses).<br \/>\nThe responsibility for this lies almost entirely in food expenditures, up around $1,200 from $3,804.70 to $5,081.34 (or a monthly average of $317.06 to $423.45). I guess I&#8217;ve been eating out a lot more or something this past year.<br \/>\nEverything else has remained fairly flat, including my $50\/month discretionary budget, which hasn&#8217;t changed since 2004. Which is surprising given the four weddings we attended in 2014 (travel expenditures of $1,390.13 in 2013 versus $1,787.94 in 2014).<br \/>\nMy share of the wedding expenses so far (save the dates, invitations, deposits, scheduled payments) total $2,953.74, which ultimately puts 2014 expenditures at $18,775.12. Not so bad. That&#8217;s still under what I was spending in SF (with an average rent and utilities of $1,200 to $1,600 compared to the current $450 to $500), even though monthly food expenditures have more than doubled since then.<\/p>\n<p>Wedding plans continue. The next big thing, I think, is the honeymoon. We&#8217;re currently planning a UK and France trip for that, which should be a lot of fun, but argh long plane flights. Hooray for things?<\/p>\n","protected":false},"excerpt":{"rendered":"<p>My photo journal has been updated to bring it up to today. After the holidays, life has returned to its usual habit of climbing on Tuesday, board games on Thursday, and climbing (plus food) on Friday. It&#8217;s a nice routine, &hellip; <a href=\"https:\/\/journal2.alanv.org\/?p=3129\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[29,24,11,31],"tags":[],"class_list":["post-3129","post","type-post","status-publish","format-standard","hentry","category-climbing","category-code","category-salesforce","category-wedding"],"_links":{"self":[{"href":"https:\/\/journal2.alanv.org\/index.php?rest_route=\/wp\/v2\/posts\/3129","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/journal2.alanv.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/journal2.alanv.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/journal2.alanv.org\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/journal2.alanv.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3129"}],"version-history":[{"count":0,"href":"https:\/\/journal2.alanv.org\/index.php?rest_route=\/wp\/v2\/posts\/3129\/revisions"}],"wp:attachment":[{"href":"https:\/\/journal2.alanv.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3129"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/journal2.alanv.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3129"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/journal2.alanv.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3129"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}