Friday, February 05, 2021

Recipe: Salmon Pattie (Gluten Free)

Salmon Patties (Gluten Free)

Because Cathy has Celiac disease (an an immune disease in which people can't eat gluten, a protein found in wheat, barley, and rye), we make our own recipes for our favorites. And because scraps of paper get stained, damaged, or lost, I sometimes write up a blog post for our recipes.

Preparation time: 15 minutes
Cook time: 20 minutes
Makes: approximately 12 patties

Ingredients:

  • 15 oz canned salmon with liquid
  • ¼ cup gluten free flour
  • ½ cup stoneground cornmeal
  • ⅛ cup ground flax seed
  • ½ tablespoon lemon & pepper seasoning
  • ½ cup chopped onions
  • ¼ cup chopped bell pepper
  • 2 eggs
  • 1 tablespoon lemon juice
  • 1 tablespoon Tabasco sauce (original)
  • 1 bottle of grapeseed oil (quantity depends on your pan)

Cooking Directions:

  1. In a large bowl, flake salmon, mashing bones well, keeping the liquid for moisture.
  2. In a small bowl, combine flour, cornmeal, flax seeds, and lemon pepper. Mix in onions and bell pepper.
  3. Stir in contents of the small bowl into the flaked salmon. Stir in the eggs, lemon juice, and Tabasco sauce.
  4. Form salmon mixture into patties approximately ¼ cup each. The thicker the patties, the longer you will need to cook them.
  5. Brown patties in oil over medium heat in a shallow pool of oil. Use enough oil to reach almost half-way up the patties. Cook for about 15 minutes, flipping over once.

Nutritional Information for One Serving: who knows?

Comments on Ingredients:

For flour, we use King Arthur Gluten-Free Measure for Measure Flour
For cornmeal, we use Bob's Red Mill Gluten Free Medium Cornmeal


Monday, October 28, 2019

Fixing Adobe Creative Cloud Desktop missing Apps tab in Windows (ServiceConfig.xml)

I am faced with odd problems due to managing an enterprise higher education environment with third-party software that may or may not behave. One recurring culprit is Adobe Creative Cloud.

On the macOS side we use Jamf, and on the Windows side we use SCCM. If you deploy Adobe Creative Cloud Desktop App, then you're familiar with the "Apps Panel" that allows users to self-service install applications like Photoshop.

As noted by many other institutions, the configuration of the Adobe CC is contained in ServiceConfig.xml located either /Library/Application Support/Adobe/OOBE/Configs/ServiceConfig.xml on macOS or C:\Program Files (x86)\Common Files\Adobe\OOBE\Configs\ServiceConfig.xml on Windows. If you look in the XML file, you'll see an AppsPanel tag set to "true".

Adobe CC has the annoying habit of replacing that "true" tag with "false" and causing the installation function to fail with the heart-warming message that suggests your IT Administrator is preventing you from installing the software you need to do your job. When we called Adobe, they implied it wasn't that big of a deal because a) they only get one call a day from someone on this, and b) we could "just redeploy a dummy package" to turn it back on. *argh*

While we haven't figured out (yet) how to redeploy easily on the macOS side via Jamf, I do have a solution for the Windows side. A combination of a GPO, WMI Filter, and PowerShell script, made the problem go away, and we tell users to do the familiar "turn it off and turn it back on" routine.

Here's the logic:

  • The WMI Filter looks for the existence of the file.
  • The PowerShell script looks for "false" in the file's XML tag and replaces it with "true".
  • The GPO runs the PowerShell script at startup if the WMI Filter applies.


Here's the WMI Filter:
Namespace: root\CIMv2
Query: Select * From CIM_Datafile Where Name = 'C:\\Program Files (x86)\\Common Files\\Adobe\\OOBE\\Configs\\ServiceConfig.xml'

Here's the PowerShell script:
#Adobe Creative Cloud OOBE config file update, in case self-service install fails (again)
#10/23/2019 Lee Jones

#XML file to check, assume file exist
$ChkXML = "C:\Program Files (x86)\Common Files\Adobe\OOBE\Configs\ServiceConfig.xml"

#variable for file save
$update = "false"
$comply = "false"

#typecast variable for XML content
[xml]$ccxml = Get-Content $ChkXML

#check for "false" and set to "true"
if ($ccxml.config.panel.visible -like "false")
{
$ccxml.config.panel.visible = "true"
$update = "true"
}
if ($ccxml.config.feature.enabled -like "false")
{
$ccxml.config.feature.enabled = "true"
$update = "true"
}

#if something changed, save the file
if ($update -like "true") {$ccxml.Save($ChkXML)}

#typecast variable for XML content
[xml]$ccxml = Get-Content $ChkXML

if (($ccxml.config.panel.visible -like "true") -and ($ccxml.config.feature.enabled -like "true"))
{
$comply = "true"
}

$comply

The GPO should just launch this as a Computer Config > Policies > Windows Settings > Scripts > Startup Script to update the file before the user even tries to launch Adobe CC Desktop.

If you are interested in all the possible tags in the XML file, check out this helpful post.

Monday, October 10, 2016

Managing Java runtime installs with MSI product ID's in SCCM

My blog is a bit bipolar - happy posts about family or cats, then technical stuff. Oh well.

Anyway, perhaps you, like me, have to manage a large population of computers with Java installed. My campus was version locked to Java 7 update 67 for a long time, and now we're able to move on to current versions. By and large, I would determine what Java version is installed on a given computer through WMIC or SCCM queries.

For a SCCM collection, the most accurate way to filter for a particular Java version appears to be the MSI Product Code GUID string. There's a pattern, and I figured I would share it here.

So, here's a typical MSI Product Code, in this case for Java 8 Update 77 x86
{26A24AE4-039D-4CA4-87B4-2F83218077F0}

And, here's a typical MSI Product Code, in this case for Java 8 Update 60 x64
{26A24AE4-039D-4CA4-87B4-2F86418060F0}

Here's the pattern, with the platform, major version number and update number:
{26A24AE4-039D-4CA4-87B4-2F8xx1yzzzF0}

I assume you see it, the XX being either 32 or 64 (bit), y being 7 or 8 (major version), and zzz being the update number (077 for update 77).

One tip, if you are making a collection in SCCM for Java 8u77, you'll need two query rules for your membership, one for 32bit and one for 64bit.

Hope that helps.... I know I'll probably look this post back up if I can't find the Java MSI Product Code in a few months.

Wednesday, September 21, 2016

Saying goodbye to Malachi, our beautiful tabby

I've always dreaded the day when Malachi would be leaving us. I will be taking her to the vet to euthanize her today. It breaks my heart.

This is how I remember Malachi best, she loves laying on my shoulder:




Malachi was born on March 20, 2003. She's been with Cathy and I since she was an itty-bitty kitten. We named her Malachi Obediah Plume-Jones, then we realized that she's a girl. The name stuck anyway.

We kept Malachi from the litter of bottle baby kittens because she was more fragile than the others. Cathy had a sense that Malachi would not get a full life with another family.

Malachi has always been "my pretty girl". A year later, when we got Fanny Mae, they became almost inseparable, and Malachi was "pretty girl" and Fanny was "pretty paw".

Malachi grooming Fanny

Fanny was returned to her Creator in 2008. Then, in 2010, Malachi was diagnosed with Feline Stomatitis, a gum disease that causes pain and inflammation. After trying a few things, the vet found that periodic Depo-Medrol injections worked to keep things in check. After that, we knew we were buying time.

That time has finally come. Malachi is still my beautiful girl, but the pain is nearly constant now, and I feel selfish asking her to keep fighting. It is time to say goodbye.

Wednesday, August 12, 2015

Updating Adobe Flash Player with batch files and SCCM 2012

I've been faced with updating a lot of (to me) computers with the current version of Adobe Flash Player due to the recent vulnerabilities in Flash. I haven't found a good way to be notified of a new release, so my browser is now set to open a tab with the version of Flash available.

Of the over 4000 Windows computers I am attempting to keep updated, over 90% have Adobe Flash Player installed, with either the ActiveX or NPAPI version installed (or both). I'm using SCCM, so I deploy Flash Player as a MSI package. And it seemed like I would deploy an update, then a new vulnerability and update would crop up, so a new deployment/upgrade cycle began again. I'm not fond of this Flash Update Ouroboros so I wrote a script to simplify things.

First, the script for ActiveX:

@echo off
REM Run via SCCM against collection of devices with old Flash Player ActiveX

:VERSION
REM set current Flash version
SET CurrentVersion=18.0.0.232
SET CurrentMajorVer=18

:GRACEFUL_UNINSTALL
REM attempt to gracefully uninstall Flash
wmic product where "name like 'Adobe Flash Player%%ActiveX' AND NOT version like '%CurrentVersion%'" call uninstall

:INSTALL_CURRENT_FLASH
REM install current Flash from distribution point
%Comspec% /c msiexec /i "\\server\software\FlashPlayer\%CurrentVersion%\install_flash_player_%CurrentMajorVer%_active_x.msi" /qn

:END

Next, the script for NPAPI Plugin:

@echo off
REM Run via SCCM against collection of devices with old Flash Player Plugin

:VERSION
REM set current Flash version
SET CurrentVersion=18.0.0.232
SET CurrentMajorVer=18

:GRACEFUL_UNINSTALL
REM attempt to gracefully uninstall Flash (old versions "Plugin" new ones "NPAPI")
wmic product where "name like 'Adobe Flash Player%%Plugin' AND NOT version like '%CurrentVersion%'" call uninstall
wmic product where "name like 'Adobe Flash Player%%NPAPI' AND NOT version like '%CurrentVersion%'" call uninstall

:INSTALL_CURRENT_FLASH
REM install current Flash from distribution point
%Comspec% /c msiexec /i "\\server\software\FlashPlayer\%CurrentVersion%\install_flash_player_%CurrentMajorVer%_plugin.msi" /qn

:END

The only real difference is the Uninstall and Install section to reflect ActiveX vs Plugin. The script uses WMIC to look for any Flash Player that is installed but not current, uninstalls it, then installs the current version based on the variables set in the script. Assuming you create the folder with the version number and the current packages, the script can be edited and used to update computers quickly.

On a higher level, I'm using System Center Configuration Manager to limit my collection of devices so I am only running the updates on the computers that need it (that would be an entire other post). While I think that you could just use a GPO to push this, be aware that all systems would end up with Flash Player installed even if it didn't have it installed before. By targeting only the systems that already have Flash Player, I am updating computers but not increasing my vulnerability surface area.

Naturally, I considered installing an update server, but I haven't figured out Adobe's documentation on this. For now, this batch file does the job for me.

To update your packages and script when Adobe releases a new Flash Player,

  1. create a new folder named after the current version on a distribution server (i.e. \\server\software\FlashPlayer\18.0.0.999)
  2. download the Adobe Flash Player distribution packages (sign up here) via your custom URL obtained from your Adobe Distribution Agreement email and put them in the folder you just created, and
  3. update the "CurrentVersion" and "CurrentMajorVer" variables in the batch files, then
  4. deploy.
Enjoy. The lack of additional explanation is mainly due to my intention to remind Future Me what I was doing when I forget my methodology and to give other IT guys a starting point for ideas on updating Flash Player en masse.

Tuesday, April 08, 2014

XP End-Of-Life, What It Means and How It Affects You

UPDATE: 04/28/2014 - if you haven't yet, stop using Internet Explorer (IE) immediately. There's a serious security flaw in IE and XP computers will not be patched. If you want the Microsoft mumbo jumbo, read this and this.

People still running Windows XP and have Automatic Updates turned on will receive the warning that XP is no longer supported. I've gotten several messages from people expressing varying degrees of concern.

What It Mean that XP has reach End of Life (EOL)

  • If you are still running Windows XP, it basically means it is really time to upgrade if you have the funds. XP has been around for 12 years, so you're not getting the best of the Internet any more.
  • It means Microsoft will no longer provide security updates or technical support for Windows XP. So, if there is a security concern (like the recent OpenSSL Heartbleed Bug), there's no updates to protect you from hackers (Oh Noes!).
  • It means no more updates to Internet Explorer, Microsoft Security Essentials and likely other applications like web browsers. That may very well mean that web sites like Facebook just won't look right down the road on your computer.

What It DOESN'T Mean

  • Your XP computer is not going to stop working. It'll keep doing the same things it was doing last week.
  • Your XP computer is not going to suddenly get hacked. You're no more vulnerable than last week.

An Analogy

Let's say you have an old car named Windows XP. I don't mean a 1965 Ford Mustang, more like a 1972 Ford Pinto. XP's End-Of-Life is like Ford declaring that they will no longer manufacture parts, honor any safety recalls, or for that matter service them at dealerships. You can still put gas in it, drive it around, do oil changes, etc. Your Pinto will still keep running, but when it breaks, that's the end. Windows XP is like that Pinto, it'll keep driving, but you can't find parts.

So, What's the Bottom Line?

Seriously, time for a new computer. Or, get a nice tablet and you may find that it's an adequate replacement for your old XP computer. But don't freak out.

If you must keep using your XP computer, get a different browser and keep your antivirus software up-to-date. I would recommend you stop using Internet Explorer and use Google Chrome instead. Google has promised to keep Chrome running on XP until April 2015.

Tuesday, March 25, 2014

After my SECOND run

I went running for the first time on Saturday, and when I got home Monday I had a strange desire to go running again. I had planned on running Tuesday, Thursday, and Saturday, so I would have had one more day, in theory, before my next scheduled run.

Honestly, I didn't feel all that great on Sunday. My muscles ached, things hurt that have never hurt before, and I discovered butt muscles I didn't know I had. I wasn't exactly looking forward to Tuesday on Sunday. But, somehow, I wanted to go running.

My wife has been very supportive. I asked her to go to Target and get some Champion C9 shorts, and she came home with two pairs, two shirts and a tank top. Maybe it is her supportive attitude, but for some reason I just wanted to run on Monday.

Fear may have been a motivation. I didn't feel that great on Sunday, and I didn't want to stop running. So, I donned the running tee and shorts my wife bought me, put on the shoes she had brought home for me, and went out the door.

Two applications were monitoring me on my phone as I planned. Runtastic stopped at one point and I had to start it back up, and on the return leg Runkeeper announced that my task was complete and I couldn't continue it. The thinner material seems to allow the phone to interact with my leg and I probably shut off the apps while running. Oh well, time to get an arm band.

Fatigue set in differently this time. I ran a bit further, which probably meant I ran too fast for my own good. "Train, not strain" is what I read, but I am still learning. On the way back, I felt that the going was harder, and I leaned heavily on the motivation of Runkeeper's interval announcements. When Runkeeper stopped, well, keeping for me, it was a hard blow.

Nevertheless, I ran for what I thought might be 60 seconds (which goes VERY quickly) and walked for a brief span, then repeated. It was hard, struggling up the slope on the way home, and I thought to myself, "Why oh why did I pick a route that has me running uphill on the way home?!?"

Annoyingly, Runtastic recorded exactly NOTHING for my run. Runkeeper kept my partial workout, so I have no idea how well I did. I suppose it doesn't matter - I'm just going to go running again on Wednesday.

Oddly, I do not feel the pain today (after two runs) the way I did the day after my first run. Hm.

Saturday, March 22, 2014

After my first run

So I went for my first run. I'm not getting younger, and running seems accessible to me. Some friend pointed me to Couch to 5K, so I'm following that plan. Here are some reactions after my first run.

Pants: I need better pants. Running in the shorts I wear casually will do for now, but it seems there would be a better solution. I will look into that.

Shoes: Boy am I glad Cathy bought me a pair of running shoes! My regular tennis shoes (are they actually for playing tennis?) would have felt very heavy.

Apps: So far I like RunKeeper. I found it fairly easy to replicate my Week 1 routine for Couch To 5K. The prompts for the intervals during the run were very, very helpful. I also used Runtastic Pro, but I have no reactions on that yet. Next time I run, I'll still use both, but I'll keep Runtastic Pro up front to see how it works. Based on today, however, I'm still going to use RunKeeper's intervals, and likely get the subscription. For some reason, Runtastic posted to Facebook but I missed that in RunKeeper. Hm...

Pockets: What do other people do with their phones and water? My phone was bouncing around in my pants the entire run. I left the water bottle behind and just drank as much as I could before doing the warmup walk. That might explain those armband phone holders I see for sale, but what about water?

The Run: At the beginning of the run, I was preoccupied with keeping track of my running intervals. RunKeeper took care of that, and I found it possible to just focus on running. I say focused because I concerned myself with my posture, with trying not to run too fast, and my footfalls. Many times I found myself thinking I would fail the "Talk Test" and tried to slow down a tiny bit. My run became 60 second and 90 second experiences, and it started without incident.

I had set an alarm for 10 minutes so I would know when to turn around. When that turn-around alarm went off, I finished the running interval and started walking back. Suddenly, the distractions of the app, the intervals, and dodging power poles gave way to a sense of joy. A smile took over and I thought to myself, "I can actually do this!" It was briefly euphoric, and the possibility of running as a lifestyle choice seemed real.

RunKeeper brought me back down to earth by announcing that my next running interval was upon me, and a mild fatigue creeped up behind me and chased me the rest of the way home. My joy was now tempered by the reality that running is going to take effort and time. On the way back, every time I heard that next interval of a one-minute run, I sighed and picked up the pace.

I got close to home when the apps announced that I had finished my workout. I walked briskly from the street to the our rig and paced around a bit to let my breathing return close to normal, and called it my first step in the journey.

How I feel now: I feel a little accomplishment, but I also feel like nothing changed. I sense a bit of reaction from some of my muscles, which surprisingly is not limited to my legs. I read somewhere it is better to warm up instead of cold stretches before a run, but I'll need to look into that some more.

I've decided on running Tuesday, Thursday, and Saturday. That seems reasonable, even though I have no reason to select those days. I saw the other runners, so I may look into a better time of day to run, or a better location. Perhaps there are no runners living around here but that seems unlikely.

So that's it. My first run!

Tuesday, March 04, 2014

Some Thoughts On Other People's Children

Cathy and I do not have children. I do affectionately refer to my cats and dog as our "furkids", but there is no denying that I will never understand the joys or heartaches of having offspring of our own.

To say that I have made my peace with it would be to imply a loss I do not experience. Some feel that childlessness is a state to be pitied; however, as I have no existential reference point, I simply do not feel any sense of deprivation or loss.

As is normal, we have plenty of friends with children. I can think of several such friends that would, should I envy the prospect of parenthood, cause me to be both immeasurably happy for them and deeply disturbed by my own lack of parity. Some friends make parenthood look (almost) easy, but I believe that is simply a lack of perspective on my part.

The cries of neither the tribulations nor the triumphs of our offspring will be heard in our home. Instead, Cathy and I experience slivers of parental joy by offering to watch the kids while our friends actually have a date night, or perhaps attend a function or work late or some other important reason.

Some joy can be derived vicariously from being a parental stand-in. We even have friends who are trusting enough, or perhaps possessing the required senses of humor, to allow me participation in the changing of diapers, getting kids bathed and teeth brushed before bed, and other less-than-glamorous activities. Bedtime stories were a joyful discovery; I actually enjoy reading bedtime stories to children. As I have the luxury of being the non-parent, I suspect I receive a little bit of leniency and good behavior from the children, and I reciprocate by being slightly less stern as their parents would in the course of an average day.

From time to time, the apparent lack of children in our lives comes up in conversation. This is a natural phenomena, and all of our acquaintances go through this process. Once biological children are ruled out, the option of adoption is usually suggested, along with observations about our obvious fitness to be extraordinary parents.

Generous, optimistic projections of how our potentially adopted children would change the world aside, I do not believe I would make a great father. Sure, no father is perfect, but make many sacrifices to have children and to guide them to adulthood. I do not think I could be half the dad my own father was, and at 40, I simply have never faced the need to deprive myself in the ways I think a child would deserve.

Rushing to my defense, our friend point out how we provided for Cathy's mom for over a decade, or how we have sent (a not-insignificant amount of) money to my mother to support her since my father's death. Duty, love and obligation are entwined in my mind regarding patently. Children require sacrifice. Sacrifice is not something I am accustomed to making, and though I would learn, parenthood is not a state of affairs I find myself in nor desiring to enter into.

Biological imperatives, often couched in the creation mandate, do not sway me to have children. If the command to be fruitful and multiply has not yet been met, then I am a monkey's uncle. That said, I do think that it is normal and desirable for a society to have a steady state of population. Nonetheless, I so not think every couple needs to have children, nor do I think that it is a requirement of a marriage. Children need parents, but married people do not have to be parents.

Children are a gift, and when would-be parents spurn that gift, adoption is a beautiful solution to an intractable state of affairs. Parenthood should, from my limited and experience-free perspective, reflect the way God treats all His children. That is a task too high for me, and as we cannot have biological children of our own as a couple, I assume that God has something else in mind for us. Adoption may not be it, either.

We have friends who have adopted, and acquaintances who have done so as well. Some adopt to fill a need of the world, for they have more room in their hearts to welcome children without a home of their own. Others have adopted to fill a need of their own, and just as eating and sleeping are needs, some rightfully need to be parents, and there may be some beauty when children need parents who need them as well.

Adoption, as a notion, gives me the tingles. To understand why I get that tingly feeling, you'd have to hear my thoughts on human depravity and redemption, and perhaps be a little surprised of how little I think of myself. But I'll try briefly...

The very thought of God adopting us, to make the untouchable cherished, to truly redeem something not merely useless but repulsive, is (in a word) just AWESOME. God's love fills me with wonder and it terrifies me. That is what adoption means to me.

Adoption is (should be?) deliberated parenthood. I doubt most natural parents have any idea what they are really getting into with their first child, but good parents are deliberate in undertaking the task. I like to think we know some good parents, who perhaps upon reading this would not think of themselves but should, for they demonstrate God to their children regularly. God's example should inform everything from discipline to recreation, but I remain the opinionated man without children.

Cathy and I neither need children nor feel "called" to parenthood. What I had believed I felt was a calling to be pastor, a cash-poor one at that, and being childless made sense back then. Now I do not know why, but I am comfortable with it. Should we ever have children, it would be a task requiring much grace from a loving God who is willing to give it, so while I would find the prospect awesome, it would be a great privilege and adventure.

Tuesday, February 18, 2014

Thoughts on the prospect of living with my mom

Cathy has long known that I hope to one day move my mother stateside to live next to me. I have some dreams and some concerns on how this may work out.

We have lived in a triplex before and that worked well for us. I can envision purchasing a triplex or a quad, with Cathy and I in one unit, my mother in another, and Rhona and Dave (Cathy's mom and her husband) in the other. One big happy family, but each with their own space. I would convert a space for Cathy's studio, and life would be perfect.

I don't think we could pull this off financially, except that my mom has two sources of retirement income and would be willing to help, like praying rent. Rhonda and Dave would do the same, so our payments on the property should be quite manageable.

California is just too expensive. I would love to enjoy all that the Golden State has to offer, except the taxes and the deficit. Perhaps the Joneses would have to move to somewhere like Georgia. My employer has an office and they were quite positive about the prospect of a transfer. Dave already wants to move there and Cathy has family out there. I would simply acclimate.

Culturally, Cathy and I would learn to fit in, and we would have help from family. I am mostly concerned with climate and finances. I think we are spoiled by California's temperate seasons, and real weather and seasons would take some getting used to. However, I think we are up to the task.

Very little of concern has crossed my mind in regards to living with Rhonda and Dave. After all, we lived with Cathy's mom in our house for 10 of the first 12 years of our marriage. We got along. Dave takes good care of her, and he is a good man.

Most of my concerns stem from my mother's expectations of living with me, as I do not believe she realizes that I, her son, am American. That may sound strange, but though I grew up in Taiwan in a Chinese culture and environment, my mother had far less influence on me than my late (and great) father. My father took great care in preparing me to go home to America; I do not think he intended for me to stay in Taiwan, as he always spoke of my presence there as visits. I wish he had moved back here with my mother, but dad loved her too much to take her away from a familiar and stable life.

Common practice among American families is for the patents to prepare for their own retirement. My dad did so to some extent, and my mother has always relied upon my father's plans. He did not intent to die so soon, as his plans assumed my mother's eligibility for social security. We did get that all sorted out, but it was not an easy couple of years, particularly for my mother.

Common practice among the Chinese people of Taiwan is for the parents to move in with the children. Further back, it was multi-generation families, where the son builds an addition to the shared structure of the growing house for his new family. Now, with land at a premium, parents move in with a child. I joke about how the Chinese 401(k) plan is to have four or more children. Unfortunately, my mother's portfolio is not very diverse, so we find ourselves with a single long-term investment.

Although I consider myself a Chinese American, the "Chinese" part is the modifier, and "American" is the primary aspect of my national, cultural identity. Sure, the Chinese part is important, but it isn't as important as I believe my mother likely thinks.

If she is to move here and live with us, my mother will need to understand that she'll be living with her American son and his American wife. We will need our own space, and while I would see her almost daily, my life will not revolve around her. And, as an American male, the thought of having two women trying to share a kitchen (again) is simply off the table; it didn't work with Cathy and her mom, so it certainly isn't going to work with her foreign mother-in-law.

Within the landscape of my mother's imagination, I believe she envisions living in the same house, walking the same halls, and sharing every meal with me. When she speaks of the future, she does not picture Cathy, merely how mom and I will relate to each other, with Cathy in the backdrop of the scene. Those who know me know that Cathy and I are rarely separated. It is of growing concern that my mother has had no way to learn of this or experience this, and she does not seem to grasp it when I tell her in letters and photos.

A language barrier has grown quietly but steadily over the years between my mother and myself. My Mandarin is not what it used to be as those language and vocabulary muscles have atrophied. My mother's somewhat limited English has begun to deteriorate in my father's absence. Particularly challenging is the fact that I have only lately come to this realization. Without my father to mediate and bridge the gaps of our communication, my mother and I say less and less that the other actually understands.

We have perhaps two years (three tops) of time to prepare for my mother's intersection with our life. I must find a way to make clear what our new arrangement may entail, the commitments I am willing to make and what I am unwilling to sacrifice. How shall I get an accurate picture of what mom expects, and how do I best honor her in her old age? I do not know, but I believe I shall pray for inspiration. And I suppose I should begin brushing up on Chinese.