The cooler temperatures of fall awaken my craving for juicy steamed dumplings, which are called mandu (만두) in Korean. Mandu (만두) is fun to make together with family members. Traditionally Koreans do not use recipes… More
Coding is the Art of Automation
Paraphrased from Joma Tech:
Coding is … the art of automation.
– Joma Tech to 16 year old
You delegate tasks to a machine rather than doing it yourself so they can do it automatically.
You give them precise instructions, and that is your code.
https://youtu.be/OnXlnd3JB-8?t=161
Well said, Joma.
How to Install a Printer: Dell B2360dn Mono Laser
Connecting a printer to your computer is sometimes tricky. I got a used black & white (“mono”) laser printer and my computer could not recognize it despite connecting it by the USB cord. Here’s how I finally figured it out. These steps should generally work for adding any older home printer with a USB cord to your laptop or computer, not just the Dell B2360dn Mono Laser printer.
Step 1: Turn devices on. Plug in your printer and computer and power them both on. Connect the printer to the computer by USB cable.
Step 2: Download the printer driver.
https://www.dell.com/support/home/en-us/product-support/product/dell-b2360dn/drivers
Search online for your printer brand + model + driver. That should lead you to the official printer brand’s website where you can search for your specific model, then download the corresponding driver for free.
I downloaded the driver for “Dell Printer Driver for PCL5e…” from this list because the File Name contains “signed” (UPD v3 APW Driver Package_signed – PCL5.zip).
The driver is a software that helps the computer recognize and connect to the printer hardware. These are sometimes downloaded automatically upon plugging in a printer and having internet connection. But for some older printers, these are not automatically downloaded.

Step 3: (for Windows 11) Open Windows search bar, type “printer” > choose “Printers & Scanners” or “Add a printer or scanner” > Add Device > wait a few seconds as it searches, then “Add Manually”.
The printer is not detected by the computer and does not appear on the refreshed printer list, so we will add it manually.

Step 4: Choose the last option in the new popup window, “Add a local printer…with manual settings”.

Step 5: Choose “Use an existing port:”, then select your printer from the drop down list > Next.
Troubleshooting if printer not in drop down: Make sure the printer is on and connected by USB cable to the computer.
This is how I confirmed my printer make & model name.

Step 6: Install the Printer Driver you previously downloaded.
I selected Dell on the left side, then “Have Disk”, and pointed it to the signed driver file downloaded in step 1 that ends in ‘.inf’ file extension.
This is where I read about ‘digitally signed’ drivers and thus opted for the signed option from the Dell website. I had to dig a little amongst the downloaded driver files to find the one ending in .inf. In this case it was DKUD1o40.inf.


Mission complete!
Your printer’s driver is now installed and it should show among the printers list. Happy Printing!
Fall Eggies: Aug, Sept Oct 2024
Last night (just after Thanksgiving) there was a solid frost blanketing the grass and tree branches. I broke up a top crust of ice in the hens’ water bowls. The hens are going to roost with the sunset around 4:40pm and rise at 7am, so they are sleeping well over 12 hours. These are the signs of late fall and winter.

