Monday, December 16, 2013

Antibiotic Overuse

This article, Antibiotic overuse: Stop the killing of beneficial bacteria, by Martin Blaser [doi:10.1038/476393a] kicked up opinions on antibiotic overuse. That article is a collection of observations, not a scientific study, but it is compelling. The CDC is also worried about antibiotic resistance, and this concern runs beyond the US with the Transatlantic Taskforce on Antimicrobial Resistance formed in 2009.

One problem is that antibiotics could be killing off beneficial bacteria for good, not temporarily as used to be believed. Furthermore, the reduction in H. pylori matches a rise in reflux and cancer. Ouch!

Some bacteria are good, and antibiotics are not selective. I've said it before ...

Tuesday, September 24, 2013

Compost Bin

I was inspired by this post to build your own compost bin from a trash can. I got a trash can with wheels already attached because the cost of the cheapest large trash can plus the heavy-duty wheels with nuts and bolts to attach to it was about the same price, in which case I'll save my time.

So far, I remember that I prefer composting to throwing everything in the garbage. I just feel uncomfortable throwing all waste in the garbage when I know some of it biodegrades nicely.

I've learned that my yard has far too many lawn clippings after a single mowing! for this 32 gallon compost bin. I probably need to build or designate a containment area for lawn clippings and leaves.

And I recently learned that the 40+ holes I drilled with my boys (who loved watching, and pulling off the plastic curlicues) was probably far too few based on this other post (echoed by MAKE as well).

A nice start, and lots more composting to go!

Wednesday, September 18, 2013

Quick and Easy Sausage Posole

I had forgotten just how much I like this posole (Southwestern stew) recipe until I made it for dinner tonight!

I started with this Sausage Posole recipe from Hillshire Farm, but following a recipe is not my forté.

All fresh ingredients were preheated to softness in the microwave before throwing in the pan to stew for an hour.
  • 2 cups chicken broth (I used what I had, chicken stock from the last time I boiled chicken)
  • 1/2 cup diced onion, pre-cooked in some of that chicken broth
  • 1 medium potato, grated, and pre-cooked in some of that chicken broth
  • 1 green pepper, diced
  • 1 cup frozen corn
  • 2 cups pinto beans (I used what I had, about half "refried" and half still beans)
  • 1/2 cup white wine, optional
  • 1 can hominy, rinsed and drained (this is my only hominy recipe, and I always keep a can on the shelf)
  • 1 can Rotel Mexican (with lime and cilantro) or Rotel Milder, including juice
  • 1/2 package of Hillshire Farms Li'l Smokies
  • 2 tsp garlic powder
  • 1 1/2 tsp chili powder (or ground cumin)
  • 1 tsp dried oregano
  • water as needed
So, like I said, make sure the fresh ingredients have been cooked until soft in the microwave, and then throw it in the pan before doing something else for a while. In my case, I was fixing dinner for the boys. Stir occasionally, adding more water as needed. And it's so tasty!

Tuesday, September 3, 2013

Lists To Do ...

