Category Archives: geek

Building tools for myself: grocery receipt tracking

Today was another good day for writing code. I finally built that quick-feedback receipt item tracker I’ve been thinking about for a while. I’d built a simpler version into Quantified Awesome (not linked from the main interface, since it was very rough), but I found the browser roundtrip too disruptive. Today’s implementation uses Angular for faster responses. For good measure, I’ve got a NodeJS server proxying the requests to either my local development copy of Quantified Awesome or to my production version.

Here’s a screenshot:

2015-05-26 22_21_38-sachachua.com_8080_receipt

On the left side, I have a scanned receipt in Autodesk Sketchbook Pro (or a paper receipt on the side). On the right, my autocompleting tracking interface. It’s not pretty, but it fits what I have in my head. I like the way that typing in the first few characters of the receipt line item is often enough to uniquely identify the receipt item type and retrieve the price history. This means that as I track, I also get a sense of the price trends and what a good sale is.

Aside from keeping track of the prices, I’m also looking forward to analyzing our consumption by category on a more regular basis. I did a few analyses along those lines before (here’s a year of data), but it might be neat to have that kind of feedback on a daily basis. Entering my receipt archive was easy. I ended up typing in the receipts from here to January because it was fun. =)

Next up: fast categorization, some graphing… I’m also looking forward to making a quick price book interface. Hmm, if I dust off that grocery list tool I had started building into Quantified Aweome and I integrate the price book, that might be handy.

Thinking about adaptive menus for tracking

I’ve been thinking about building more tools for myself. Some of the ideas I’ve been playing around with are around simplifying activity tracking further, possibly getting it to the point where it suggests things for me to do when my brain is fuzzy.

My current tracking system has two tiers. For my most-common activities, I use a custom menu that I can open from my phone’s home screen. I created the menu using Tasker. It’s easy to configure menu items to update my Quantified Awesome activity records as well as run other logic on my phone. For example:

  • “Eat dinner” creates an activity record for “Dinner”, then starts MyFitnessPal so that I can log the meal
  • “Walk home” creates an activity record for “Walk – Other”, then starts step-by-step navigation of the walk back to my house
  • “Sleep” creates an activity record, then launches Sleep as Android
  • “Ni No Kuni” creates an activity record, prompts me for what I want to do after an hour of playing, opens a page with tips for the game, and then reminds me of my plans after that hour passes

One advantage of using something on my phone is that I don’t have to wait for the initial web page from Quantified Awesome to load. My keyboard occasionally takes a while to come up, too, so the menu-based interface gets around that as well. Also, as I get the hang of using Tasker, I can set up more intelligent processes. The menu has a link to open the web version, so if I want to track something less frequent, I can always use the web interface.

In the web interface, I usually type a substring to identify the category I want to track. For example, “kitch” results in an activity record for “Clean the kitchen”. I use this interface if I need to backdate entries (ex: -5m), too.

In addition to the two interfaces above, I’ve been thinking about taking advantage of the predictability of my schedule.

Research into adaptive menus turns up quite a few design ideas and considerations. Since I’m building this for myself, I can get around many of the challenges of adaptive interfaces, such as privacy and predictability. I’m curious about the following options:

  • Text-based input with minimal cues, as part of a more powerful command line
  • Context-sensitive menu with a handful of items (3-4, with a link to more): I can probably suggest candidate activities based on the past two activity records. That might mean a little bit of latency as I check, though. It also means that the menu will keep shifting, so I’ll need to read it and find the item I want to click on.
    • For everyday use?
    • For really fuzzy moments?
  • Static menu of frequent items, but adaptive highlighting (ex: green or bold, or fading out other things slightly)
    • Abrupt onset, others fading in over 500ms
    • Colour?
    • Weight?
  • Split menu: frequent items on top, everything else below
    • Static
    • Adaptive
  • Hierarchy of menus: speedy, but lots of tapping
  • Cut off menu: show only the activities that come after the one I’ve just tracked

Hmm… It might be interesting to play around with different menu options. It would be good to experiment with NFC as well, especially early in the morning. =)


Shifts in my writing

Sometimes, when I sit down to draw my five index cards of the day, I have a hard time delineating five interesting thoughts – things I want to remember or share. They often seem so inward-turned.

