Saturday, December 28, 2013

My First Job, or

"How I Became Afraid of Transistor Circuit Design"

The summer of 1981 found me in a bit of a bind. After a tragic and comedic series of events, I concluded the military life wasn’t me. I cancelled my full time scholarship with the Air Force, and found myself suddenly in need of money. Some friends had recommended I try to get a job at school, so I applied and was accepted. I was to work in the lab of Dr. Roger P. Webb, a professor in the School of Electrical Engineering (1). Not just any professor, Dr. Webb occupied the “Georgia Power Chair”. As I understand it, this meant that Georgia Power, the state-wide electric company, funded his position at the school. Furthermore, he specialized in electric power and was the senior professor in that field within the school (2).

On the other hand, power electronics couldn’t have been further from my interests. In my view, power engineering and electric distribution were decidedly old-school and boring. I was learning to master the intricacies of analog and high frequency radio circuits, a thrilling esoteric art in which I was becoming quite accomplished. So on learning that my assignment was to work for Dr. Webb, I was none too excited. However, I needed the job, and despite my inclinations, any work involving electronics was bound to be more interesting than the other kinds of jobs available to young college students. So I accepted, and thus began my first job.

My first day on the job, I was introduced to his lab and my assignment. Until that day, my exposure to electronics had been things I could hold in my hand, small circuit boards the size of a slice of bread, holding parts like resistors and capacitors, things the size of buttons. Or at most, I had worked with old vacuum tube radios, which were about the size of a modern microwave oven and needed two hands to lift. Upon entering Dr. Webb’s lab, I got the shock of my life. There was a “capacitor” the size of a large footlocker - so big, they were mounted on wheels! This was clearly electronics on a whole different scale than I had ever imagined!



Then we rounded the corner into another section of this damp basement. We entered a computer, on which I was to work for the next year or so. Yes, we actually entered the computer. This thing was a monstrosity, a 1947 Westinghouse A-C Network Analyzer, or Network Calculator as it was sometimes called. There were probably a dozen or more huge racks of electronic gear, arranged in a “C” shape enclosing an area about 500 square feet in size. In the middle of the “room” was a special desk and drafting table, which I later learned was the main operating console for the whole computer.




My task was to refurbish the programming unit of this computer - that is, how the operators input a problem to the computer for solution. This was 1981, and I had some familiarity with computers of the day. Programming at best involved using a video terminal if you were lucky, or perhaps a paper teletype machine. In our freshman computer classes we had to use punched cards. But even punched cards were too modern for the Westinghouse Calculator - no, this bad boy used patch cords and a plug panel, not unlike an old telephone switch board you see in the movies. These cords would be pulled out of a panel, and plugged into various sockets according to the circuit at hand. Each wire would automatically retract back into the machine when you finished using it (imagine the power cord on a modern day vacuum cleaner). This was accomplished by a series of pulleys and lead weights. Over the years, these wires had become dried and brittle, and were no longer flexible. They just didn’t work anymore, mechanically, nor electrically for fear of short circuits.



My job was to replace each and every wire in the whole machine. There were hundreds of them - one such panel alone held 60 wires, and judging from my recollection and photos, there were probably between 6 and 10 of these panels. I was given a huge spool of new wire and the biggest soldering iron I’d ever seen. They showed me how to replace a wire, which was actually pretty simple in theory, and left me to it. Boy, was it dirty work. I had to climb on top of the racks to access the section holding the wires, laying on my belly as I removed and reinstalled each wire. Each new wire had to be cut to the exact length as its predecessor, the plug moved from the old to the new wire, and then carefully re-threaded through the pulleys, lead weight, and finally re-attached to the computer’s circuits. Did I mention dirt? There was decades of dust inside this machine, and I was hacking and coughing all summer and fall of that year.



I gradually learned how this machine worked, beyond how to repair it. It was originally designed to make calculations for power distribution systems. To do this, the programmer built a scale model of the system, using the patch cords, and then studied how it performed. This central console had a bank of meters, and an keyboard which looked like the old adding machine my grandfather used. The operator could type in the ID code for any element of the scale model, say “L14”, and then read the voltage, current, phase angle and power readings on the meters corresponding to element L14. Next to the console was a specialized drafting table, with hundreds of small light bulbs which could be positioned anywhere underneath the table surface. A drawing of the power system was taped to the table top, and as the operator selected an element, the corresponding element on the drawing was illuminated from underneath.

One might wonder, as did I, why such an antique “computer” was still being maintained in 1981, when much more advanced digital computers were readily available, especially to the likes of companies like Georgia Power. I was told that despite all the advantages of digital computers, there were still some special classes of power distribution problems that were difficult to solve digitally, but were a piece of cake on this 1947 calculator. Georgia Tech, and Georgia Power, kept this machine operational for just those occasions, which were apparently rare but important.

While this machine was intended to solve problems in power distribution systems, I quickly realized that it could also operate as a general purpose analog computer. On more than one occasion, I would take a few random homework problems from class and plug them into the computer and confirm my answers using the meters on the console. But one meter on the console didn’t work correctly, and I learned that the small vacuum tube amplifier, the only active electronics in the whole calculator, was partially broken. So my next assignment was to replace this old amplifier with a modern transistor circuit. I was happy for this task, but was also a bit worried, as this type of amplifier was a bit outside my training and comfort zone. My supervisor encouraged me to proceed anyway, offering help when needed.

I spent quite a bit of effort building this new amplifier. It was constructed on a metal chassis about the size of a small briefcase. Because of the function of the amplifier, I made it using several circuit boards which plugged into sockets on the chassis. It was a huge undertaking for me, and I quickly had to become handy at metal work, printed circuit board layout and fabrication, not to mention the physical assembly and testing. After all that effort, my new transistor amplifier was a big disappointment. For reasons I don’t remember, it wasn’t very stable, and it was difficult to adjust. I could make it work for short periods of time, but it would eventually drift into oscillation or otherwise just quit working. Around this time, things were winding down on the project. And furthermore, I moved into the co-op program and started another job with another division. My unreliable transistor amplifier sat inside the guts of the calculator, presumably to be improved upon if and when it was next needed. The whole experience, while very educational and interesting, was somewhat of a disappointment. And since then, I have always been a bit gun-shy when it comes to designing large transistor circuits.



