July 2015

Exploring our grocery numbers

July 3, 2015 - Categories: quantified

Analyzing my grocery data is more challenging than analyzing my time data. There’s a lot more data cleanup needed. I have to figure out obscure line items on old receipts and catch typos in both names and numbers. Then there’s figuring out how much I want to combine different items and how much I want to keep them separate.

For example, milk has different receipt item names depending on the item (size, brand, type) and the store. If I want to know how much we’ve spent on milk, I’ll use the total for all of them. But if I want to get a sense of the price history, it makes sense to track each receipt item type separately. I do this by keeping the receipt name (fixing typos as I review my data) and mapping these receipt names to a friendly name I set for myself. This way, the line “HOMO 4LI” on my receipt gets turned into “Milk” in my report. Come to think of it, maybe I should change it to “Milk, 4 L, Homogenized”…

Categories are handy for reporting too. Because of the ad-hoc way I created receipt item mappings and assigned them to categories, I ended up with inconsistent categorization. Some types of toilet paper were in the Supplies category, and some types were in the Other category. I manually reviewed the category assignments and I think I’ve gotten them sorted out.

Anyway, analyzing my data from 2013-07-01 to 2015-07-01, I see that we spend an average of \$80 per week on groceries, which sounds about right. Some of the receipts are missing and there are almost certainly other little errors in the data, but this should give me the overall picture.

I’m still trying to figure out a good way to visualize the data in order to answer the questions I’m curious about, so here are my notes along the way. X axis is date, Y axis is total cost on that day, color is how it compares to the average price it is (lower price than average = blue, higher = orange).

Milk

Milk consumption is pretty straightforward. Every week, we use around 0.6 bags of milk (~2.4L) – more when J- and her friends are over (teenagers!). The price of milk has stayed at \$4.97 per 4L, except for the time we bought a slightly more expensive type of milk (~Oct 2013) and the time in June 2014 when a smaller size was on sale, so we picked up one of those instead.

Eggs

We used to buy extra-large eggs, but the supermarket close to us stopped carrying 18-packs of those, so we switched to 18-packs of large eggs instead.

Extra-large eggs

Large eggs

The price of large eggs is stable at \$4.27 for 18. We use ~11 eggs a week.

Things we buy when they’re on sale

Canned tomatoes

We stock up on canned tomatoes when they go on sale, since they’re easy to store.

We probably use ~3 cans a month. The sale price has drifted up from \$0.88 to \$0.97, while the regular price is a little bit over \$1.50.

Butter

We haven’t bought butter at full-price in two years. The sale price for unsalted butter tends to be between \$2.77 and \$3.33, while the regular price is \$6+.

Produce

Strawberries

I like strawberries, but I stopped buying them for a long time because they seemed like such an indulgence and the sweetness tended to be hit-or-miss. This year, I gave myself permission to splurge on strawberries in season.

Bananas

We seem to go through banana phases. When we hit banana overload, we stop for a while.

The colours here are just due to floating point imprecision. Bananas have actually stayed the same price for the past two years (\$1.26/kg).

Apples

We often get gala apples:

We like picking up ambrosia apples during the rare occasions they’re available. Last winter was a good one for ambrosia apple availability.

Chicken

Whole chickens

Lots of whole chickens lately, because of the rotisserie.

Chicken quarters

Our main protein, although we also buy a fair bit of beef and pork, and chicken drumsticks/thighs when they’re on sale.

There’s more I haven’t explored yet, but I figured I’d put together these little observations along the way. =)

Weekly review: Week ending July 3, 2015

July 4, 2015 - Categories: review, weekly

I finally got my grocery visualizations sorted out enough for me to explore the data. =) Nice to be able to see the patterns. Lots of sleep, a bit of code…

Also, W- bought the early games in the Persona series during the Playstation Network sale, so we’ve been powering our way through Persona 1.

Blog posts

Sketches

Focus areas and time review

• Earn (10.6h – 42% of Business)
• Earn: E1: 1-2 days of consulting
• Bluemix: Unify requests
• Build (14.4h – 57% of Business)
• Drawing (2.4h)
• Paperwork (0.2h)
• Connect (0.0h – 0% of Business)
• Relationships (1.3h – 0%)
• Discretionary – Productive (6.6h – 3%)
• Emacs (0.0h – 0% of all)
• Get data input working again
• Writing (2.2h)
• Discretionary – Play (21.2h – 12%)
• Personal routines (31.1h – 18%)
• Unpaid work (7.8h – 4%)
• Sleep (74.9h – 44% – average of 10.7 per day)