I was thinking about the shape of my blog, too. I feel like I’ve shifted from a lot of technical posts to a lot of reflective posts. Possibly less interesting for other people, but useful to me. It’s hard to tell. These are the kinds of posts I’ve been starting to find useful in other people’s blogs, anyway, so who knows? Maybe these things are interesting for other people too.

It’s wonderful to be able to flip back through my archive and see the patterns over time. Of the 2,800+ posts in my index as of April 2015, I’d classify around 170 as mostly reflective. (Totally quick classification, just eyeballing the titles and categories in my index.) Here’s the breakdown:

Year Reflections
2008 4
2009 9
2010 20
2011 7
2012 25
2013 20
2014 59
2015 25
Grand Total 169

While writing a recent post, I searched my archives to trace the evolution of my understanding of uncertainty over several years. I can remember not having these snapshots of my inner world. When I reviewed ten years of blog posts in preparation for compiling Stories from My Twenties in 2013, I was surprised by how many technical and tip-related blog posts I skipped in favour of keeping the memories and the questions, and the sense of things missing from my memories. Maybe that’s why I wrote almost three times the number of reflective posts in 2014 as I did in the previous year. 2014 was also the year I switched the focus of my experiment from other-work to self-work, and that might have something to do with it too. I’m glad I have those thinking-out-loud, figuring-things-out posts now.

The end of April was around 33% of the way through the year, so I’m slightly ahead of last year’s reflective-post-density (expected: 20 posts, actual: 25). Comments are rare, but I’ve learned a lot from them.

I’m fascinated by the ten-year journals you can buy in bookstores. They give you ways of bumping into your old selves, noticing the differences. I like the way blogs give me a little bit more space to write, though. =) Here’s a slice of my life going through May 14:

I have shifted. I focus on different things. I like the direction I’m going in. I can imagine, years from now, getting very good at asking questions, describing and naming elusive concepts, and exploring the options. If it seems a little awkward now, that’s just the initial mediocrity I have to get through. Hmm…

2015-05-13 Emacs Hangout

Console Emacs vs GUI Emacs, keybindings, Org Mode, cooking, nyan, window management, calendars, SuperCollider Usual disclaimer: times are approximate, and the note-taker often gets distracted. =)

  • 0:00:00 Emacs configuration
  • 0:11:22 Console Emacs vs GUI Emacs? iTerm integration, mouse support, 256 colours, drop-down menus (although you can get a text one), …
  • 0:14:59 multihop TRAMP
  • 0:16:01 keybinding philosophies, Hyper and Super
  • 0:22:15 Remapping keys on Mac OS X (dealing with separate Alt and Meta)
  • 0:28:04 Org and mobile
  • 0:30:25 emulating hyper and super keys
  • 0:32:15 orgzly
  • 0:33:33 Org Mode and cooking, org-map-entries
  • 0:39:31 nyan
  • 0:43:04 One window, workgroups
  • 0:46:56 winner-mode
  • 0:53:30 rinari, zeus, ruby
  • 0:54:53 neotree
  • 0:58:22 keyboards
  • 1:03:24 conference
  • 1:09:22 calw; also, something about rainbow-mode, and palette, and then later Org Mode
  • 1:23:13 SuperCollider, Overtone, yasnippet
  • 1:45:13 blackink?

Text chat: Here’s the gif I have as my nyan

Sahil Sinha 9:23 PM
Jack G. 9:24 PM (setq mac-right-command-modifier ‘hyper)<br>(setq mac-right-option-modifier ‘super) (global-set-key (kbd “H-h”) ‘er/expand-region
George Jones 9:32 PM
Jack G. 9:36 PM nyan Cranky_walk.gif
Jack G. 9:42 PM
me 9:42 PM ?
Daniel H 9:46 PM
me 9:48 PM winner-mode
George Jones 9:59 PM
George Jones 9:59 PM Xah Lee writes a LOT about keyboards
Jack G. 10:02 PM
Bogdan Popa 10:10 PM
me 10:11 PM org-gcal
Daniel H 10:12 PM
George Jones 10:12 PM having real trouble hearing…
George Jones 10:20 PM when you open a PDF in docview you can get the text with ^C^T (default bindings)
Jack G. 10:21 PM Thanks George!
George Jones 10:21 PM C-c C-t runs the command doc-view-open-text
me 10:27 PM
sai tejaa Cluri 10:27 PM hi
Jack G. 10:37 PM link
me 10:37 PM This was a fun demo of Org Mode and SuperCollider
Levi Strope 10:40 PM Jack your audio is crystal clear now… whatever that change was
Jack G. 10:45 PM
me 10:48 PM

What kind of tribe do I want to build around Quantified Self in Toronto?

Attendance at the Quantified Self Toronto meetup has been low lately, and it’s a good time to think about revitalizing or even redesigning the community.

2015-05-11f Thinking about Quantified Self Toronto turnover -- index card #quantified #meetup

2015-05-11f Thinking about Quantified Self Toronto turnover – index card #quantified #meetup

The way it is now works okay for newcomers. I imagine the experience for newcomers is mostly like: Wow, I’m not alone! I’m not weird! There are other people who track stuff! (I know, I get that feeling each time I go too. =) ) If they work up the courage to share what they’ve been learning, they often pick up plenty of tips and ideas, and they can connect with other people tracking similar things.