Here is the egg count for the year thus far:
| Month (2023) | Laying Hens | Eggs per Day (avg) | Eggs per Week | Dozens per Week | Eggs per Month | Dozens per Month | Feed Cost | Cost per Dozen |
| Oct | 5.25 | 4.0 | 29 | 2.4 | 125 | 10 | $ 30 | $ 2.85 |
| Sep | 6 | 4.6 | 33 | 2.8 | 137 | 11 | $ 30 | $ 2.60 |
| Aug | 7 | 5.6 | 41 | 3.4 | 175 | 15 | $ 30 | $ 2.04 |
| July | 7 | 5.8 | 42 | 3.5 | 179 | 15 | $ 30 | $ 1.99 |
| June | 7 | 6.2 | 45 | 3.7 | 186 | 15 | $ 30 | $ 1.92 |
| May | 7.25 | 6.2 | 45 | 3.7 | 192 | 16 | $ 30 | $ 1.86 |
| April | 7.25 | 5.8 | 42 | 3.5 | 173 | 14 | $ 30 | $ 2.06 |
| March | 7.5 | 4.5 | 32 | 2.7 | 138 | 12 | $ 30 | $ 2.58 |
| Feb | 5 | 3.8 | 28 | 2.3 | 107 | 9 | $ 30 | $ 3.33 |
| Jan | 3.5 | 2.7 | 19 | 1.6 | 83 | 7 | $ 30 | $ 4.30 |
The “Laying Hens” count is now corrected, which I forgot to do in previous posts. 3 hens have been molting this fall: Waffles, Shaki and Tots. I’m surprised Tots is molting at just one year old, which I realized when she became unusually skittish to the touch and started losing head and tail feathers. The partial hen counts mean that a hen stopped laying (started molting or Nuggo’s henopause) for part of a month.
There is a noticeable decline in egg laying. I now sometimes buy eggs to supplement. I always thought that my hens’ eggs were on the smaller-side compared to large supermarket eggs, but pleasantly found ours to be as big or bigger than large eggs by weight.
I am also perplexed why the 2 year old hens (Brownie, Blanqui, Ramsey) haven’t noticeably molted nor paused laying eggs. Are some barnyard mixes or hybrid varieties capable of not molting?
It’s reassuring that even though our winter egg count is low, the cost per dozen still beats the price of organic-fed, cage-free eggs at Costco or supermarkets. I believe our hens live out better qualities of life than those from best eggs at a premium grocer because their beaks are never trimmed, they can forage bugs (so many worms in the rainy season!), enjoy organic garden veggies, fruits, and grass, and have a large area per bird to roam around. The most comparable brand I have encountered so far are Wilcox Farms pasture-raised eggs (by taste) and Vital Farms Organic Pasture Raised Eggs, but my babies’ eggs have the plus that they don’t require any trucking or logistical delivery to our kitchen.
I want to raise chickens forever!
– Korean Chicken Tender
NumPy vs pandas: .nanquantile(), axis = None
I love Python, particularly pandas’ rich library for data wrangling and mathematical functions.
But today I encountered a limitation of pandas. And it’s predecessor NumPy came through.
I wanted to calculate the average, median, and count of non-null values in a dataset. My dataset is messy and I need to calculate over different columns that aren’t adjacent to each other. For example, I want the average, median and count of all the values in columns 16 and 20. Not 16 through 20. Not the average of column 16, and the average of 20. One single average for the values in both columns 16 and 20.
This is where the “axis” parameter comes in. It usually defaults to axis = 1, ie df.mean(axis = 1), to indicate we are performing the calculation over a single column. For pd.mean(), I used axis = None to get a single mean over two non-adjacent columns. (double-checked it in Excel!)
import pandas as pd
import numpy as np
# df is the dataframe of my full dataset. Here we'll work with a subset of two columns, rows 4 through 54.
hello = df.iloc[4:55, [16, 20]]
# Get mean of the two columns using pandas.mean
calc1 = hello.mean(axis=None)
But pandas doesn’t have an axis = None option for it’s functions to get the median or counts. It only has axis = 0 (over the row) or axis = 1 (over the column) as options, which is inconsistent with the .mean() option.
So this doesn’t work:
calc2 = hello.quantile(0.5, axis=None)
>>> ValueError: No axis named None for object type DataFrame
But hello NumPy! You do have axis=None available for these functions! So let’s import numpy.
My dataset has more than half of NaNs (null values) which I didn’t want to include for the median calculation. So I used np.nanquantile() in order not to count them. The np.quantile() function does count them and was returning a median value of ‘NaN’, which wasn’t what I wanted.
For the count function, we are getting a little creative by first counting all of the non-null values in the hello df (using pd.count()), then summing them up so that we can count across all multiple columns.
calc2 = np.nanquantile(hello, 0.5, axis=None) #numpy quantile allows axis of None
calc3 = np.sum(hello.count())
Thank you NumPy for saving the day! Although pandas is built on NumPy, I’m glad the libraries’ distinct features are all still accessible and that NumPy hasn’t deprecated.
I love Python! And now I love NumPy!
How to Import Tables with DataGrip
This is part 2 in continuation from the post Your Personal Database.
Now that we have a personal SQL database set up in DataGrip, let’s import our first data table. Note that this is for a personal database set up on a local computer. Not a shared database connected to an online server (which is what most companies or organizations would use).
Here’s how to import a table:
Step 1: Find the “public > tables” folder to which tables will get saved.
Starting with a fresh PostgreSQL database set up, this was located in postgres > public > tables.
If you do not see a “tables” folder, then use “public”. The tables folder will get automatically created upon importing your first table.
Do not use “Database Objects” or “Server Objects”.