Monthly review: June 2015

July 6, 2015 - Categories: monthly, review

Lots of sleep and fuzzy-brain this month, which was a good excuse to learn more about both. I still got a decent amount of coding done, focusing on Angular and D3 for personal projects, and digging deeper into SQL and Bluemix for consulting. I also built a small Tasker + Javascript interface for my tracking things. It’s pretty convenient, although not totally reliable (Tasker weirds out sometimes).

June was heavy on the academics for J-. We helped her with her blackjack game programming project, physics review, English presentation, and university planning. It got me thinking about my processes for solving problems and revising presentations. Anyway, she made it through to summer, and is now working at her first job.

Also, lots of video gaming this month – W-‘s influence on me, plus a resolution to take things super-easy and go into hermit mode. I completed the main storylines for Ni no Kuni, LEGO Hobbit, and LEGO Jurassic Park. Now W- and I are working our (separate) ways through Persona 1. I could probably redirect some of the time I spend gaming to, say, reading or coding, but my reading and coding time seem pretty all right too. Time is not the limiting factor here. Although maybe I can allocate some more time to drawing, and then sit with the vagueness of thought a little longer…

Summer fruits, yum!

July will still be mostly hermit mode, I think. Anyway, I’ll just keep plugging along…

Blog posts

Sketches

Time

Category Last month (%) This month (%) Avg h per week Delta (h/wk)
Sleep 35.1 39.7 67 7.7
Discretionary – Play 10.8 13.7 23 4.9
Discretionary – Family 3.0 4.5 8 2.5
Business – Earn 3.9 4.6 8 1.2
Personal 16.1 15.9 27 -0.3
Discretionary – Social 1.6 0.9 2 -1.2
Business – Connect 1.3 0.6 1 -1.2
Unpaid work 9.2 7.5 13 -2.9
Business – Build 10.5 7.8 13 -4.5
Discretionary – Productive 8.4 4.9 8 -5.9

Oookay. Lots more sleep this month, and lots more gaming. Still, lots of coding despite the drop in Discretionary – Productive…

Gradually evolving my data entry interfaces

July 7, 2015 - Categories: quantified

I’m interested in Quantified Self as a way to make better decisions through data. When I come up with a question I want to explore, I usually start off tracking things on paper or in a spreadsheet. This means I can get started quickly, and I can check whether the question is useful enough to invest in further.

Clothes

I track my clothes to make it easier to simplify my wardrobe, and to guide my purchases.

I started by writing down dates and clothing combinations on an index card in the morning. Since my index card was unlined and my brain is pretty fuzzy early in the day, I occasionally had problems with incorrect dates or items not matching up. Eventually, I built a small Rails application (Quantified Awesome) to keep track of the clothes for me. Adding pictures made it easier to select the right item. Over time, I added little conveniences like the ability to display or sort by the last time I wore something.

I often find myself backdating entries, so maybe tracking my clothes isn’t as easy or as fun as it could be. I wonder if making it more prescriptive (“Pick one of these three outfits, or select what you’re going to wear”) would help, or maybe integrating it more into my morning routine.

Time

I track my time to guide my activity decisions and remind me of how I used the time.

I used apps on my phone to track time for a few months. I started with Time Recording and a few categories, adding more as I went along. When the number of categories got to be a bit unwieldy, I moved on to Tap Log so that I could organize the buttons into a menu. Since it didn’t have the built-in time analysis I liked about Time Recording, I added time analysis tools to Quantified Awesome. After I added other features to Quantified Awesome, I shifted to using it as my time tracking and analysis tool.

For a while, I tracked time by bringing up the Quantified Awesome web interface on my phone and typing in a substring of a category name. Then I decided to look into building Emacs integration so that I could automatically clock in from my to-do list. To speed up time tracking on my phone, I used Tasker to create a menu of my most common time categories. Since fiddling with Tasker on my phone was time-consuming and a little annoying, I eventually shifted to using Tasker and Javascript. That way, I could edit my HTML file in Emacs, copy it onto my phone through Dropbox, and get my handy menu of buttons. Using Tasker also allowed me to code extra behaviour such as turning off WiFi when I go for a walk.