From regulars, it’s great to hear updates or find out about other things they’re tracking.

The talks do tend to be a little repetitive. Often it’s about people sharing data collected using apps or devices with predefined visualizations, and the occasional self-promotional bit. Sometimes we get new analyses or unconventional experiments, and those are the kinds of talks I enjoy the most.

The repetition is understandable – good, even. I think that’s mostly because each person has to go through an individual journey. Even if two people present the same topic and have similar conclusions, it’s good to recognize each of their experiences.

Still, it might be interesting to think about how we can increase the value for regulars and long-time trackers…

Mmm. If I could selfishly redesign this community to be even better-suited to my interests, what would it be like?

I go to Quantified Self Toronto meetups because I like the kind of people who use data to make better decisions about their lives. I particularly like it when someone’s curious about something off the beaten track, whether they’re collecting data on paper or they’ve built their own tools. Experimental manipulation is also interesting for me. I also like having the occasional nudge to design, conduct, and report on my little experiments. I’ve talked about a lot of odd things over the years (like cat litter box use, and more recently, sewing), and I like resonating with people in an unexpected way.

If I were to tilt Quantified Self Toronto to be something more personally useful for me, I might focus on:

  • Getting more people to the point of being able to explore and analyze their own data instead of relying on apps
    • Learning to notice when you’re confused, and thinking of ways to explore that uncertainty
    • Tracking on paper
    • Analyzing with spreadsheets and graphs
  • Connecting with other toolmakers so that we can bounce ideas around
  • Developing my own skills in data collection, analysis, and visualization
    • Android programming or scripting?
    • Electronics?
    • R?
  • Trying out other people’s experiments so that I can share my experiences and notes with them
  • Researching unconventional experiments/measurements using and similar blogs, and drawing inspiration from those

At the Quantified Self Conference I went to in 2012, I gravitated towards people who tracked their own questions or even built their own tools. I don’t expect the majority of Quantified Self Toronto to be creatively technical, but it might be interesting to attract and retain a core of people like that. What would make 2-3 hours worth it for them, and what would make it more worthwhile for me? Alternatively, what are other ways I could build that kind of tribe? I think education, inspiration, and shared experiments might be interesting to play with. Hmm… The same combination could help encourage newcomers to develop along those lines, too. Might be worth looking into.

Quantified Self: The numbers on sewing

Some people love shopping. That’s why “retail therapy” is a thing. Other people hate shopping, and try to do it as little as possible. It’s hard to find anything I like, even after I talk myself into being okay with buying things at full retail price, and even after adjusting my price range higher and higher.

I tried desensitizing myself by going out shopping without a particular goal in mind, just familiarizing myself with the colours and styles, and being open to buying something if it appealed to me. Several weekends of this turned up a few pairs of pants and T-shirts, but no epiphanies.

I started looking into alternatives. It seems wardrobe stylists work on commission, so you should plan to spend a good chunk of money – maybe $500 or $1000, which was more than I wanted to do at that moment. The custom dressmakers I asked quoted me rates around $250 for a single garment (although I didn’t ask if they’d reduce it for a super-simple pattern). Online tailors had very mixed reviews.

I figured it would be worth giving sewing a try. I didn’t need anything fancy, after all. I spent a few hours looking around for the simplest free pattern for a top, and I settled on the Colette Sorbetto pattern. I sewed a few, and then simplified the pattern further by removing the pleat. I sewed a few more. When I learned how to use the laser cutter, I used the laser to quickly and accurately cut even more pieces for sewing.

Let’s talk numbers.

