8 vegetarian foods that aren’t actually vegetarian

Last October, I decided to be a vegetarian. My reasons for doing so are different from most vegetarians in that I chose it because of my opposition to killing animals.

Over the last 7 months, something I’ve learned is that foods traditionally thought of to be vegetarian friendly, aren’t actually. Especially for someone like me, who avoids foods requiring the killing of animals.

In case, there’s anyone out there like me, I decided to put together a list of vegetarian foods that aren’t actually vegetarian. Let me know in the comments if you know of any others.

1. White sugar

The production process for white sugar often requires filtration through pure carbon to whiten the sugar. This carbon is typically a result of charring cow bones. Luckily, at least in Canada, Rogers/Lantic offers sugar that is bone char free:

Bone char is not used at Taber’s sugar beet factory or at Montreal’s cane refinery. Bone char is only used at the Vancouver cane refinery. All products under the Lantic trademark are free of bone char. For the products under the Rogers trademark, all Taber sugar beet products are also free of bone char. In order to differentiate the Rogers Taber beet products from the Vancouver cane products, you can verify the inked-jet code printed on the product. Products with the code starting with the number “22” are from Taber, Alberta, while products with the code starting with the number “10” are from Vancouver, British Columbia.

2. Refried beans

While beans themselves are a popular vegetarian food rich in protein, iron, and B vitamins, commercial refried beans are often made using lard, which is made from pig fat.

3. Bananas

Commercially-produced bananas are often sprayed with chitosan, a pesticide derived from crustacean shells.

4. Caesar salad

While most vegetarians recognize that the bacon in Caesar salad isn’t vegetarian, many are surprised to find out the dressing isn’t either. Caesar dressing traditionally contains anchovy paste.

5. Bagels

Commercial bagels are often manufactured with L-cytesine, an amino acid produced from pig hair or bird feathers. Actually, most L-cytesine is produced using human hair because it’s a more efficient raw product.

This one is a tricky one because, technically, you don’t need to kill pigs or birds to use their hair or feathers, but it would be convenient to use it from dead animals rather than throwing them away. And, again, L-cytesine is most often produced using human hair.

Use your judgement on this one.

6. Candy

Or more specifically, soft candy made with gelatin, which is derived from animal by-products. Same goes for marshmallows.

Also, some red candies (specifically any with ingredients listed as carmine, cochineal extract, or natural red 4) use food colouring derived from insects.

Finally, candy made with confectioner’s glaze is often insect derived. While the shellac used in making confectioner’s glaze doesn’t technically require the death of the Kerria lacca, it’s practically impossible to avoid in commercial production.

7. Worcestershire sauce

This is made using anchovies.

8. Vegetable soup

Commercial canned vegetable soup is often made with animal-based broths.

Any other foods you can think of? Let me know in the comments below.

How to make a matchbox full of paper hearts

How to make a matchbox of paper hearts

I’ve been trying to find ways this year to weekly do something extra to show appreciation and love to Mary. I don’t celebrate Valentine’s Day or Mothers Day, and I always use the excuse that I show her appreciation and love all year round. I wanted to make sure it was actually true this year.

Anyhow, I came across an empty matchbox the other day, and before I through it away, I wondered if there was something I could repurpose it for.

Right away, I thought I could do something for my weekly lovefest. I knew we had a scrapbooking punch that could make heart shaped holes (and conversely, tiny paper hearts). I figured I could make a matchbox of paper hearts.

How to make a matchbox of paper hearts

The first thing I did was cover the outside with red construction paper. I didn’t cover the drawer because I ran out of time, but you could easily do that. Just be careful of making it too snug.

IMG_2151

Next, I cut a bunch of squares from the leftover paper.

IMG_2153

I folded each square in half.

IMG_2157

Finally, I cut out a heart from each folded square.

IMG_2161

Then I put it all together.

How to make a matchbox of paper hearts

Naturally, Mary loved it. 🙂

Stronglifts 5×5: 250 lb squats

I hit another weightlifting milestone today: I squatted 250 lbs. Here’s the video:

I did this set 5 times.

That was the only good thing about today’s workout. I failed on both my 120 lb overhead press and the 270 lb deadlift. I managed to do only 3 reps of the overhead, and I couldn’t even budge the deadlift weight.

We’ll see what next Wednesday holds.

My version of our son’s birth story

This is crossposted at Siever.ca, our family site.

Quillan

I’m starting to think going to the temple is a labour inducer.

The day Mary went into labour with Aoibheann, she and I had gone to the temple. With Quillan, who was born early yesterday morning, we had gone to the temple the day before (actually, one of the things we did there was have the marriage of my great great grandparents sealed for time and all eternity; they had immigrated to Canada from Austria).