My next step is probably to build more time visualizations so I can see the shifts from day to day, week to week.

Groceries

I track groceries so that I can make better decisions at the supermarket and so that I can get a sense of the balance and patterns of our consumption.

I started by typing in my receipts manually, but it was a little boring. I paid a virtual assistant to enter the data from my scanned receipts. This worked out to be better than the receipt scanning companies that were out there, since I could get line-item detail in a spreadsheet shared in Dropbox. I periodically reviewed the data, fixing errors and analyzing totals.

After some time doing this and quite a few errors in the data, I decided to build my own interface for entering data more reliably. Now that I’ve built my neat interactive interface, I find it faster (and more fun!) to enter the data in myself than to scan it and send it over. I’ve been digging into visualizing the data with D3 too.

Here’s a quick demo:

My next step is probably to build a grocery list interface for it. We’re currently using OurGroceries because it syncs well between my husband’s phone and mine, but I should be able to use either straight AJAX or WebSockets to get the synchronization part working.

So those are a few examples of how I slowly improve my tracking systems, rounding off rough edges and making things a little bit simpler for myself. Web programming is super helpful for me. Backend tools like Ruby on Rails allow me to build my own tracking tools and front-end tools like Javascript allow me to create personalized interfaces and visualizations.

I tend to code the next step of improvements only when something annoys me enough for me to do something about it or when a question makes me curious enough to want to investigate it. I’ve been deliberately working on my personal projects more often, though, and that might lead to more of these little improvements. We’ll see!

Weekly review: Week ending July 10, 2015

July 12, 2015 - Categories: review, weekly

I thought I slept a lot more last week, but that’s just the recency bias talking – I guess the hackathon balanced it out! Our team won third place, which was a nice bonus for our Evil Plans. =) Aside from that, I’ve been taking it pretty easy.

Blog posts

Sketches

Focus areas and time review

• Earn (26.9h – 75% of Business)
• Participate in hackathon
• Earn: E1: 1-2 days of consulting
• Build (6.0h – 16% of Business)
• Drawing (5.7h)
• Paperwork (0.0h)
• Connect (2.9h – 8% of Business)
• Relationships (1.4h – 0%)
• Discretionary – Productive (9.6h – 5%)
• Emacs (0.0h – 0% of all)
• Announce Emacs Hangout 2015-07-15
• Scatter-plot grocery data
• Investigate semi-canned demo options
• Writing (0.2h)
• Discretionary – Play (30.3h – 18%)
• Personal routines (22.1h – 13%)
• Unpaid work (7.7h – 4%)
• Sleep (61.2h – 36% – average of 8.7 per day)

July 2015 Emacs Hangout

July 15, 2015 - Categories: emacs

We talked about Python, Org Mode, system administration, keybindings, Hydra, and other neat things. =)

I’ll probably set up another hangout mid-August, or we’ll just do the one on the 29th. We’ll see! You can follow the Emacs Conferences and Hangouts page for more information, or sign up to get e-mails for upcoming hangouts. Past Emacs Hangouts

Text chat (links edited to avoid weird wrapping things):

 me 9:18 PM literate devops link Daniel Gopar 9:34 PM config link me 9:37 PM jwiegley/dot-emacs jwiegley – haskell Howard Melman 9:48 PM cocoa-text-system Mr Swathepocalypse 9:55 PM I have to go attend to some work stuff, I look forward to watching the rest of the hangout later on. me 9:55 PM Orgstruct Mr Swathepocalypse 9:55 PM Thanks guys! me 9:55 PM Bye Dylan! my config erc erc-pass Howard Abrams 9:59 PM Did I mention how I’ve been using emacs mail to mime encode an org-mode buffer into HTML for the most awesome mail messages. Daniel Gopar 10:05 PM Have you guys used “helm-M-x”? It’s part of the helm package I believe Kaushal Modi 10:07 PM ready to share which-key package Daniel Gopar 10:10 PM Got to go. Nice talking to everyone. Kaushal Modi 10:14 PM config link Kaushal Modi 10:37 PM (setq debug-on-message “Making tags”) me 10:39 PM org-map-entries Correl Roush 10:47 PM git graphs me 10:54 PM imagex-global-sticky-mode imagex-auto-adjust-mode Kaushal Modi 10:54 PM Emacs-imagex config link example of setting ditaa and plantuml Correl Roush 10:58 PM writing specs link that has some setup steps listed out as well