Step 2: Right click on “public” or “public > tables” folder > Import/Export > Import Data from File(s).

Step 3: Select the data file to be imported as a table, then ‘OK’.
Make sure the file is closed. For example, do not have the .xlsx or .csv open in Excel on your computer, or else you will get an error.
Note how many rows of data the original file has (will use for validation in step 5).
Step 4: Set import format settings and set up SQL table.
Select the file format (top left corner).
Check “First row is header” if it applies (this is not checked by default).Z
Set the SQL table name (top right).
Review the header names (middle right). Double click on each and rename column names to lowercase with underscores replacing spaces in order to avoid using quotes ” to reference column names in SQL queries. You don’t need to redo this step when importing new data into this table in the future (but you can go back and edit).
Click “Import”.

Step 5: Validate that all data rows were imported.
A popup will appears in the bottom right corner showing how many rows were imported, and if any, how many errors were written.
Check #1: The number of rows imported should match what you expect from the original data file. For example, my data has 64 rows in the original CSV – (1) header row, and (63) data rows. So I expect 63 rows to be imported to the table.
If there were any errors, they were not imported into the data table. Investigate, fix, and re-import.

Step 6: Verify that the data looks right.
The newly imported table now appears under the “tables” folder on the top left corner.
Double click on this to view the table within DataGrip. Check that the data looks correct and as you expect.
Issues might include:
– Dates are blank or missing values (check that they have the right data type in Step 4, ie Date or Text)
– Too many rows: Old data on the table was not deleted, and newly imported data was appended on instead of replacing the old data
Step 7: Test it out!
See if it works!
SELECT * FROM new_table;
Happy SQL querying!
Blackberry Jam Recipe
In the Seattle area, invasive Himalayan blackberry vines abound with thorny branches and complex root systems. From my experience, these are the #1 most difficult weed to remove because the thorny branches always leave bloody battle scars, grow extremely fast, and it’s never clear how extensively the root system goes. Even their serrated leaves have thorny center veins!
But there is one silver lining! Once a year, at the peak of summer (usually late August), they yield a bounty of edible fruit with rich flavor and big seeds.
Walking back from the library, I scouted a blackberry patch on an abandoned lot. These berries grew with less exposure to car traffic and pollution being on a quiet residential street. I later set out with the hubby and big bowls to harvest as much as we could until we couldn’t tolerate the thorny pricks, stings and sticky berry juice stains any more. I blended the berries, strained out the big seeds through a sieve, and set out to make blackberry kombucha and enough preserves for the year. These can be enjoyed with plain greek yogurt or in baking.
For the first time, I got fruit jam to set! 2 full days after preparing the blackberry jam and putting some jars in the fridge, I tilted them and noticed they were no longer watery. Yes!
Here is the actual recipe I used, which is based on the tested Ball recipe from my pectin jar label. This was my first serious attempt at making jam and the result is good, but I don’t feel it’s good enough to share as a gift to neighbors or friends. I include notes for future recipe improvements.
Improvements for Next Time:
- Use less water: There is a half inch of excess water above the set jam in most jars.
- Use slightly less pectin: The jam is a little thick like jelly, whereas I’d prefer a spread.
- Keep more seeds: I like a little more visible seeds
- Try sugar instead of honey: There is a distinct honey taste. I don’t mind, but sugar is more neutral.
- Add lemon or lime juice to add slightly more tartness
Ingredients
- Yield: 12 half pint jars + a quarter pint
- Total process time: 2 hours. Start a few hours before dinnertime!
- About 2kg or 4.2lbs freshly picked blackberries, washed and rinsed
- 14 tablespoons of low/no-sugar pectin (next time: try 12 tablespoons).
- 2 cups or 500mL of water (next time: 1.25 – 1.5 cups)
- 510g (about 3/4 of a bear bottle) of Organic Raw Honey
- Next time: Juice of 1 or 2 fresh squeezed lemons
Tools
- Pressure Canner (Presto Model 0178)
- 12 quart stock pot
- 12 Half-pint mason jars, canning lids and rings, sterilized in boiling water
- Wide mouth funnel, canning tongs, hot jar wrench
- Blender
- Strainer
- Boiling tap water to submerge jars in the canner
- Timer
Steps
- Blend blackberries and strain out the seeds in batches. Pour fruit juice/non-seed pulp into stock pot.
Note: The seeds comprised about 1/4 of my blackberry weight. - Add some seed pulp back to stock pot, to taste or visual preference. I used 70g of seeds, next time try 150g of seeds.
- Heat berries. Bring berry stock pot slowly up to a boil, gradually stirring in pectin. Break pectin clumps and stir continuously. Bring to a full roiling boil that cannot be stirred down.
- Add sweetener and boil 1 minute. Sugar or honey. The blackberries are not sweet enough for my taste to make a true no sugar jam. Some day you’ll be hardcore. Add lemon juice here and taste test. Return to a full rolling boil for one minute (set timer).
- Remove from heat. No need to skim foam per Ball, it will go away!
- Follow canning directions to water bath 12 jars’ worth of delicious preserved blackberry jam, with a little extra (quarter pint) to enjoy without canning.
- Chicken snack. Feed excess blackberry seed pulp to chickens! They will love it, and you will love not having anything to throw away!