The typical shirts I like cost between $40 and $120 at the store, but take hours and hours to shop for. It’s also a tiring and frustrating experience.

Broadcloth costs $2 a yard. Quilting fabric and cotton shirting tend to be around $12 to $14 a yard. The fanciest cotton I can get (in terms of fabric, not just design) seems to be Liberty cotton lawn, at $24 a yard. I wasn’t sure if it would be worth it, but it is nicely breathable, so maybe. I typically buy 1.5 yards per top, although this leaves me with lots of excess fabric. I could probably fit a top in 1 yard.

I’ve spent about $130 for the 16 tops I’ve made so far, or an average of $8 per top. I expect future tops to cost between $15 to $40, depending on fabric quality and whether the design is one-way.

The bulk of the cost is really time. Since I started in February, I’ve spent 105 hours sewing: picking out fabric, cutting, sewing, thinking about patterns and plans. This is an average of 7 hours per top, which feels a bit on the high side. I think most of it is indecisiveness about fabric. =) Prepping and cutting the fabric on the laser takes maybe 20 minutes total, and once that’s done, I can sew a top in about 2 hours.

You can analyze time trade-offs by assigning an arbitrary value to them. You might use minimum wage, or the replacement cost of hiring someone to take on some of your lower-value activities for you. For example, you might use $15/hour as a replacement cost, since that seems to be the going rate for a housekeeper in Toronto. If so, then my tops have cost an average of $110 or so. I expect future tops to use nicer fabric but require less time, so the estimated cost will likely be $75-100 per top.

Alternatively, you could use a higher rate – say, my consulting rate – since I could theoretically be working instead of sewing. But I don’t particularly feel like working more. If I did, there would be other activities I would cut back on first, like playing video games, or reading fiction.

Where did the time come from? It’s hard to say, since I was changing some of my other routines too. Anyway, I analyzed a weekly summary of my time records, correlating different categories with the time I tracked under sewing.

Category Correlational coefficient
Business – Build – Learn -0.94
Business – Build – Quantified Awesome -0.92
Discretionary – Productive – Japanese -0.82
Business – Build – Drawing -0.64
Discretionary – Play – Read – Fiction -0.61

I shifted away from learning, coding, and Japanese review, and I reduced my drawing and reading time. They’re all discretionary activities, so it’s not like I was working less or sleeping less in order to sew. (I actually worked a little more than I did before.)

I’ve come to think of sewing as fun, so I might consider the time as “free.” In fact, it might even have a positive effect. Making things myself helps me develop skills and enables imagination, so it’s like education. Cost-wise, it feels like spending on fabric and time is a definite win compared to, say, buying fast fashion tops that may or may not be ethically sourced.

What did I learn?

I learned that it takes surprisingly little time and money to develop a comfortable level of skill when repeating the same sewing pattern. I started sewing on Feb 11. On Feb 23, after about six hours total, I wore my first top. Here you can see DIY taking over the clothes I wear:

Week starting Sat Sun Mon Tue Wed Thu Fri
Feb 7 x x x x x x x
Feb 14 x x x x x x x
Feb 21 x x mine x x mine x
Feb 28 x x x mine x x x
Mar 7 x x x mine mine mine mine
Mar 14 mine x mine mine mine mine mine
Mar 21 mine mine mine mine mine mine mine
Mar 28 x mine mine mine x mine mine
Apr 4 x x mine mine x mine mine
Apr 11 x mine mine mine mine mine mine
Apr 18 mine mine mine mine mine mine mine
Apr 25 mine mine mine mine mine mine mine
May 2 x x mine mine mine mine mine

I learned that I really enjoy the things you can’t buy with money. There’s this feeling of freedom that comes with knowing that I don’t have to rely on manufacturers and retailers to make things I like. I might even be able to come up with things that I wouldn’t be able to find in stores. If things wear out, I can repair or replace them.

I have two more tops on the go, so that should bring me to a total of eleven cotton/polyester tops and seven 100% cotton ones. I think I’ll hold off on sewing more tops after that. Maybe I’ll sew containers and bags to use up my scraps, and then I’ll think about sewing other things I wear. I’m not interested in sewing things for anyone else (aside from family, maybe), so don’t bother asking me. <laugh>

Anyway, it was a pleasant surprise to find out that it was easy to reduce the high-stress, low-value activity of shopping with something I enjoy much more. =)