During all this time, I had been poking around the drawers and shelves, and discovered an old newspaper photo of someone named “Herbert P. Peters”. According to the text of the article, he was the original operator of this computer when it was originally installed. He looked pretty cool to me and my engineer friends. We imagined him chain smoking cigarettes while solving important problems, huddled within the walls of the machine. Well, it turned out that Mr. Peters was still alive. And although I never met him, I heard a story a couple of years later - much to my embarrassment. It seems Georgia Power had run into one of the special problems, and needed to use the Westinghouse calculator. They sent over a crew of engineers, including Mr. Peters (whom I presume was in retirement by then). As I heard the story, Mr. Peters tried my new transistor amplifier for 5 minutes, then threw it in the trash. He inspected the old, broken vacuum tube amplifier, identified the problem in another 5 minutes. They were up and running the next day when a replacement transformer arrived by express courier.

So, if there was any lesson to learn here, I think it was that we were too eager to toss out the old and bring in the new. Had I just spend a little more time examining the vacuum tube amplifier, we could have fixed it with far less cost and effort. But I lured myself into thinking, surely this old vacuum tube technology should be thrown away, and replaced by something modern. And I do wish I had had a chance to meet Mr. Peters.


(1) After I graduated, I understand Dr. Webb became head of the School of Electrical Engineering.

(2) If this came with a title, I’m not sure - within the school of electrical engineering, there are many different specialties and sub-specialties. We all knew which professors specialized in which area, but I don’t remember this being a formal distinction.

Picture credits from Cornell, Museum Victoria, and Ga Tech.

Sunday, December 08, 2013

Abusing the Preprocessor, Almost

I keep running into a mildly annoying problem in my C-language embedded software applications. It involves the declaration, definition and initialization of constant data tables. On a couple of recent projects, it became such a headache that I decided to do something about it, and to document it on my blog. Let’s get started with a simple example.

MAKING A LIST OF THINGS

It’s fairly common to use defines or enumeration to declare states within a state machine. Consider the below states from a fictitious breathalyzer:
#define STATE_INIT              (0)
#define STATE_IDLE              (1)
#define STATE_TAKING_SAMPLE     (2)
#define STATE_STONE_COLD_SOBER  (3)
#define STATE_TIPSY             (4)
#define STATE_DRUNK             (5)
#define STATE_SHIT_FACED        (6)
#define STATE_PASSED_OUT        (7)
#define STATE_NUM_ITEMS         (8)

Or alternatively, we can use an enumeration, which will automatically assign the states sequentially.
enum BREATHALYZER_STATES {
  STATE_INIT=0,
  STATE_IDLE,
  STATE_TAKING_SAMPLE,
  STATE_STONE_COLD_SOBER,
  STATE_TIPSY,
  STATE_DRUNK,
  STATE_SHIT_FACED,
  STATE_PASSED_OUT,
  STATE_NUM_ITEMS,
};

Often we don’t care about the actual value assigned to such states, but there can be advantages to having them in sequence. One reason would be to easily obtain a text name representing the state. For example:
const char *state_names[STATE_NUM_ITEMS]={
  “initializing”,
  “idle”,
  “taking a sample”,
  “stone cold sober”,
  “tipsy”,
  “drunk”,
  “shit-faced”,
  “passed out”,
};

Another advantage to using the enumeration to define the states is that the code becomes easier to maintain if you need to insert a state later on. You don’t have to manually change all the numbers in the list of defines, as the enum statement automatically assigns them in sequence.

So, why am I not happy with this? Because the combined information about the states, state numbers and text strings, most often must exist in two different files. We properly put the enumeration in the header file, but the definition and initialization of the name strings has to be in the .c file. For this trivial case, this is just a nuisance. But it can get out of hand easily with more and larger pairs of integers / strings.

CONSTANT DATA TABLES

Here is another, similar, application of the same concept. Consider a lookup table containing information about different units of measure (in this case, lengths):
enum UNITS {
  UNIT_METER=0, 
  UNIT_KILOMETER, 
  UNIT_CENTIMETER, 
  UNIT_MILLIMETER,
  UNIT_MILE,
  UNIT_YARD,
  UNIT_FEET,
  UNIT_INCH,
  UNIT_MIL,
  UNIT_NUM_ITEMS,
};

typedef struct tagUNIT_DEFN {
  const char const *name;
  const char const *abbr;
  const double fact;
  const double off;
} UNIT_DEFN;

const UNIT_DEFN unit_defn[UNIT_NUM_ITEMS]={
  { "meter", "m", 1.0L, 0.0L },
  { "kilometer", "km",  1000.0L,   0.0L },
  { "centimeter", "cm",  0.01L, 0.0L },
  { "millimeter", "mm", 0.001L, 0.0L }, 
  { "mile",  "mi", 1609.344L, 0.0L },
  { "yard",  "yd", 0.9144L, 0.0L },
  { "foot", "ft", 0.3048L, 0.0L },
  { "inch", "in", 0.0254L, 0.0L },
  { "mil",  "mil", 2.54E-05L, 0.0L },
};

Here again, it’s important to keep the indices and the constant table synchronized as changes are made, perhaps to add other length-type units such as furlongs, angstroms, and light-years.