Weekly review: Week ending July 17, 2015

July 19, 2015 - Categories: review, weekly

Wow, I played a lot of Borderlands 2 this week. I tend to pick up new interests in sprints, I guess. =)

Also hosted an Emacs Hangout and developed an interesting prototype at work, yay!

Blog posts

Sketches

Neat Emacs-related things:

Focus areas and time review

• Earn (13.0h – 79% of Business)
• Build (3.4h – 20% of Business)
• Drawing (3.4h)
• Paperwork (0.0h)
• Connect (0.0h – 0% of Business)
• Relationships (4.9h – 2%)
• Discretionary – Productive (4.3h – 2%)
• Emacs (2.6h – 1% of all)
• Announce Emacs Hangout 2015-07-15
• Writing (0.0h)
• Discretionary – Play (39.6h – 23%)
• Personal routines (32.7h – 19%)
• Unpaid work (4.8h – 2%)
• Sleep (65.3h – 38% – average of 9.3 per day)

What I’m learning from Borderlands 2

July 21, 2015 - Categories: life

W- and I have been playing Borderlands 2 on our PS3. It’s the first time I’ve seriously played a first-person shooter. I’m more used to turn-based games where you have a little time to think, and I’m not at all used to aiming at moving targets. Borderlands has been surprisingly enjoyable and easy to pick up, though, especially with its focus on cooperative play.

W- plays a Gunzerker, although he rarely uses the action skill to dual-wield guns. I play a Commando, and my action skill involves deploying a turret. The turret is awesome. I like how it can deal with lots of enemies by itself, especially the ones I haven’t even seen. It’s almost like having a third player – one who can aim better than I can. I use the turret a lot.

When W- and I play together, it’s a lot of fun coordinating our attacks, reviving each other as needed, then looting the area and pointing out good stuff or trading what the other person might find useful. The game’s dialogue gives us more fodder for jokes and references. Once in a while, we catch a glimpse of the developers’ thoughtfulness, such as when the characters say something clever when you spend too long looking at your inventory. It’s nice to be able to share those moments.

Sometimes I play on my own to build up more experience and get used to this style of game. Even with the turret as backup, I catch myself tensing. I notice my heartrate increasing a bit and my breath slowing down. It’s a good opportunity for me to direct my attention, breathe better, and then go ahead with the game.

I recently read The Well-played Game: A Player’s Philosophy (De Koven, 2013), an impulse-read from the stacks at the Toronto Reference Library. In one of the chapters, the author made a point about the value of practising quitting. That way, quitting loses its stigma and its emotional charge. Losing is similar, I think. In Borderlands, I catch myself thinking: “Oh no! I’m about to die!” And then I remember that death in the game is momentary and can even be handy. I respawn with whatever ammo I came in with, and the automatic save-points are never too far away. It’s useful to learn the difference between things that are scary and things that only look scary, especially when my brain is getting fooled by external cues.

It’s good to practise quitting, too. I think I’m past the initial intense sprint of new interests. Even if I haven’t finished a mission (and there’s always another mission!), I can move on to other things, like writing or reading.

I’m learning more about my play style, too. In the game, I tend to favour elemental weapons, with a sub-machine gun as my primary weapon. That said, picking enemies off with a sniper rifle makes me feel a little more accomplished. I can aim! When I’m not panicking, that is. I don’t do melee unless I have to, since it’s a little more nervewracking and I sometimes find it difficult to make sure my character is facing the right direction when attackers are moving.

I’m sure I’ll get the hang of this eventually! =)

Weekly review: Week ending July 24, 2015

July 29, 2015 - Categories: review, weekly

Dusted off an old Rails codebase I hadn’t really touched in years, since my former client and my former teammate needed a little help. Fixed a couple of bugs. It was great to have those automated tests.