Shortly after I started supper, Mary came to me with a feeling she might be going into labour soon. A few minutes later, she came back to confirm it. After supper, we had the children clean up the house a bit (do dishes, sweep, put away laundry, etc), then we sent them to bed. I knew I was teaching seminary the next morning, so I prepared my lesson after they went to bed. I wanted to get that finished early.

Labour progressed fairly slowly and it was less uncomfortable for Mary than the other labours. Around 23:00, Mary started spending more time in the washroom. She would have a hot bath, walk around some, and so forth. Within the hour, labour started to pick up more, and she knew it would be a standing birth (like Aoibheann).

Mary leaned on me for support as she switched from standing to squatting, but then eventually moved into the tub for a hot shower. About 01:00 or so, she asked me to join her in the shower, and I did. She leaned on me, and I massaged her back and shoulders. As she felt the baby descending, I sat on the tub floor to catch. It is very uncomfortable to sit in a tub while another person is in it trying to stand with legs apart to birth a baby, but we somehow managed our impromptu game of Twister.

About 01:35, Mary felt a sudden urge to push. One moment, I see no sign of him, and the next moment, opps, there he is. I placed one hand behind his neck and shoulders, and the other under his bum. I felt a bump in the latter hand, and I had a sudden thought that he could be a boy (our last two were girls, and we had only one boy). I turned him and confirmed he was a boy.

He was healthy, pink, and screaming. He had his umbilical cord wrapped around his neck, so I simply lifted it over his head, and handed him to Mary.

She sat with him on the toilet while she waited for the placenta to come out and nursed him almost immediately. He was our earliest nurser. I dried off, got dressed, and woke up the other children to come see their baby brother. They were all pretty excited.

After the placenta came out, we cut and clamped the umbilical cord, and I took him to the bedroom to clean him up (he had already passed meconium), and get him dressed. After the excited settled down a bit, we sent everyone back to bed, and I got a couple of hours sleep before having to get up to go teach.

Quillan is a healthy baby boy, and we are happy to have him in our lives.

RSS and ColdFusion

RSS is rapidly becoming a popular format for providing content. It allows users to subscribe to bits of information, so they can be notified when new information has been posted.

I’ve been tossing around the idea of implementing RSS at work lately, and wanted to do it with ColdFusion. I finally buckled down and put something together. Surprisingly, it was much easier to do that I thought it would be, and I ended up creating RSS feeds for news articles, upcoming events, and job opportunities.

Here’s the process I used to create the RSS feed for job opportunities.

The first thing in my CFM file is a block of code that makes sure no HTML outside of the cfoutput tag gets displayed:

<cfsetting enablecfoutputonly="yes">

Then the query:

<cfquery name="qCareers" datasource="xxx">
SELECT * FROM Careers
ORDER BY Position
</cfquery>

Then I implement a cfsavecontent tag. This makes sure that all the content between these two tags is saved as a variable. The closing tag appears later.

<cfsavecontent variable="theXML">

Then comes my output. It is important than the root tag in XML for an RSS feed is “channel”, that the title of the feed is in a “title” tag, feed description is in “description”, a link to the HTML content of the feed is in a “link” tag. As well, every item should be within an “item” tag, which also contains “title”, “description” and “link” tags. Not following that format will cause your RSS feed to fail.

In addition, there must be an “rss” tag, and there must be no white space (including a new line) between the opening “cfoutput” tag and the “xml” tag.

<cfoutput><?xml version="1.0" encoding="ISO-8859-1" ?>
<rss version="2.0">

<channel>
<title>Faculty of Management - Jobs</title>
<description>Current Career Opportunities</description>
<link>http://www.uleth.ca/man/people/jobs/</link>
<cfloop query="qCareers">
<item>
<title>#Position#</title>
<description>#Details# <cfif NOT IsDefined("StartDate") OR StartDate DOES NOT CONTAIN "1999">Commences #DateFormat(StartDate,'dd mmmm yyyy')#.</cfif></description>
<link>http://www.uleth.ca/man/jobs/index.cfm?id=#RecordID#</link>
</item>
</cfloop>
</channel>

Close the cfsavecontent tag, as previously mentioned.

</cfsavecontent>

Then output the variable that contains it all.

<cfcontent type="text/xml">
<cfoutput>#theXml#</cfoutput>

Simply upload this file to your server somewhere, and add the following into the page where you want the RSS feed available.

<link rel="alternate" type="application/rss+xml" title="RSS 2.0" href="http://www.uleth.ca/man/rss/jobs.cfm" />

Simple as that.

GMail Mailing Lists and Groups

Some of my readers are familiar with my post on GMail Folders that shows a workaround for the seemingly absent email folders that abound in other software.