There is one solution to the synchronization problem, which I found searching around the web. Although the downside is that it’s only available on compilers which support C99 extensions. But if you have C99, then you can specify the location of an array being initialized using what are called “designated initializers”. Therefore, the above array would look like this:
const UNIT_DEFN unit_defb[UNIT_NUM_ITEMS]={
[UNIT_METER]={"meter", "m", 1.0L, 0.L},
[UNIT_KILOMETER]={"kilometer", "km", 1000.0L, 0.L},
[UNIT_CENTIMETER]={"centimeter", "cm", 0.01L, 0.L},
[UNIT_MILLIMETER]={"millimeter", "mm", 0.001L, 0.L}, 
[UNIT_MILE]={"mile", "mi", 1609.344L, 0.L},
[UNIT_YARD]={"yard", "yd", 0.9144L, 0.L},
[UNIT_FEET]={"foot", "ft", 0.3048L, 0.L},
[UNIT_INCH]={"inch", "in", 0.0254L, 0.L},
[UNIT_MIL]={"mil", "mil", 2.54E-05L, 0.L},
};

That solves the concern about getting the data table out of sync with the enumeration. But, we still have the issue of maintaining the table in two different files. Now is the time to abuse the preprocessor (1).

LET THE PREPROCESSOR DO THE WORK

I found an obscure solution to my problem, using the preprocessor in a most unusual manner (2). After a bit of head scratching, I hit on the following approach. First of all, make a “table” in the following format, which is actually one huge preprocessor macro:
#define UNIT_TABLE(F) \
F(UNIT_METER, "meter", "m", 1.0L, 0.0L)\
F(UNIT_KILOMETER, "kilometer", "km",  1000.0L, 0.0L)\
F(UNIT_CENTIMETER, "centimeter", "cm",  0.01L, 0.0L)\
F(UNIT_MILLIMETER, "millimeter", "mm", 0.001L, 0.0L)\
F( UNIT_MILE, "mile",  "mi", 1609.344L, 0.0L)\
F( UNIT_YARD, "yard",  "yd", 0.9144L, 0.0L)\
F( UNIT_FEET, "foot", "ft", 0.3048L, 0.0L)\
F( UNIT_INCH, "inch", "in", 0.0254L, 0.0L)\
F( UNIT_MIL, "mil",  "mil", 2.54E-05L, 0.0L)\
/**/

With this “table” defined, an in just ONE place (the header file), it’s possible to enumerate the indices,
// Make the enumeration of the unit types
#define EXTRACT_ENUM( ID, NAME, ABBR, FACT, OFF ) ID,
enum UNIT_TYPES {
  UNIT_TABLE(EXTRACT_ENUM)
  UNIT_NUM_ITEMS,
};
#undef EXTRACT_UNIT_ENUM

and define/initialize the table automatically:
// Makes the constant table of units
#define EXTRACT_DEFN( ID, NAME, ABBR, FACT, OFF ) \
  { NAME, ABBR, FACT, OFF },
const UNIT_DEFN unit_defn[UNIT_NUM_ITEMS]={
  UNIT_TABLE(EXTRACT_DEFN)
};
#undef EXTRACT_DEFN

When expanded by the preprocessor, we get exactly what we want:
enum UNIT_TYPES {
  UNIT_METER, UNIT_KILOMETER, UNIT_CENTIMETER, UNIT_MILLIMETER, UNIT_MILE, UNIT_YARD, UNIT_FEET, UNIT_INCH, UNIT_MIL,
  UNIT_NUM_ITEMS,
};

const UNIT_DEFN unit_defn[UNIT_NUM_ITEMS]={
  { "meter", "m", 1.0L, 0.0L }, { "kilometer", "km", 1000.0L, 0.0L }, { "centimeter", "cm", 0.01L, 0.0L }, { "millimeter", "mm", 0.001L, 0.0L }, { "mile", "mi", 1609.344L, 0.0L }, { "yard", "yd", 0.9144L, 0.0L }, { "foot", "ft", 0.3048L, 0.0L }, { "inch", "in", 0.0254L, 0.0L }, { "mil", "mil", 2.54E-05L, 0.0L },
};

Well, not EXACTLY, that’s almost unreadable - the macro expanded into one monster (wrapped) line of code! Where are the newlines? It is a limitation of the preprocessor that you can’t force a newline, and therefore that’s one pitfall of this method. If you are tracking down a typo, and need to examine the preprocessor output, you have to contend with this monster-long-line, wrapped format. I wrote a script to “un-wrap” the file, but for occasional debugging, it’s probably sufficient to do it manually in your editor. In vim (I’m old-school), these ex commands do it:
:s/, /,^M  /g      (for the enum)
:s/}, /},^M  /g    (for the table)

Reformatting the output thusly yields the expected result:
enum UNIT_TYPES {
  UNIT_METER,
  UNIT_KILOMETER,
  UNIT_CENTIMETER,
  UNIT_MILLIMETER,
  UNIT_MILE,
  UNIT_YARD,
  UNIT_FEET,
  UNIT_INCH,
  UNIT_MIL,
  UNIT_NUM_ITEMS,
};

const UNIT_DEFN unit_defn[UNIT_NUM_ITEMS]={
  { "meter", "m", 1.0L, 0.0L },
  { "kilometer", "km", 1000.0L, 0.0L },
  { "centimeter", "cm", 0.01L, 0.0L },
  { "millimeter", "mm", 0.001L, 0.0L },
  { "mile", "mi", 1609.344L, 0.0L },
  { "yard", "yd", 0.9144L, 0.0L },
  { "foot", "ft", 0.3048L, 0.0L },
  { "inch", "in", 0.0254L, 0.0L },
  { "mil", "mil", 2.54E-05L, 0.0L },
};

This is exactly what we started with, but because it is automatically generated from the same “table” in the header file, there is no chance for the table to get out of sync, and furthermore we only have to edit one file to chance the data table.

WRAP IT UP

Therefore, we have the following code snippets to place in the header and source files:
                   unit.h:

typedef struct tagUNIT_DEFN {
  const char const *name;
  const char const *abbr;
  const double fact;
  const double off;
} UNIT_DEFN;