I've had enough problems with Wunderlist to need to jump ship. The Android app is very large (OK, my phone's space is limited) and it loads slowly if at all. I started with a list of free Wunderlist alternatives (what I want may not be free, but I'll start here). I selected for Android AND (Online OR (Mac AND Linux)) clients AND NOT Freemium. (In some cases, like Google Tasks, I know there are many clients for Android, so I let it slide even though technically it's Online only. I want an Android client so I have offline access to my tasks when my phone doesn't have an uplink, and yes I know synchronization is hard.) So the list started as:
  • Google Tasks: Free by Google - Online
  • Simplenote: Free by Automattic - iPhone, iPad, Online
  • Producteev: Free* - Mac, iPhone, Windows, Android, Online, Blackberry
  • Todo.txt: Open Source by Gina Trapani - Mac, iPhone, iPad, Windows, Android, Linux
  • Any.DO: Free by Any.DO - iPhone, Android
  • Org-mode: Open Source by Carsten Dominik - Mac, iPhone, iPad, Windows, Android, Linux
  • Cloud Checklist: Free by Skybuffer - Online
  • allthings: Free* by welovelists - Online
  • Coolendar: Free by Fabiano Franz - iPhone, Android, Online
  • Yodiz: Free by Yodiz - Mac, iPhone, iPad, Windows, Android + Tablet, Linux, Online
  • Smthngs: Free by Valentin Shergin - Online, Android
  • TickTick: Free by Appest Limited - Mac, iPhone, Windows, Android, Linux, Chrome OS
  • One Line Todo: Free by eveningsun - Android
  • do.com: Free - iPhone, Android, Online
  • ToDo Pro: Free by Appigo, Inc. - iPhone, iPad, Android, Online
I want:
  • multiple lists (or filtered views aka smart folders),
  • tags (bonus if the application can know which are GTD contexts; not a feature in Wunderlist either),
  • easy way to re-order tasks,
  • optional due dates (or I'll keep the ones with due dates in Google Tasks, assuming Google doesn't kill it off like Reader)
So far:
  • Google Tasks: Adding dates far in the future is painful from the web interface, so I need a good client.
  • Simplenote: I already use JadeNote on my phone, but it's not to-do-specific. (last)
  • Producteev: Wait, I can't re-order tasks? Bah.
  • Todo.txt isn't going to be very different from Simplenote that I already use.
  • Any.DO: The interface wasn't compelling enough to make up for its Android footprint.
  • Org-mode: I'm worried about offline access now that I look at it again.
  • Cloud Checklist: No tags or filters, but the rest is there. The web interface doesn't seem to have a mobile view, although it's fairly responsive on my Android phone, but that does mean no offline access.
  • allthings: Worried about offline access when my phone doesn't have a data link.
  • Coolendar: I'll check it out. (middle)
  • Yodiz: It sounds like much more than I need for myself.
  • Smthngs: Whoa. Wait. This one merits serious consideration. (#1) UPDATE: It's available online and on Android, it works in offline mode, it has all the ways I like to slice and dice, except for ONE BIG ONE. I always need import and export before I put my data in a bucket, and I don't see that. I'm sad, because it's lovely and responsive, but I'd like to save myself a headache in the long run. *sigh* Strike another one from the list.
  • TickTick: The Android app is a bit large, and I'd rather see screenshots or a test mode.
  • One Line Todo: This one has Google Tasks support for the Online access I want (I hope). However, the bar is set at the Google Tasks interface, and I'd rather do better than that.
  • do.com: I don't really need deals, thanks.
  • ToDo Pro: Just for me, thanks.
  • Taskos (Task List): Thanks to Rob, I'm adding this to the list as a Google Tasks Android client. (#2)

Thursday, August 8, 2013

Intent and Impact

Sticks and stones may break my bones, but words will never hurt me.

I call Baloney on that childhood rhyme.

I want to use a simplified model of communication in this post: two people talking to each other. When Alice speaks, she has intent. When Bob listens to her, her words have an impact on him. Good communication happens when [good] intent has a matching impact. When the two don't align (as can be a problem for relationships, religious beliefs, and more), those words can get offensive. (Seriously, read It's not about The Onion.)

If the intent is good, but the impact is bad (sorry, I'm still simplifying), I need more information. Does Alice know her impact is bad? Has Alice actually been told this? Has Alice apologized, sympathized, or empathized? Has Alice thought about how to do better in the future? If the pattern of behavior is all bad impact with no visible effort to improve, it's just toxic waste [see #6].

Intent and impact are two sides of the same coin of communication.

I think intent does matter, but it's not the only thing. In a conversation with two equal participants, Alice's intent should have an equal weight compared to the impact on Bob. If Alice exhibits a pattern of undesirable impact that she hasn't improved (even if bungled), I personally care a whole lot less about her intent.

Impact matters.

UPDATE: Scientific American has a thoughtful blog post on intent versus impact titled "But I didn’t mean it!" Why it’s so hard to prioritize impacts over intents.

Cognitive Bias, continued

Another interesting case of cognitive bias (I encounter bias blind spot and introspection illusion often; this thought continued from earlier post) is mind projection fallacy. Oh, to see the world as it really is (link just for the synopsis of Heart of Darkness) ... or not!

Not Racist

I had a short but uncomfortable conversation with a former neighbor recently about the George Zimmerman verdict. His position was that Trayvon Martin would have been an immediate danger to me, so we are better off without him. The very next words out of his mouth were, "But I'm not a racist because I have black friends."

I need to find a word or phrase to describe what he said there. Logical fallacy? Syllogist fallacy? Ah, fallacy of the undistributed middle and fallacy of composition (with its compatriots hasty generalization and false analogy) are getting closer. Or some other fallacy? Inductive reasoning gives evidence, not proof, of the conclusion, and gets weaker when you add cognitive bias (like bias blind spot and introspection illusion). Just because you like specific example of category doesn't mean that you don't discriminate against general category, knowingly or unknowingly. Given our lame national culture, you really should assume otherwise.

I have many more examples of this behavior, so it's prevalent. If we're discussing broad topic (like racism), how does something else (like the race of a few of your friends) prove that you're free of the typical cultural bias of normative behavior (like discrimination)?

It's very frustrating. But I'd feel a little less frustrated if I could just shoot back, "Bah! Logical fallacy! False analogy!" or similar. Don't try that nonsense on me because I see the large holes making your argument look weak and tattered. And I don't think that's just naïve cynicism on my part.

UPDATE: LinkedIn apologizes for assuming beautiful women can't also be engineers. Does this mean LinkedIn would not have to apologize if the woman in the picture weren't an engineer? If so, they missed the point. How she looks in a photo does not influence how she does her job or what her job is!

Network Traffic Generation

I was recently asked about options for network packet generation (low volume and highly distributed for measurement, so cheaper slower hardware is OK), and I may as well share.

  • Ostinato aims to be wireshark in reverse.
  • tcpreplay is what it says.
  • For more control over emitted packets, look at hping.
  • Or, if you're programming in Python, look at scapy.
  • The perfSonar toolkit would handle the distributed tests.
  • SmokePing might be simpler for the small-but-distributed case.

That should get you started.

Sunday, August 4, 2013

Completion, or Continuation?

I realized that I have my own standard for doughnuts. I used to live in an apartment one block behind a Mr. Donut. Walking past the smell of freshly baked doughnuts often required a stop. My favorite was the "Chocolate Angel" - a doughnut with a light, fluffy chocolate filling that was dusted with powdered sugar. Om nom nom!

So clearly we had to go back so I could judge Daily Donuts on that scale. My report is that the chocolate filling is delicious! It's slightly denser than the Chocolate Angel, but I think the chocolate flavor is better. The powdered sugar is spread on heavier, but tasty. Happily, I don't get that greasy aftertaste that so many doughnuts have. On taste alone, I want to keep Daily Donuts in rotation. There's the personal side too. I am a fan of good customer service, and we were recognized as repeat customers on our second visit. Wow! This appears to be a shop run by a couple; she recognizes us and is very kind, while he bakes these delights. We stocked up.

So, was Doughnut Quest really completed, or does it continue? Or has it changed from a roving Doughnut Quest to an established Doughnut Habit? Hmm, I think it sounds like a Doughnut Habit. And such a tasty habit it is!

Sunday, July 28, 2013

The funnel hack

I enjoyed viewing 99 life hacks (in particular, my boys love the shovels from milk jugs; we made those for snow toys while I was in that apartment). Despite having several funnels already, I needed a large volume small mouth funnel two months ago, and I wanted it right then of course. So I made a funnel from a soda bottle, and I have to say I like it as well or better than my other funnels.

Xubuntu with blank screen

My Xubuntu media PC (that's been getting heavy use this week) blanks its screen to black even though I disabled the screen saver. Well, there's an appropriately simple solution: xset s noblank. Ahh, no more cries of "Mommy, please wiggle the mouse!"

Tuesday, July 23, 2013

S5 to PDF

I would rather use S5 for presentations than a proprietary solution. (I think Landslide is cool, and it has the feature to append #number to the URI to jump to that slide, but I can integrate S5 into my PmWiki so I stick with S5.) After a recent conference presentation, I was asked for the PDF version of my slides, and I was stumped for a moment. Then I found this post that turned me on to PrinceXML to work with S5. I thought about explaining how much I like Prince (after one use), but Ryan Tomayko already wrote that PrinceXML is extremely impressive. So I'll just say that I didn't like the initial output, and the documentation came to my rescue! I like well documented software that does what I need to do.

The actual command I used was prince --media projection -s page.css input.html -o output.pdf with the following for page.css:

@page { size: 1600px 900px; margin: 0 0 0 0; }

Join MP3 files

I like Audacity, so it's nice to learn I can use Audacity to join mp3 files just when I wanted to do that. Yay tools that do what I want!

Wednesday, July 10, 2013

Acuvue Oasys

I wore toric contact lenses for severe myopia (-9) and a strong dipole astigmatism (-2) from 1988 until 2000; I had LASIK surgery early January 2001. After ten easy years, not counting the bouts with dry eye, I went myopic again.

I got Acuvue Oasys silicon hydrogel contact lenses about 2 years ago. I used the recommended RevitaLens cleaner with them. I spent a long time struggling with them, too. My eyes would feel itchy and uncomfortable if it weren't the first day of wearing the lenses.

I tried using an enzymatic cleaner (protein remover) after a few days. I was very familiar with the feeling of contact lenses that need protein removed. The lenses feel like they're wearing scratchy wool sweaters! However, I felt no improvement at all after the enzyme cleaner.

I considered switching to Clear Care cleaner instead of RevitaLens. However, I remembered what my eye doctor said, that when you experience contact lens discomfort, switching your solution is often effective. He said it rarely matters what brand you pick, as long as it's different. When I went to the store, I bought the cheapest cleaner, in this case BioTrue, that said it worked with silicon hydrogel lenses.

I did find several things that worked.

  • Don't feel like you must wear your lenses for the full time. These are two-week lenses, and I was a lot happier when I allowed myself to wear a new pair every week (wearing them for 4 to 7 days total). I think my comfort is more important than using the full time in the directions. Too much discomfort is likely to lead to actual medical problems in my eyes, and that's even more expensive.
  • Use saline to rinse my lenses instead of the solution. Very effective! This added 3 to 7 days back to how long I wore these lenses.
  • Change your contacts solution. This added another 3 days.
  • Use more solution in the storage case. I got tired of having solution spill over the sides when I was putting the lid on, so I started to use less solution. More solution, less itchy when I put lenses in the next morning! This added comfort more than days. At this point, I was back to two weeks on each of pair of lenses, without complaint.
  • Put my lenses in earlier, so I have half an hour in the morning before I leave to decide if these are just too uncomfortable to wear today. Before, I was putting in my lenses and leaving, meaning the adjustment period was during my commute. That's not a good idea!

Thursday, July 4, 2013

Fourth of July

Happy FOURTH of July!

Xubuntu 13.04 and Amazon Prime

I had not tried to watch Amazon Prime videos since upgrading my media PC to Xubuntu 13.04, but discovered I couldn't. Luckily, this fix also worked for me: run hal in verbose mode, create the directories that it wants to use, and restart hal.

Thursday, June 27, 2013

Fixing Mail.app's Unread Message Count

After a few days of looking at the Dock badge on Mail.app reporting 172 unread messages (untrue), I searched for a solution. I found this one, Unread message count is wrong in Mail and Dock, with a suggested process.


  • Quit Mail if it’s open.
  • In ~/Library/Mail/V2/MailData, delete any file that begins with “Envelope Index,” such as Envelope Index or Envelope Index-shm.
  • Your home Library folder is hidden by default. To display it, choose Finder > “Go to Folder” and then enter “~/Library.”
  • Open Mail.
  • Mail creates new Envelope Index files. This process may take a few minutes, depending on how many messages Mail is reindexing.
I gave it a whirl ... my laptop fan spun all the way up, noisy, long wait ... and it mostly worked! Mostly means that the Mail.app badge in the Dock showed the correct number of unread messages, but I was no longer seeing any messages in any of my Exchange (ewww) mailboxes. Oops! I deleted and re-created the account to get everything working again.
I think my Mac is jealous of my Xubuntu laptop, so it's trying to tie up more of my time. I think that's gonna backfire ...

Monday, June 24, 2013

Culmination of Doughnut Quest

I really thought Doughnut Quest would take longer, but we reached the Stimmel's pinnacle already. On the drive back from Tasty Bakery last time, I noticed a billboard for Daily Donuts in Graham. I checked the Daily Donuts website for hours and directions (also: Daily Donuts on Facebook), and we picked it as the next destination for our quest. THIS. These are the doughnuts you're looking for. Or the cinnamon twist I got instead of a doughnut. I can't wait to go back to try more flavors and more doughnuts!

Monday, June 17, 2013

install HandBrake

I ended up not needing HandBrake (by not needing to transcode the video), but I discovered how to install HandBrake in Xubuntu 13.04: sudo apt-get install handbrake-gtk. Without the -gtk, I kept getting the message
E: Package 'handbrake' has no installation candidate

Saturday, June 15, 2013

The VERY Friendly Shower Curtain

Ever since I moved into this apartment (a temporary situation lasting months longer than I expected!), I have been looking for an appropriately simple and effective solution to the very friendly shower curtain. No matter what I tried with air flow, the shower curtain always moved in to wrap around me. I thought of various untenable ideas, like placing an iron bar inside the bathtub apron so that the shower curtain magnets could do their job, but I can't rip up an apartment bathroom just because the shower curtain likes me. I considered using two paperweights (while looking at a sentimental souvenir glass paperweight), but I didn't want to risk broken glass in the shower (or losing this memento). So I needed a unbreakable weight, but plastic would be too light ... getting close! Now I use two rectangular drink boxes, filled with water for weight, to hold down the shower curtain at both ends. No cost, and effective!

Overall, I would rather have a shower with a door, not a curtain. However, these two weights will make showers more pleasant until my house rebuild is complete.

Friday, June 7, 2013

Doughnut Quest, Part 3

On the way to SouthEast Linux Fest, we stopped at Tasty Bakery in Graham, NC. As a bonus, since today is National Doughnut Day (hurrah!), doughnuts were only 90¢. We had a cream-filled chocolate-frosted doughnut. I could taste the oil in which the doughnut was cooked, which isn't my favorite flavor because too much fat doesn't sit well with me. It was a reasonably tasty doughnut, essentially the same as Tasty Bakery at home, but not up to the level of Stimmel's so the quest continues.

Friday, May 17, 2013

Just Enough Lazy

I live in an apartment (until my house is ready!), and I joined a CSA that delivers so my weekly produce deliveries are made to the air-conditioned main office (bonus!). This afternoon I met my mom and kids at my apartment, so I parked in front of my apartment to step in to check if they'd picked up the produce already. They hadn't, so I grabbed my luggage cart and went off to fetch it. I wasn't lazy enough to start my car again and drive to the office, but I wasn't so tough as to lug that cooler back without some convenience! Just enough lazy to use wheels.

Monday, May 13, 2013

General

Yay! I passed my next level of ham radio exam (General)!

Saturday, May 11, 2013

Rise Biscuits & Donuts

The next stop along the Doughnut Quest was Rise Biscuits & Donuts. The good news: this doughnut was tasty! Most of the flavors were sold out by lunch time, so I just had a chocolate glazed doughnut, that was a glazed doughnut with chocolate on top. The doughnut was still a bit greasy for me, and even more shudderingly sweet than I expected. What I liked about the over-the-top sweetness was that it tasted so typically Southern, like the first time you taste Southern sweet tea and discovered new heights of sweetened that you did not previously know existed. So it was too sweet for me, but I don't want to disparage it either. The quest continues, but Rise can stay in rotation. Their doughnut flavors are inventive, their attention to detail is excellent, and they didn't stoop to the trendiness of the first stop.

Monday, April 22, 2013

Healthy Bacteria and the Intertwingularity

I read this Mother Jones article this morning, Are Happy Gut Bacteria Key to Weight Loss? Reading it made me very happy, as so many different strands of knowledge were pulled together. Ted Nelson said "Everything is deeply intertwingled" (Intertwingularity at Wikipedia), and seeing it makes the treated subject more plausible to me (as does citing scientific studies that control for some bias). And that makes me twingle!

Wednesday, April 17, 2013

Doughnut Faith Restored

Whew! After the scare at Monuts, intentionally leaving a doughnut with only one bite taken out of it, I wondered if I still liked doughnuts. I stopped at my local Tasty Bakery on my way to work this morning, and yes, I do still like doughnuts. Even ones that are a bit greasy. This isn't really part of the Doughnut Quest since I went off to nosh by myself, but at least I know I will enjoy most of the rest of this quest. Plus there's the fun of having a goal, even a silly one!

Sunday, April 14, 2013

Doughnut Quest, Part 1

Doughnut Quest Part One -or- How It All Started

Saturday was a challenging day for me, and it needed to be followed by some fun. So I grabbed a friend and we went to Monuts Donuts, nominally for breakfast, albeit late. I had heard the local foodies rave about Monuts, so my expectations were high for this storefront from a food truck. I should have listened to the little voice in my head telling me that foodies sometimes like the strangest things while I was reading the chalkboard menu. Of all the doughnuts on the menu (no, I'm sorry, I don't want bacon in my doughnut), only the classic yeast doughnut with chocolate glaze and rainbow sprinkles was really appealing. Yes, I love cinnamon, but I was afraid the cinnamon apple cider might have too much bite from the cider. Plain glazed also looked tasty, but since it was another yeast (not cake) doughnut, why not go chocolate? After all, there's chocolate!

So the good news is that I went somewhere I have wanted to go. The bad news is that I met my doughnut match: the first doughnut I have ever intentionally not finished. The first bite tasted so spoiled that I drank a lot of water and reflected upon the taste. After looking at it (chocolate glaze! with rainbow sprinkles!), I finally wanted to venture a second bite. However, my nose stopped me. This was the very sour sourdough of doughnuts. Next time I hesitate at a doughnut shop, I won't order two doughnuts for two people. We can always go back for more, but we can split the first one just to be sure.

We did decide that we need to know where to find fresh, delicious doughnuts from a local bakery, and so Doughnut Quest was started!

Saturday, March 30, 2013

Tuesday, January 15, 2013

The Five Stages of IPv6

I had a note to myself to write The Five Stages of IPv6 but The Networking Nerd beat me to it. Since everyone I've encountered first approaches IPv6 with a serious case of denial, it's an obvious lead-in to find the parallels to the Kübler-Ross model.
  1. Denial: no, I don't need IPv6. Sorry, but yes, yes you do.
  2. Anger: NO, I DON'T NEED IPv6!!! Sorry, but yes, yes you do.
  3. Bargaining: can some other software or hardware do IPv6 translation for me? Load balancers like our F5 units can do it for you, but native is faster and you control it. And NAT is just plain bad, bad, bad. example
  4. Depression: there's too much to do! Start somewhere. Personally, I discovered that it was much easier than I thought. example
  5. Acceptance: now what? Start somewhere!

Friday, January 4, 2013

Clipboard to Google Calendar

I enjoy a good shell script, so here's what I cobbled together. This script requires Mac OS X (every version so far has pbpaste) with the Google CLI (gdata-python-client, I used version 2.0.17) installed. The basic command is google calendar add --cal Calendar "Event 1/4/2013 at 3:00 PM in Location" but I used a script for error checking, and I only have to scroll back to the last error to see all of the problematic entries.

#! /bin/bash

## This script sends the clipboard to Google Calendar one line at a time.
## REQUIRES: Google cli from http://code.google.com/p/gdata-python-client/
##
## Version 1.0  2013-01-04  nethope
##
## 1.0  2013-01-04  initial
VERSION="1.0"
NAME=${0##*/}

###
## Variables
#
# 0 for no DEBUG
typeset -i DEBUG=1
if (( $DEBUG )); then /bin/echo Debugging on...; fi

###
## Parameters
#

## Paths
ECHO=/bin/echo
GOOGLE=/usr/local/bin/google
PBPASTE=/usr/bin/pbpaste

###
## main()
#
if (( $DEBUG )); then $ECHO Script ${NAME} running; fi

FAILURES="" NEWLINE=\\n
typeset -i TALLY=0
$PBPASTE | while read -r LINE
do
  $GOOGLE calendar add --cal Calendar "${LINE}"
  EXIT_STATE=$?
  if (( $EXIT_STATE )); then
    TALLY+=1
    FAILURES+=${LINE}${NEWLINE}
    echo -e "${NEWLINE}!!! Failed on line"
    echo -e "      ${LINE}${NEWLINE}"
    if (( $DEBUG )); then
      echo -e "  Errors add up to ${TALLY}"
      echo -e "  Failed lines are"
      echo -e "${FAILURES}${NEWLINE}"
    fi
  fi
done

# use exit code values of 0 (success) and 64 through 113 (or 125)
exit 0

Wunderlist

So I have been experiencing the Wunderlist "Synchronizing failed" error, and finally decided it wasn't going away on its own so I should do something about it. Since I'm still using WL1, I wanted NOT to logout. Luckily, I can extract my data, using Wunderlist-Helpers, or even simpler using the command line.

Mac OS X has come with sqlite3 for a while now, so no installation needed.

$ find ~ -name "wunderlist.db" -print 2>/dev/null
~/Library/Application Support/Titanium/appdata/com.wunderkinder.wunderlist/wunderlist.db
(be sure to escape the space with a backslash!!!)
$ cd ~/Library/Application\ Support/Titanium/appdata/com.wunderkinder.wunderlist/
$ sqlite3 -csv -header wunderlist.db "select * from tasks left join lists on tasks.list_id=lists.id;" > ~/Desktop/wunderlist_export.csv
$ open ~/Desktop
$ open ~/Desktop/wunderlist_export.csv
Now you should see your desktop folder with the newly created export file, and it should be open in your default CSV viewer!

I think I'm going to go from Wunderlist back to Google Tasks.