I wrote some Emacs Lisp code to help me find and fill in missing entries in my daily sketch journal. Given a starting date, it checks the days since then, looking at the filenames in several directories to see if I’ve drawn a daily entry. Then it displays a list of the missing dates as buttons. When I select a date, it sets up the index card template and displays the matching time entries from my Quantified Awesome logs. It’s been pretty handy, since my journaling has been rather sporadic lately.

My sister and my mom have been writing cooking-related posts on Facebook. I realized that I like chatting about cooking, so that might be good common ground. Since I’m still sorting out issues with energy, I’m leaning more towards asynchronous communication (messages versus Skype). I like the undirected general conversation of streams, too.

Oh, and I spent a day running a few errands downtown. It was nice to be out in the sun.

Blog posts

Sketches

Focus areas and time review

• Earn: E1: 1-2 days of consulting
• Earn (8.2h – 47% of Business)
• Build (3.5h – 20% of Business)
• Drawing (3.5h)
• Paperwork (0.0h)
• Connect (5.4h – 31% of Business)
• Relationships (5.4h – 3%)
• Discretionary – Productive (2.6h – 1%)
• Emacs (0.6h – 0% of all)
• Announce Emacs Hangout 2015-07-15
• Verify Jen’s public key by calling
• Writing (1.5h)
• Discretionary – Play (41.8h – 24%)
• Personal routines (21.4h – 12%)
• Unpaid work (17.5h – 10%)
• Sleep (62.2h – 37% – average of 8.9 per day)

Pleasure and utility

July 31, 2015 - Categories: reflection

A friend mentioned that the Venn diagram in “Your Life in Weeks” resonated with him. The diagram focused on the intersection of what you enjoy and what builds your future: try to spend your time on activities that do both; one or the other is okay, but if something doesn’t address either of those, you should probably stop doing it.

While reflecting on the diagram, I realized that I prefer an X-Y chart instead. It reminds me that there’s a mix of pleasure and subjective utility in everything I do. Otherwise, I wouldn’t choose to do it. Pleasure and utility vary by activity, and even for a particular activity, they may vary based on factors such as time or energy. There are no hard cut-offs or fixed measurements. I can adjust things up or down with attention, too.

2015-07-25a Pleasure and utility – index card #choice #utility #pleasure #time

For example:

• I can increase my actual utility by double-checking subjective utility against what actually happened (decision reviews, etc.).
• I can increase my subjective utility by thinking about what I could get out of an activity. For example, co-op gaming turns out to be a fun way to spend time with W- and practise managing small stresses.
• I can break an activity down into the things I enjoy or find useful about it, and find similar activities that might be more enjoyable or more useful.
• I can increase the pleasure I get from a useful activity by focusing on different factors
• I can decrease the pleasure I get from an activity by focusing on the opportunity cost or thinking about what I enjoy about other activities.

Here’s where a few of my current activities are on this chart:

2015-07-25b Utility and pleasure – activities – index card #utility #pleasure #time

This reminds me a little of my reflection on leisure activities (noble, advantageous, or pleasant, following Aristotle’s distinctions). It might be useful to analyze utility (noble/advantageous) and pleasure with the extra dimension of energy/effort.

While the sweet spot of high utility and high pleasure (for me: prototyping and learning) is fun to be in, I also like spending time outside that intersection. It’s not all about “Hell, yeah! or No”. Experimenting with things that make me feel awkward or mediocre might lead to discovering an activity that I enjoy or find really useful.

Lately, I’ve been giving myself permission to focus on things I enjoy, even if they aren’t particularly useful – like playing video games in the middle of the day. At the same time, I’ve also let go of the desire to enjoy everything. Some activities are not pleasant, but they’re necessary. Even as I get through them, though, I’m happy about my growing ability to get through them. I might be annoyed for a few minutes, but I’m happy about the decisions of my past self and the results that I anticipate for my future self. I’m learning to enjoy adapting to my circumstances, even as I know those circumstances will change.

2015-07-27b Pleasure and satisfaction – index card #pleasure #philosophy

I like being able to step back and think about what I do, why I do it, and how I feel about that. Because I can influence how I feel about something, I can change why I do it, and even what I do. Through little nudges here and there, I want to make things that are good for me both easy and fun. If I can’t, I want to make them extra-useful and satisfying.