#define UNIT_TABLE(F) \
F(UNIT_METER, "meter", "m", 1.0L, 0.0L)\
F(UNIT_KILOMETER, "kilometer", "km",  1000.0L, 0.0L)\
F(UNIT_CENTIMETER, "centimeter", "cm",  0.01L, 0.0L)\
F(UNIT_MILLIMETER, "millimeter", "mm", 0.001L, 0.0L)\
F( UNIT_MILE, "mile",  "mi", 1609.344L, 0.0L)\
F( UNIT_YARD, "yard",  "yd", 0.9144L, 0.0L)\
F( UNIT_FEET, "foot", "ft", 0.3048L, 0.0L)\
F( UNIT_INCH, "inch", "in", 0.0254L, 0.0L)\
F( UNIT_MIL, "mil",  "mil", 2.54E-05L, 0.0L)\
/**/

// Make the enumeration of the unit types
#define EXTRACT_ENUM( ID, NAME, ABBR, FACT, OFF ) ID,
enum UNIT_TYPES {
  UNIT_TABLE(EXTRACT_ENUM)
  UNIT_NUM_ITEMS,
};
#undef EXTRACT_UNIT_ENUM

extern const UNIT_DEFN unit_defn[UNIT_NUM_ITEMS];


                   unit.c:
#include “unit.h”

// Makes the constant table of units
#define EXTRACT_DEFN( ID, NAME, ABBR, FACT, OFF ) \
  { NAME, ABBR, FACT, OFF },
const UNIT_DEFN unit_defn[UNIT_NUM_ITEMS]={
  UNIT_TABLE(EXTRACT_DEFN)
};
#undef EXTRACT_DEFN

It isn’t pretty. In fact, it’s too ugly for this simple example. But, it shows a “standard” method for defining, declaring and initializing constant data, which can be maintained in just one place. The real reason I explored this solution was because I have some much larger applications where this “ugly” solution is actually pretty, and solves some serious maintenance headaches.

Next article, I will expand on this approach, making a more general purpose module .


NOTES:

(1) this phrase is shamelessly stolen from Mr. Michael Tedder’s blog post,

(2) this method is inspired by a posting on StackOverflow by user Eyal. His method involves initializing a table in RAM, while I’m trying to initialize constant data. Each type of initialization using this method presents it’s own challenges.

Friday, June 28, 2013

Tuesday, February 26, 2013

One-Armed Living Advice