I thought I would also post on how to create mailing lists (or mailing groups) in GMail. A mailing list is handy because you can specify a list in your message and the message will be sent to all the contacts in the group.

Create your mailing list or group

  1. Open up each contact you want in the group and click “Edit contact information”.
  2. Add the name of the group (e.g. “family”) in the “Notes” field and press “Save”.

Use your mailing list or group

  1. Go to your Contacts page and search for the name of your group. This should bring up all those with the group name in their notes.
  2. Click on the “All” link near the bottom of the page
  3. Click the “Compose” button

Voilà! A new email with all the contacts in your group.

Database Integration with Flash

I had a project I was working on that required me to import events from a database and import them into a Flash movie. After searching for a long time for a method that was easy and quick, I discovered Getting Data Into Flash by Dennis Baldwin.

Dennis’ solution was exactly what I needed. Well, actually, not quite what I needed. His solution worked for getting the data from the database and importing it to Flash. That was the biggest hurdle. What it did not do was allow for importing separate records. So I modified it.

The first thing I did was to modify his ColdFusion variable line into a sort of loop (make sure everything between the cfoutput and cfset tags are all on line).


<cfset x = 1>
<cfoutput query="qDates" maxrows="5">
&eventDate#x#=#DateFormat(qDates.EventDate,'dd mmm')#
&eventTitle#x#=#qDates.Subject#
&eventTime#x#=#TimeFormat(qDates.Time,'HH:mm')#
<cfset x = x+1></cfoutput>

The qDates query is the one that queries the database in order to pull the events I want. The maxrows attribute is how many events to return. If I only wanted three, I would change the “5” to “3”.

What the above code does is creates a very long variable line that includes the date, title and time of five events.

Now, we switch gears into ActionScript.

I took the ActionScript on the container movie clip in Dennis’ example and modified it to run another loop.

onClipEvent(data) {
total = "";
for(i=1; i<6; i++) {
eventDate = eval("eventDate" + i);
eventTitle= eval("eventTitle" + i);
eventTime = eval("eventTime" + i);
total += eventDate + " - " + eventTitle + ", " + eventTime;
}
}

You will also noticed that I assign the variables to the container clip instead of the root. In addition, I needed to evaluate the three variables because of the addition of the use of the loop’s index variable. If I had left it as eventDate = "eventDate" + i; for example, it would not have recognised "eventDate" + i as a variable.

Finally, I set the variable on my text field to be _root.mContainer.total so that it will import the values from the container’s (in my case, I renamed container to mContainer) variables.

There you go, a simple way to import multiple records from a database into Flash.

Creating VCS Files in ColdFusion

One thing I have been trying for months to do on the Faculty of Management website is to create VCS files on the fly. VCS files are what Outlook and other calendaring software use to pass calendar items between each other. When I added an event to our database with ColdFusion, I wanted it to create a VCS file that the user could then download to his/her calendar.

Earlier this week, I came across Chris Wigginton’s vCal UDF. This ColdFusion UDF outputs the necessary information to a string. All that is needed is to write the string to a file. I used the following code to accomplish this:

<cffile action="write" file="/root/folder/folder/file.vcs" nameconflict="overwrite" output="#vCalOutput#" mode="777" />

The cffile tag is used for creating, modifying and deleting files with ColdFusion.

The action attribute is pretty self-explanatory.

The file attribute contains a path to where the file is/will be stored. This is not a URL. It is a direct server path. It should also be noted that some servers will require a drive letter (such as C:).

The nameconflict attribute is used to tell ColdFusion what to do if it encounters a file named the same as that referenced in the file attribute. I used overwrite simply because I was using the cffile tag in an edit page. In this regard I was making changes to the event in the database, so I wanted those changes reflected in the VCS file.

The output attribute is what is sent to the file referenced in the file attribute.

The mode attribute is the permissions given to the file. Our server does some pretty funky things sometimes, so I gave read, write and execute to the owner, group and world. Anything else would probably result in a ColdFusion server error.

One other thing to keep in mind with VCS files is that times are based on GMT. In order for me to create times for the Mountain Time Zone, I had to add 6 hours to the start and end times. For this, I used the following code:

stEvent.endTime = "#DateAdd('H', 6, CreateODBCTime(FORM.TimeEnd))#";

The first parameter of the DateAdd function is which element of the date/time value you want to change. In this case, ‘H’ corresponds to the hour. The second parameter is the number of hours to use. If you live east of the GMT, you would simply use a negative value. The third parameter is another function that converts the time-only value I use in my database to a date and time value needed for the VCS file. If you use a date-time value in your database already, you don’t need to use the CreateODBCTime() function.

There you are. A complete solution to making VCS files in ColdFusion.

Update: For some reason, VCS files do not seem to currently work in Firefox.