June & July Egg Eggies – Heat, harmony, & 6 a day!
It’s mid-August and the first heat wave has struck Seattle this summer. The highs are near 90 degrees and my back porch thermometer reported 96 degrees due to a greenhouse effect from the semi-transparent porch roof.
When it’s hot like this, with highs above 80 degrees, I check outside every hour or two to observe how the chickens are coping. They hold their wings apart from their body, pant, hang out in the shade in the north side of the house, eat less grain, and need their water bowls refilled twice dailyi. I give them kale and outer cabbage leaves in the evenings because their appetite for salad spikes. The older hens (las reinas) tolerate the heat best, while the youngest ones (las angelitas) pant and show signs of distress the most. Each year they learn to cope better.


I am grateful for these hens and the bounty of eggs they lay for us. Here’s the egg count for June, July and other months thus far:
| Month (2023) | Laying Hens | Eggs per Day (avg) | Eggs per Week | Dozens per Week | Eggs per Month | Dozens per Month | Feed Cost | Cost per Dozen |
| July | 8 | 5.8 | 42 | 3.5 | 179 | 15 | $ 30 | $ 1.99 |
| June | 8 | 6.2 | 45 | 3.7 | 186 | 15 | $ 30 | $ 1.92 |
| May | 8 | 6.2 | 45 | 3.7 | 192 | 16 | $ 30 | $ 1.86 |
| April | 8 | 5.8 | 42 | 3.5 | 173 | 14 | $ 30 | $ 2.06 |
| March | 6 | 4.5 | 32 | 2.7 | 138 | 12 | $ 30 | $ 2.58 |
| Feb | 6 | 3.8 | 28 | 2.3 | 107 | 9 | $ 30 | $ 3.33 |
| Jan | 6 | 2.7 | 19 | 1.6 | 83 | 7 | $ 30 | $ 4.30 |
Observations:
- May was the peak of egg productivity with 192 eggs that month, costing $1.86 a dozen (organic, pasture-raised).
- June is close behind with 186 eggs at $1.92 a dozen. It’s downhill from here due to the shortening daylight!
- Longer daylight and sunny days induce egg laying, not warm temperatures.
- Now, in early August, the sun rises about 2 minutes later and sets about 2 minutes earlier each day. I expect greater decreases in eggs for the remainder of the year.
- Brownie and the two youngest hens (Misty and Tots) are finally living in harmony! After many months of Brownie spontaneously puffing up her feathers and terrorizing las angelitas, they now share moments of dust bathing and pecking at grass seeds within a few feet of each other. It’s wonderful to see your children getting along after months of bullying and fighting. Brownie was the lowest on the pecking order (Rank # 6), so I suspect she wants to make it clear to the newcomers she will not be outranked.
- Tots glucks in fear every time Brownie gets near, which instigates anger and a peck attack. She has been getting better about staying calm and not becoming an easy target.
- Tots and Misty still appear to be in equal rank, but occasionally they challenge each other and puff out their hackles (collar feathers).
- Hens abhor equality, so Tots and Misty will likely have a fight and set their positions for Number 7 and 8 in the pecking order — they cannot both stay tied for 7th. It’s only a matter of time.

Hatch Chiles – “It’s a wonderful thing to buy a case”
Since last summer, I’ve been patiently keeping an eye out for Carpinito Bros’ hatch chile roast. They bring up boxes of real hatch chiles from Hatch, New Mexico and fire roast them in a rotating barrel drum. This past weekend was that once a year event.

These peppers bear a special significance for me, fondly recalling my time in Colorado. I remember passing by gas stations with farmstand peppers set up with and barrel roasters which blister the pepper skins. Those hatch chiles and Palisade peaches are the taste of Colorado summer.
Come to think of it, various peppers in are nostalgic for me – stay tuned for future stories about ají amarillo, ají charapita, 홍고추 (hong gochu), 풋고추 (put gochu), 오이고추 (cucumber pepper), 꽈리고추 (shishito pepper).
Medium and Hot level hatch chiles were sold by the pound in freezer-safe bags. I picked up two bags, about 3 pounds each. When I checked out I realized I had bought much less than half a case’ worth of peppers for over half the case price. My sometimes irrationally frugal spirit could not tolerate paying more for less. “Can we change these for a case instead?” emerged from my lips.
Several minutes later I’m loading up a 25 pound box of hatch chiles. Kudos to the young men who fire-roasted these peppers under the afternoon sun. I felt a bit overwhelmed by this decision to bring home a case of one crop, but the worker assured “It’s a wonderful thing to buy a case”. I wondered if this was the start down a deliciously dangerous path, remembering my great aunt who buys cases of blueberries and tofu. I was now committed to peeling and canning 25 pounds of roasted peppers that night.
I learned that hatch chiles are the same as anaheim peppers, but which are grown specifically in Hatch, New Mexico. So hatch chiles grown outside of Hatch are called “anaheim”. I picked up a couple which a fellow customer New Mexico recommended for stuffing.

My car has a lingering scent of roasted hatch, and I love it.
The Metro Knitter
“You can take one item, decide what you want first and touch only what you’re gonna take.”
She referred to the King County Metro mousepads, coloring books, coasters, and foam bus figurines on her fair booth. There were pamphlets in many languages promoting working at King County Metro.
I asked her, “What’s it like working for King County Metro?”
“Depends, who’s asking?”
“Me”. I wanted to learn about the work culture in context of a corporate job in IT, but left my query open. I was curious what she’d share.
She started talking about her gig as a 15-year veteran bus driver. “Drivers are viewed as disposable, which builds strong camaraderie between them.” She lamented that their contract ended nearly a year ago in October, and is still up in the air with a proposed 0.5% salary increase over 3 years for the drivers. (“Hello!” I thought. Have they not seen the recent inflation?) “But great insurance, starting with just 20 hours a week. My dentist says I have excellent coverage.”
The picture she painted contrasts starkly with the impressions I get from Metro’s LinkedIn posts of smiling, fairly-compensated bus drivers. I asked her, “If you have any ideas to improve things, do you have a say? Is there anyone who listens to you?”
“Hell no! I’m just a bus driver.”
She mentioned an app that sends updates by text or email on route cancellations. She uses this for the 2 routes she takes to get to work. “Most bus drivers take public transportation to get to work – bus and trains.” Also, Sound Transit owns their vehicles (the bus and train cars), but King County Metro drivers drive them.
“How is bus repair and maintenance handled?” I ask.
“They used to keep spare parts. Then they started this “LEAN” program, and now it’s a mess. It causes lots of service cancellations because they don’t keep enough spare parts in stock and have to order them and wait. Yes, cancellations happen due to a shortage of drivers, but its also from a shortage of working buses as they wait for repair.”
“That’s scary. How much notice do they give you if your route is cancelled because the bus isn’t available?”
“You find out when you arrive for work.” (I thought, What?!)
“You can get paid if you sit and wait there [at the transit center, in lieu of driving].” (What?!?)
“To get paid, you have to sit there?”
She shows me her green circular knitting. “That’s why I always bring these with me”. “On my 50th birthday, [that year] I knit 112 hats.”
“I used to drive from North Station. One fall, by 145th, there was a man who asked me for money. I never give money. But I offered him a hat. He lit up and said it was his girlfriend’s favorite color. The next day, I saw her wearing that hat. Soon, the whole [homeless] camp by 145th was wearing my hats!”
I felt a special sense of pride, and savored this. She seemed different now. Composed of a mixture of necessary grit and voluntary compassion.
She showed me how she leaves a row of 8 purl bumps in contrast to the single rib-stitch near the edge to remember she used size 8 needles for that particular hat. She’ll reference those purl bumps to remember to use size 8 needles to make a matching sweater of the same gauge later. I know from experience it’s easy to forget these things and one often doesn’t have a pen and paper or phone handy when knitting in public places, so this seemed ingenious. Especially when you’re churning out 112 knitted hats in a year.
We chatted about Terry White, Metro’s recent outgoing general manager.
“He doesn’t care about the drivers.”
“But he worked his way up from the bottom!” I protested.
She said he worked his way up but from other King County departments, not Metro. The meager proposed wage increase of 0.5% over 3 years roused her indignation again (mine too) and that informs her view of Terry. She doesn’t have a view yet on the new general manager Michelle Allison.
This showed me how our views on senior leaders can be shaped heavily by the decisions that affect us directly. It’s not the whole picture, but what affects us directly has more weight.
Also, I realized that the impression a company or organization gives on LinkedIn is curated, and not the whole, honest picture.
If you like this topic, check out my post “The Lines that Make Us” with an excerpt written by Route 7 bus driver Nathan Vass.
April & May Eggs – $2 a dozen!
The days are getting long now as we near summer solstice. There’s still light in the sky at 9pm! The hens rise around 5am and go to roost around 8:45pm. It intrigues me how they are used to such variable sleep over the year, because in the winter they rise around 7am and roost at 5pm (over 12 hours of sleep!) vs around 8 hours in the summer. This post’s photo features the 2 new layers, Tots (golden cheeks) and Misty (grey).
Here is Korean Chicken Tender’s April and May egg counts!
| Month (2023) | Laying Hens | Eggs per Day (avg) | Eggs per Week | Dozens per Week | Eggs per Month | Dozens per Month | Feed Cost | Cost per Dozen |
| May | 8 | 6.2 | 45 | 3.7 | 192 | 16 | $ 30 | $ 1.86 |
| April | 8 | 5.8 | 42 | 3.5 | 173 | 14 | $ 30 | $ 2.06 |
| March | 6 | 4.5 | 32 | 2.7 | 138 | 12 | $ 30 | $ 2.58 |
| Feb | 6 | 3.8 | 28 | 2.3 | 107 | 9 | $ 30 | $ 3.33 |
| Jan | 6 | 2.7 | 19 | 1.6 | 83 | 7 | $ 30 | $ 4.30 |
The cost per dozen has gone down because there are 2 new laying hens, all hens are laying almost daily, elder Nuggo occasionally left henopause, and we’ve been able to stretch a bag of organic feed for longer thanks to a Treadle Feeder.
I have been very satisfied our RentACoop Treadle Feeder which has saved me lots of time and feed. My feed costs continue to be the same going from 6 to 8 layer hens because wild birds don’t eat from the feeder. I refill the feeder about once a week now. It’s more frequent in the longer summer days because the hens are awake and active for more hours. Back in February, it was once every 2-3 weeks. One feeder is sufficient for all 8 hens, and this is much more convenient than the conventional feeder I used to refill every 2 days. The feeders are expensive but very much worth it. After patient searching, I found a new open box feeder on Marketplace for about $80 instead of the retail $145.
Thank you dear hens for providing delicious, nutritious organic pasture-raised eggs for under $2 a dozen! Me and my husband do eat all these eggs. They have become a staple in our diet!