You never know when you might find yourself without an arm. Especially when there are icy sidewalks in your neighborhood. So as a public service, I've compiled a list of tips for living with one arm.


  • Don't remove your socks. You'll never get them back on.

  • If you eat bagels, arrange someone to slice them at the store.

  • On the good-armed side of your body, don't sweat. You won't be able to wash it in the shower.

  • Have the cashier open any bottles or jars that you purchase before you leave the store.

  • Before becoming one-armed, prepare all your meals in individual dishes and store them in the refrigerator or freezer. Bite sized foods are essential. Soups and stews, good. T-bone steaks, not good.

  • Wear only pajamas. If you must wear clothes, hire a tailor to sew clothes on you in the morning, and cut them off at night. Better yet, become a nudist.

  • Store your butter on the counter, not in the refrigerator




  • Wednesday, January 23, 2013

    Small Businesses in Korea

    In the news this week, President-elect Madam (Mademoiselle?) Park announced improvements to how small businesses are categorized. Previously, all small businesses were lumped into one group, SME: Small and Medium-sized Enterprises.


    In order to better reflect the diverse nature of small businesses in Korea, companies will now be grouped into the following categories, beginning March 1st:

    FSC Front Seat of Car
    KTE Kitchen Table Enterprise
    BFB Business from Briefcase
    CTBW Can Touch Both Walls
    STNC Shout to Next Cubicle
    BBVB Big Black Van Business
    GBP Gucci Bag Proprietorship
    BAE Back Alley Enterprise
    BCE Burberry Coat Enterprise

    The new system will allow the government and financial sectors to better meet the needs of small businesses, targeting services tailored to each style of small business.

    Saturday, January 12, 2013

    New Costco

    I received news by mail (real mail) that a new Costco was opening up next to the KTX Gwangmyeong railway station. It sounded far away, but turns out to be very close to our new office building.







    I knew this was going to be fun immediately on arrival. Look at the happy faces on my fellow shoppers!

    Well, this Costco is designed almost exactly like the ones I've visited in the USA. Big, huge warehouse on one floor (unlike the other crowded, two-story Costco I had previously visited in Korea). I assume land must be quite cheaper there in Gwangmyeong.

    Since I arrive at dinner time, I decided to begin with a trip to the cafeteria. It was a little hard to get to the cafeteria after you entered the store - in fact I think you're not supposed to, due to the fact I had to cut through an unused checkout lane to get there.

    The menu was almost the same as I've been used to, but they added a new Hot Turkey and Pastrami with Cheese sandwich to the menu. I decided to order this with a cup if clam chowder. Alas, the clerk explained the chowder wasn't hot. Not sure if this is normal or a temporary problem. Puzzled, I just ordered the sandwich. As I walked to the table area, a lady was giving out free samples of this new sandwich to everyone. I ended up with 1-1/3 sandwiches for the price of one.

    Even though the store is bigger than others, the dining area is much smaller. Fortunately I to had to wait a few minutes to get a table, though I had to share with some other folks. Other than that, it was relaxing and pleasant dinner.

    On to shopping, no surprises. I found my few usual essential Costco items. I did note this 84 inch television they had on sale for only $24,000!!! I could carry it home, so I had to pass.



    Bottom line - the store is well laid out. I didn't find it particularly crowded, even on a Friday night. Hopefully they'll add more tables and buy a stove to heat the chowder, but from now on this is my "local" Costco. Highly recommended.

    Sunday, September 02, 2012

    Teas




    I'm not a coffee drinker, but I do enjoy tea. Usually that would be black tea, although I've expanded my tastes to include green tea and the occasional flowery teas you find at a Chinese restaurant. I buy my tea at any of the large "marts" here in Seoul, but yesterday I happened to notice a large selection of tea at the very back of a local Mom-and-Pop grocery store. Since I had just run out of tea, I searched for some on the shelves.

    Now, I've noticed before that the black teas are less available (popular?) than others - usually green tea, barley and corn tea being the most available. But what I found at this local shop was incredible. So surprising in fact, I took the one to record the myriad choices which were available at this tiny corner grocer.

    1. 마차 sweet potato tea
    2. 쑥차 mugwort tea
    3. 대추차 jujube tea
    4. 칡차 arrowroot
    5. 호두율무차 walnut & job's tears tea
    6. 호두아몬드율무차 ditto, +almonds
    7. 단호박차 pumpkin tea
    8. 쌍화차 herb tea
    9. 생강차 ginger tea (x2)
    10. 천마차 gastrodia elata tea
    11. 둥굴래차 Solomon's seal tea (x3)
    12. 보리차 barley tea (x4)
    13. 옥수수차 corn (silk?) tea (x4)
    14. 녹차 green tea (x4)
    15. 현미 녹차 green tea w/brown rice (x3)
    16. 메밀차 buckwheat tea
    17. 마테처 roast Yerba mate tea (x2)

    That's a total 32 brands of teas, of which 17 different varieties are available. And not a single black tea in the whole lot!

    Many of these I've never heard of. For example, I didn't know they made tea from aquatic mammals. But seafood is so popular here in Korea, I'm not surprised to find they use seals to make tea. I won't even guess what a Yerba mate is.

    Don't get me wrong, I'm not complaining, as I can easily get black tea. To the contrary, I think this is wonderful. I remember The Stumbling Mother, a tea connoisseur whose own cupboards were home to 762 varieties of tea, was quite impressed with the variety of teas here in Korea during her visit here in 2007. She would have been delighted to find 17 teas at a tiny local shop.

    Speaking of black tea, red tea as it's known in Asia, I've recently been drinking this tea from Antarctic adventurer Captain Robert Scott's ill-fated 1910 Terra Nova expedition. I believe it has been re-blended to match the original, although they say remains of the original blend still exist in tea chests at Hut Point and Cape Evans in the Antarctica.




    I do wonder about this scarcity of black teas in Korea. While no tea expert, I associate teas with Asia. Curious why it seems uncommon here in Korea. But whether you like your walnut and job's tears tea with or without almonds, Korea is the place to find a wide selection of tea.

    Wednesday, August 15, 2012

    Coffee Shop Konglish

    I have often complained about the many restaurants here that have excellent menus for breakfast (be they Korean or Western fare), but they don't open for breakfast. Hold that thought...

    In my office building, there is the smallest store I have ever seen (they are a florist). It looks like it was added as an after-thought, perhaps converting a storage closet into a store. It was just amazing that the owner could operate her store from this tiny space. Well, a few weeks ago, there was a buzz of activity at the flower shop. Construction supplies and a work crew were there for several days, feverishly sprucing up the interior. "Improving the interior of a storage closet", I would chuckle to myself whenever I walked by. Well, then the dust settled, I couldn't belive what they had done. They split the store into TWO STORES!!!!

    So now we have two extra-tiny stores, the original florist, and a new coffee/sandwich shop. I just shake my head when I see this place. It's just amazing how they can squeeze two shops in this small space.

    Ok, back to my first point... one day I arrived at the office about 7am, and noticed that this new shop was open, and selling breakfast sandwiches. I was shocked - I have NEVER seen a breakfast shop open for breakfast before here in Korea. Alas, that morning, I had already eaten breakfast at home. And since then, the owner has been closed for summer vacation. Eventually I will try their breakfast, and give a report.
    On to the Konglish portion of this post. The new interior remodeling included the obligatory "let's display some English words, and maybe they will make sentences, and further they might actually have meaning". I just couldn't resist taking a photo:

    I'm not a coffee drinker, but I'm not sure this descripion would entice me to buy their coffee...

    Sunday, June 24, 2012

    Things Old






    I recently took a stroll around the rooftop garden on the 14th floor of the Shindorim Technomart. On this day, there happened to be a display of Bonsai trees on display. Some trees were over 120 years old! Talk about a hobby requiring patience.
















    They also had a complimentary display of old men as well




    After strolling around for awhile, I managed to score a free arial tour of the Technomart and Shindorim station area. Very interesting.












    On this final pass around the complex, I saw the uniquely curved Posville building where I recently lived. And you can also see I didn't throw stones.

    Location:Shindorim Technomart

    Tuesday, June 19, 2012

    On Kepler and Calories

    A report made the news this week from the London School of Hygiene and Tropical Medicine (LSHTM), concluded that "people's weight, and not just population size, should be taken into account when planning how to deal with increasing pressure on the planet's dwindling resources."

    In a little-reported footnote, we also learn that orbital computer algorithms and GPS receiver firmware worldwide have required updating over the past six months.  This has happened because the mass of the earth, once considered a universal constant, is now a variable.  And, one that's proving quite difficult to calculate.

    Various organizations are taking different approaches to calculating the new mass of the earth.  One obvious way is to factor in the population of the earth, and account for the increasing average body weight.  The problem is this data lags the "true mass" by years, due to the time it takes to collect and tabulate the data.  Others are using more indirect factors, such as customized "fast food" stock market indices or proprietary production data from worldwide belt manufacturers.  Dr. Oliver Heaviside commented "we had heard about this effect, but didn't appreciate it fully until our calculations of the recent Transit of Venus were off by 8-1/2 seconds". 

    NASA has been sending algorithm updates to it's various probes and satellites currently in space. Tracking stations worldwide are modifying their software accordingly. Individual owners of GPS navigation systems worldwide should contact the manufacturer and request a firmware upgrade.

    Wednesday, May 09, 2012

    Chinese Evergreen

    I got a new house plant yesterday. I've been meaning I get one, ever since my last one died. I was inspired by my friend Tuttle, who told me he keeps so many house plants that he has to hire a gardener when he goes out of town.



    I stopped at a small nursery, and asked for advice. I tried to explain that I have a "black thumb", but that doesn't translate well. I finally settled on the plant shown, and wrote down the Korean name for later research. It was also a good selling point that this plant only needs water once every 5-7 days.

    Translating a Korean plant name to English is fun. As often is the case, you have to go through Latin first. The plant was called 시암 오로라. Using Naver, that turns out to be something called "Aglaonema Siam Orlala". A little more digging reveals this is commonly known as the "Chinese Evergreen", mine apparently of the Siam Orlala variety.

    Best news of all was this quote from Wikipedia:
    They are popular houseplants and ornamental plants for offices and shopping malls because they are among the easiest houseplants to grow. .... They tolerate a wide range of light, as well as neglect, and are relatively resistant to pests. Aglaonema flourish for years.

    I'm encouraged. It might actually live for one whole month!

    Sunday, April 08, 2012

    Rice Cakes

    Korean rice cake comes in many different forms. The one I've recently come to enjoy is called 가리떡, approximately pronounced as kah-ree-ddeok. If you don't say it right, it sounds to a Korean like Curry-ddeok! This is rice cake extruded into long cylindrical shapes, grilled and dipped in honey. This is also the rice cake which is sliced on the diagonal and used in soup. I've been threatening to visit one of these 떡집 (rice cake house) for some time, ever since I heard you can have your rice made into rice cake, rather then just buying rice cake. I finally got around to it Saturday afternoon, and had about 5Kg of rice made into rice cakes. It was pretty fun and interesting, and the owner only yelled at me once - turns out you're not supposed to sit on the table used for preparing rice cake!


    Step one is to grind your rice into a flour. These two horizontal mills are used for that purpose. They have two polished cylindrical millstones counter-rotating which crush the rice into flour. I cringed several times when the lady put her hand in the hopper to aid the flow of rice.


    Here's my flour, just coming out of the mill. The lady added a small amount of salt to the rice on the first pass through the mill. Then she added a very small amount of water, and ran it through the mill a second time.


    The resulting slightly moist bucket of flour was transferred into a square box, which had an internal vent to allow the passage of steam. She put this box on a special table which had steam pipes, covered it with a cloth, and turned on the steam full blast. It was left to steam for a few minutes - it wasn't very long.


    Next up, the steamed mass of rice flour was transferred to the extruding machine! She pushed the rice into the opening, and it comes out the side of the table. She made one or two passes with the extrusion output open. Then for the final pass she installed the proper "tool" on the machine (seen in the photo above) and started making the final product. There were other "shapes" available, ones I've also seen available in the store. Note that the rice cake is dipped in a bucket of cooling water as it comes out of the machine and onto the cutting table.


    And here you see the result, long cylinders of extruded rice cake! This is sliced into 6-8 inch sections, and boxed up for transport home.


    Piping hot, fresh rice cake is good, but...


    ...this is now I like it the best. Grilled with honey. I wonder if my apartment contract specifies pets? Could I care for several thousand bees on my balcony without drawing undue attention from the neighbors???

    Friday, April 06, 2012

    Misc Spring Photos

    Been saving a bunch of photos, and too busy to blog them. Let's go!

    The first cool thing was they had the anti-gravity demonstration going on at Technomart last week. It was pretty cool to see a whole kindergarten class come walking in on the ceiling! This is just a temporary exhibit, but if popular, it will be travelling around Seoul to various other shopping centers.


    Got free tickets to the live (recorded) music program 열림음막회 at the KBS Music Hall. It was pretty fun, although I still want to see 배철수 host the 7080 Concert (another KBS music program).



    I only ate ONE donut, really!


    Moving day. Everything fit in two small trucks.


    The Definition of XENO is the position of being in charge. In other words, Boss. I didn't know that. I guess this really is the BOSS PC Zone, then.

    Sunday, March 25, 2012

    New Home

    Because of a strange tax rule (having to do with VAT), I took the chance to move about 5 months before my lease expires. This was done with the owner's cooperation, because of the unusual and sudden nature of the problem. My new home is about 5 minutes walk from the office, probably only 1km from my old home. I really didn't want to leave the old building, but there weren't any suitable places available. At request of the The Stumbling Daughter #4, I've taken some photos of the new home.


    This is the view upon entering through the front (and only) door. I haven't really used it, but there are some pocket doors which can close off the bedroom. Big pocket doors, in fact I don't think I've even seen any this large.



    This is my recliner, which has truly been a life-saver. It doubles as a bed when I wake up at 3am with back pain so strong I can't lay down.


    This is the bed room. Same bed and sheets I've had since 2004 (I've washed them once or twice...)


    Desk, television, and computer / high-tech corner!


    Storage closets and dining table. The two white chairs came with the apartment, as did a bunch of other unexpected furniture. I've managed to use or hide the extra, with the exception of a large sofa which I threw out (with the owner's permission).


    Kitchen area. A little bigger than the last place, but not as big as my previous places. I tried to get the refrigerator man to swap the doors around, but this model is a fixed left-hander.


    Here's the kitchen again, but you can see the entrance hall off to the right. The bathroom is off that hall.

    That's it. Numerically, it isn't much bigger than my last place, but it really seems much larger. This is on the 11th floor, and the view is nice enough. It's not blocked by super-close buildings, like the first place in Mokdong. But it's not as spectacular as the view from the 24th floor, either!

    Tuesday, March 13, 2012

    Paper Dragon




    Here is my paper dragon souvenir which Tuttle brought me from Thailand.



    I would agree that it "combined" fairly easily, though I might disagree that he's "loveable".

    Sunday, February 26, 2012

    Middle School Memories


    Yesterday I went to school. Middle school. I took a placement test for a free Korean language class that's held by the government. I only found out about the test about 2-1/2 weeks ago. My initial plan was to cram for two weeks leading up to the test. However, a number of crisis intervened, including a broken tooth filling and a couple of work projects went into emergency mode. Also, one fellow had advised me, if you cram for a placement test, you might find yourself placed artifically high in the classes, and really struggle. So, crisis, lack of time, and my natural laziness conspired to find me arriving Saturday noon at the testing location woefully unprepared. Not to mention I was without voice due to Karaoke the night before (yes, I know, really poor planning on my part).

    Well, the first mishap is that I was nearly killed on the way to the school! It's a lovely day, not too cold. I'm walking leisurely up the hill to the school, taking in the scenery, and suddenly there's a shout from a woman above me! Before I can react, there's a huge crash on the street about 1 meter to my left. When I came to my senses, I saw what had happened. The woman was up on the third floor of a building, and was opening her window. But something went wrong, and her window screen fell to the ground. It wasn't one of these flimsy window screens like I've known in America - it was in a real hefty steel frame, and could have done some serious damage, especially falling from the third floor. If the uphill walk wasn't already quickening my pulse, this certainly did.

    On arrival at the school, the scene was slight confusion, but we were processed with minimal fuss and sent to our assigned class rooms. I was told to go to room 2-5 on the fourth floor (note to Korean architects: it's often common practice to include the floor in the room number, for example, room 4-5 on the fourth floor). Adding to the room number confusion was that someone had helpfully prepared paper signs and covered all the original room numbers signs. The read something like "testing classroom 4". Naturally, the fellow downstairs at check-in didn't tell me which "testing classroom" to visit! Fortunately the original room number signs were double-sided, and by walking past the classroom and looking at the back side of the sign, you could read the original number.

    This was my first visit to any school in Korea. I don't know what I expected, but it was like stepping into my middle school in the 70's. This school also had some open, outdoor corridors in common with my middle school, adding to the deja-vu feeling. Despite new trends and technology over the decades, I guess the old classroom formula still works, or is still in demand. The room wouldn't have won any interior design awards, but it was very functional, very sturdy, overall appealing to The Stumbling Engineer! One concession to modern times, the chalk was replaced by some type of liquid chalk. It resembled a paint pen. This must be the next generation of chalk boards after the white board. In fact, the board itself looked almost identical to a chalk board. You could probably write on it with chalk, but the texture was a little bit different. I didn't see any high tech equipment, although there was a ceiling-mounted projector (I guess the teacher brings in a computer as-needed). I've heard from my teacher friends how the students clean the classroom themselves, and I noted the mop and broom storage closet in the back of the class. There was even a huge open sink built into the hallway for cleaning their mops (I'm assuming the students don't bathe in the open hallway). I'm going to ask my teacher friends next time how this compares to having a janitor. I'm not sure which results in better and more efficient cleaning - a bunch of energetic kids, or an old man or woman janitor cleaning the school at night.

    On the Korean language, I know my ability (not great, maybe low-intermediate), and I know my strengths (good grasp of the grammar) and weaknesses (poor vocabulary with big gaps). I was prepared for my test results to reflect this. What I wasn't prepared for were the instructions - everything was in Korean. In hindsight, this shouldn't have been a surprise. But there were some moments when I was completely lost. Adding to the confusion was simple, but poorly-explained (even on the English instruction sheet) method of filling in the optically scanned test card. Were I giving the instructions in English, I could have said it simply in about three sentences: (1) fill in your answers first with the red pen. (2) the scanner can't read the red pen. (3) at the end of the test, redo your answers using the black pen. These proctors went on and on about this procedure, and frankly I think they caused more confusion than they helped.

    I was really doubting my ability after a few minutes in the class room. Most of the students were conversing in Korean, and asking questions in Korean to the teacher with a confidence and speed that I don't have. I was able to understand much of what was said, but it left me feeling even more unprepared than I was. Fortunately a kind fellow from Uzbekistan sat in front of me, and helped translate some of the proctor's instructions to English for me.

    We had 50 minutes to complete the test. I would have been more comfortable with an hour, but more than that wouldn't have helped me at all. I felt rushed the last 25% of the test, but then again, with my gaps in vocabulary, and these final questions being the most difficult, I don't think I could have done better. In fact, some of these questions I probably missed because I couldn't understand what they were asking, not because I didn't know the language point being tested. There were several questions which listed four complete sentences, and I was supposed to choose one, based on a criteria which I couldn't understand!

    So, we finished the test and handed in our papers. Then we were told to just sit and wait until it was our turn for the next portion of the test. I really didn't know what this "next portion" was. I had read various accounts online, that it was an "interview" or that it was a "reading test", or that you actually read aloud. I wasn't particulary comfortable with any of these, the reading aloud especially (too bad they didn't ask us to SING some Korean out loud, I would have made perfect marks). I probably could have done a self-introduction and interview the best, but alas, that wasn't in the cards. In fact, NOTHING was in the cards for almost three hours of waiting.

    I should explain that the test started at 1pm. We were told to report at 12:30pm. Now in Seoul, from my experience, most people's lunch time starts at 12:30pm. I had eaten a large breakfast, so I wasn't hungry. But after an hour or so, many of the folks were complaining. Some quite vocally. I'm surprised nobody thought to order delivery food, it being so common in Korea. I almost suggested that myself, but I was so embarassed about my Korean I kept my mouth shut. The delay was due to Part II of the test. They took groups of 5 people into a room, and sat them in front of two Korean teachers. This process took about 10 minutes per group. They started this testing at "testing classroom 1", and my class was #6 I think (and there were one or two more behind us). Our classroom held about 30 people, so you can do the math. It was a long wait (hence my newfound detailed knowledge of the Korean middle school classroom).

    Finally, around 4pm, it was my turn. Five of us were taken to sit outside the exam room, where we waited a few minutes until we were ushered in. My Uzbekistan classmate peered in the windows, and reported there were actually two tables of two teachers. One pair of teachers appeared to be very cheerful ladies, and the other table had one lady and one very serious, stern man. Alas, we were finally sent inside to be seated at Mr. Sternface's table. The beginning wasn't too bad. There was a short story about the four seasons in Korea, and some of the typical characteristics of each season (it's hot in summer, flowers bloom in spring...) Starting at one end of the table, we each read a few sentences of the story. I read my few sentences, thus ending the story for the 2nd time. I guess my voice was really shot, because she asked me to start the story again for a third time. Despite my voice, and despite my being the most afraid of sight reading, this was really not very hard. It was still awkward, but they had us read the story silently at first, and it helps that the story was pretty simple and I actually understood it (as opposed to just sounding out words without knowing what they mean).

    For me, the test went downhill from there. They started asking us questions, and she started with me. And this is where my poor vocabulary really "shined". She asked me "how many seasons" are there, but I didn't recognize the word for "season". I had to reply that I didn't know - surely this made me look quite foolish. She let me save face by asking a follow-on question which was much simpler, to which I was able to stutter a hopefully-understandable answer. I was nervous coming into this part of the test, I was doubly so now. So she started asking other students various questions. What messed me up several times was she would ask the same question 2 or 3 times. I would understand the questions and the students replies, and was following along pretty well. One such question, for example, "In the hot summer, in Korea we often eat ice cold noodles. In your country, are there any special foods you eat in the summer?" So my brain was thinking about that topic, and I was fully prepared to give my answer. But when she got to me, she would switch up the question and catch me off-guard. This happened several times, and was quite frustrating. I wanted to scream "let me answer his question"... I did manage to answer a couple of her questions with what I believe were a few coherent sentences, as opposed to one-word or short phrases. But it was discouraging to hear some of the other students smooth, flowing and coherent answers. Especially when I know I can also speak like that, if the discussion centers on a topic for which I have the vocabulary, like food.

    The test mercifully ended, and I breathed a deep sigh of relief. On the way out, I congratulated Mr. Uzbek and wished him a high score. He clearly had a good command of Korean, and I'm sure he'll do well. He was also more observant than me - across from us, Mr. Sternface, who never once asked us any questions, was busily marking our scores on the grading chart. Mr. Uzbek methodically noticed the scores we received! He told me that he got a 4 in every category, and noticed that I got all threes. But some of the other ladies in our group were graded even lower, one lady getting all ones! I'm surprised I even got as high as all threes, and even more surprised to know I wasn't the worst in the group. As best as I could understand, the scores will be posted online next week.

    Being an engineer with a problem-solving mind, I kept wondering how they could have better structured the test to avoid the long wait. I'm not sure it would be possible, short of staggering the arrivals in groups - that would probably be too much trouble. On the other hand, this long wait could have been handled better, if only the length of the wait had been explained in advance. People could have made sure to eat their lunch before arriving. Or they could have brought a lunch/snack with them. They could have suggested ordering delivery food to the students, maybe have some nearby restaurant menus available? Maybe just scheduling the test just a little later, to make sure everyone ate first? As for me, I didn't mind the wait itself, it was just the anticipation of the test which bothered me. Had we done the oral test first, then waited for the written test, I would have been much more comfortable. Oh well, all said, it wasn't that bad, and I would give the organizers a B+ for their efforts.

    Tuesday, January 24, 2012

    Culture Tuesday

    I got some culture in this lazy holiday - went to the theater. The Shin-Yeon Arts Hall, specifically. Chose a play at random, called "The Absurd Scandal".



    That's a loose translation of the Korean title "기막힌 스캔들". That, in turn is a very liberal translation of the original title of this Marc Camoletti play "Pyjamas Pour Six", or even it's English title "Don't Dress for Dinner" (see also here). Despite growing up in and around theaters and drama folks, I have never heard if this play nor this playwright before. He apparently is famous for an earlier 1962 play called "Boeing Boeing" which ran for over 20 years, and to which this 1982 play is a sequel.



    This section of Seoul has a bunch of small theaters, kind of a mini-arts district near Hyehwa Station on line 4. The play was a performed with just five actors and one set, however I noticed online that they rotate four cast members through each role, making a total cast of 20. The play ran about 1-1/2 hours, and kept the audience in stitches most of the time (it's a comedy). Even with my poor Korean, I was able to get about 1/3 of the language, and actually understood almost the entire story just from context and body language.



    In a departure from the plays I've seen in America, the program or flyer didn't list the actors and actresses names (though they are listed on the website, and were also posted on a wall in the entrance hallway). Also, I noticed they spelled the author's name incorrectly ("Comoletti" instead of "Camoletti"), but at least they gave him credit. There was no intermission, I guess because this theater is so small there is no lobby. I made a rough count, and I'm guessing there is seating for 150 to 200 patrons.



    This was a good experience, and reminded me a lot of seeing plays as a kid that my Dad was involved in as Technical Director or otherwise. I will definitely go back to this area and catch some more plays in the future.

    Oh, and lots of good restaurants nearby.

    Here's one which served spicy barbeque chicken, although I ordered a beef and seafood fried rice with cheese-filled-rice-cake "extra". Wow, it was great!





    EDIT: This theater's seats were exceptionally comfortable, and looked like they were Duoback (a Korean name brand of office chair supposedly designed to be an ergonomic fit to the back). However, my back was KILLING me for about three days after this play. I can only attribute it to the fact that I was hunching down to avoid blocking the view of the fellow behind me, and also leaning to one side to see around the person in front of me.