Monday, April 6, 2020

Vegetarian curry noodles



One of our daughters is originally from China and she is obsessed with noodles. My wife makes awesome miso kimchi noodles, that is a go-to.

As one of my favorite foods from pre-veg days was Singapore chow mei fun (Singapore style fried rice noodles with curry sauce & meat), I wanted to try to make something similar.

Making this is fairly effortless now, so I don't follow much of a recipe - it's mostly an excuse to "eat down" whatever vegetables are still good, but a little long in the tooth. I'll try to call out the important bits.

I'm also awful with sizing things. Pours are a "bloop", spices are a "blop". You know when you've done wrong.

Ingredients

  1. Dry rice noodles & water to cook said noodles. Maybe 2-3 blocks of noodles.
  2. Oil
    1. canola, vegetable - the cheap stuff - used for frying
    2. sesame oil - the expensive stuff - used for final dressing.
  3. 2 eggs
  4. Spices
    1. curry paste or powder
    2. cardamom powder
    3. salt
    4. pepper
  5. Chopped Vegetables
    1. Ginger (if you don't have ginger, you can substitute with spice powder. I also really like buying tube ginger when I find it. So much easier than mincing ginger).
    2. Garlic and/or Onion - your aromatics
    3. (Frequently) Mushrooms
    4. (I would use, but she's not a fan of) Carrots
    5. (ALWAYS) Cabbage, pref nappa. 
    6. (Sometimes) Zucchini
    7. (Frequently) Bell peppers
    8. Other veggies - sure! I've even thrown in some chopped avacado after the cooking is done. Make sure to salt it with a nice chunky salt.
  6. Sour liquid
    1. I like & use mirin a lot - it's a good, kind of sweet flavor, but sometimes will use cooking sake. Whatever my hand hits first in our "cooking supports" cupboard.
About that cabbage - I fell like cabbage gets such a bad rap, and it's delcious. Stays crunchy on a fry, I love the texture. Cabbage all the things!

Steps
  1. Get water boiling for noodles. Don't put your dry noodles in yet - they will cook in about 2m, and you want them slightly not done, so they can finish cooking with the good stuff below.
  2. Get your wok on med/high heat with a bloop of frying oil. Let it heat up. If you don't have a wok, a regular pan is fine, as long as it has sides so stirring veggies doesn't make a stove mess.
  3. Beat eggs with curry paste/powder, salt and pepper.
  4. Cook your eggs, but not completely. Cooking will happen super quick & they should a bit liquidy . Throw them right back in the container you used for beating.   
  5. If you need an extra bloop of frying oil, add it here.
  6. Add your ginger, garlic / onion
  7. Throw a little bit more curry paste / powder & cardamom on. Stir together for about 30s, so they cook but do not burn.
  8. Throw in your other chopped veggies. This being a stir fry implies that you will stir, while they fry.
  9. Salt & pepper the mix. Cook maybe 2-3m. It's an art, not a science.
  10. Remember the boiling water? You're going to want to throw in the noodles here.
  11. Add a bloop of the mirin or sake (or whatever sour liquid you pick). Cover the veggies & let them steam in it. 
  12. When the noodles are not quite done, pull them out & throw them on the wok & mix with the rest of the stuff.
  13. Remember the eggs? Throw them in now too.
  14. Stir. Fry, maybe another 2-3m
  15. Turn off the heat. dress with a little bit of the expensive sesame oil. Mix. 
  16. Salt to taste to get flavors to pop.
Enjoy!

Photos
Ignore the mess. Life is suffering and chaos

stir fry



nappa cabbage!

noodles, quick boil

steam veggies in cooking sake

final mix with egg




Friday, April 3, 2020

Zoom resources

Available to the public

Labelling as alcohol, because zoom is where I'm meeting friends for drinks during Covid 19.

How I work

In no order, and in a list that will be augmented over time, here's some best practices that I've developed for work. This is tech heavy.

YMMV. No animals were harmed in the creation of this list.


  1. If you are bored doing a thing, go do a different thing.
  2. Microsoft OneNote is your friend. It should be always open on every computer you use and you should be effortless with its usage.
    1. Assign a Windows HotKey to OneNote. Windows+7 (lucky number) gets me there on every computer I own.
    2. Create a diary tab. Every day gets a diary page in that tab, which will have cruddy notes about what you're working on. 
    3. Do NOT curate your diary entires. Write it and walk away. Curation is a suckers game here and you will lose; The idea is just to write something down as you're doing it.
    4. Create a contacts tab. That's where you list who you know & what they do.
    5. Create a TODO tab. This contains checkbox lists of parked things that YOU and YOU ALONE are working on. Check the boxes as the jobs get done. It should be effortless to add a TODO.
    6. My TODO tab has 2 pages, one for personal TODO and one for subjects I need to discuss with my supervisor that do not require immediate attention.
    7. Create an interview tab for notes during interviews, duh.
    8. Other tabs for more significant projects that you're working on, pages in those tabs. 
    9. OneNote is designed to be a hot garbage mess of your thoughts. It's ok.
  3. Tasks that require collaboration or more ceremony should be thoughtfully put into whatever task tracking system you use. We use Azure DevOps. Others do not.
  4. While trite, "Be the change you wish to see". Seriously. Complaining = volunteering to own a problem.
  5. Everything is absurd.
  6. Make a good playlist for getting stuff done. Here is mine.
  7. Allocate an hour of time a week to go over your backlog of work. Block it on your calendar and don't let anybody schedule over it. This is time for you to go over any personal or group tasks and curate them - is it really active? is the language precise about what needs to be done? We're not writing Tolstoy, but collaborative tasks should be written in a way that all stakeholders can understand them.
  8. Going from 0 to 1 is hard. Going from 1 to 2 is easy. Better to get something written and iterate towards better than wait until the initial delivery is perfect.
  9. Do you work out loud and model good behavior for those around you.
  10. In computer programming, there is no magic. Everything happens deterministically for a reason. That reason can be highly complex, but is not magic.
  11. Eat your own dog food. Use the tools you create, so you can make them better.  
  12. "Make the space better for me having been there". Every time I edit a file to make a change, I see if there's other work that I can do that would be safe but make the file a little bit better - better comments, more tests, etc. See safe refactoring rules.  
  13. Everybody's time is precious. Remember your "pleases" and "thank you's". Politeness is a sign of a well functioning social order.  

Thursday, April 2, 2020

Drink recipe: Brenda


  1. Shot of gin
  2. 1 Tbps of rosemary syrup (simple syrup & throw in a big sprig of rosemary. you're welcome).
  3. fill the remainder of the glass with equal parts 
    1. cheap Aldi Belle Vie Lemon Water 
    2. cheap Aldi Burlwood extra dry sparkling
  4. Shake, serve over ice, garnish with a dagger
I call it Brenda.  Pairs well with Lays sour cream & onion chips.

Saturday, March 14, 2020

On Prioritization: Your Team Structure Articulates Your Goals

Of the three legged stool that defines the controllable outputs of development of a software system
  • Features
  • Performance
  • Stability
it's self evident that everything comes at a cost; you have to employ prioritization to determine what gets the most focus.

More time spent on features equals less time spent on performance and stability, and vice-versa.

Imagine having a development team that has 1,000 hours of capacity. How do you split the time? 333 1/3 hours per output? Are you feature driven: 600 hours spent on features, 350 on performance and 50 on stability?

Everything is a choice.

Note, I'm specifically avoiding what might be called Engineering as a controlled output. Mostly, customers don't directly notice Engineering - they can't tell if my interfaces are clean, if I'm employing a single responsibility principle, or my code is a spaghetti mess of variables named x1, x2, x3, ... x999 looking like it was produced by a poorly written minifier.

Certainly Engineering is indirectly noticed, as poorly Engineered software requires more resources to add Features, is less likely to be Stable, etc. That frequently manifests over the software system's lifetime.

So, we have our software system, and we've made our choices about who is working on what, and for how much time.

Easy peasy, right?

Maybe. Maybe not. There are other inputs to this problem. 

Regardless of the time allocation, how have you segmented your development teams? 

If your teams are aligned around a Feature, they're going to have a Feature mindset. They will communicate with other teammates about Feature implmentation. Regardless of direction around resource allocation, Features will be artifically weighted.

I'm being delibarately provocotive here. Many of us, myself included, are used to teams with Feature segmentation. For developing a software system of any complexity, it just makes sense - separate into feature based bounded contexts, and throw a team on each context.

I challenge myself to not default to that muscle memory way of team creation, and to be considerate to organizational structure when laying out goals. 

Pasta de Olio and Mushrooms

crazy easy


  1. make pasta
  2. olive oil glug
  3. garlic, pepper, italian spices (bonus points for fresh basil)
  4. cook a bit
  5. chopped mushrooms, big dollop of butter
  6. cook a bit more, throw on some salt
  7. small dollop of pesto
  8. cook a bit more
  9. stir in cooked pasta to lap up all the good bits

Sunday, March 8, 2020

Effective Online Meetings

As more employers are contemplating work from home due to concerns around spreading coronovirus, I want to share some of my random throughts around how to have an effective online meeting, regardless of underlying technology (Microsoft Teams, Cisco Webex, Zoom, etc.)

I've been primarily working from home for the past 13 years, so I've gotten a lot of practical experience.

  1. Use your camera (assuming bandwidth supports it). It's better to see faces and pick up on the nonverbal cues that we use for communication.
  2. Mute and unmute quickly. This will limit background noise and allow the speaker to be more focused. My tech (Microsoft Teams) has a software mute button, but I prefer the hardware mute button on my headset, because I can quickly press it, share my thoughts, and then mute myself without much effort of reaching for the mouse. 
  3. Keep it light. Meetings are less effective when people go in scared to contribute. I like to start things off light (a couple of bad dad jokes maybe), introductions to participants that I don't know or don't know each other, and then try to get into a groove of productivity.
  4. Give time back. If you've accomplished what you need to accomplish, no need to stay on for the entirety of the scheduled time. People are busy. Give them time back to do their things.
  5. Consider recording. Generally, recording is cheap / free. If anything about the meeting feels relevant to others, start off by recording (I like to announce the date & subject at the beginning). This can be a tough one, as recording can make some less likely to contribute. Also, recording should not take the place of good note taking with action items. I'd rather browse a well written set of notes than sit through a 30m recording to discover outcomes.
  6. Play. The underyling tech is your tool. Learn how to use your tool. Learn how to screen share, learn how to record, etc. I will sometimes grab coworkers that are friends and (if they are not busy) have them join an impromptu meeting where we play with features of the meeting tech. Play yeilds familiarity, where you can use these tools effectively and be a tech leader in your organization.
  7. Phrase questions in the negative. When I assume that everybody understands what I've been talking about, I will say "shout if you don't understand", and then give a healthy pause. I don't get visual cues about understanding like I do with a real life conversation, and having everybody vocally assert the positive ("yes, I get it") gives a lot of unnecessary cross talk.
  8. Pause. There is a sub 100 millisecond delay that we have online that we don't get in real life. Account for that by communicating an idea, and, especially if it's controversial or tough, give a healthy pause for others to participate.
  9. Enable participation. If there is cross talk with different people trying to talk at the same time, the meeting organizer should be the "switchboard operator" and let each of them go in turn. If you have cross talk with somebody else, do the polite thing, and let them go first. For some of my regularly scheduled meetings, I also like to force participation: everybody talks (gives a status). 
  10. Focus. I have 4 monitors in front of me. They can be very distracting, and meetings are not the place to multi-task. I like to minimize all other windows, have one monitor dedicated to whatever is screen shared, and one monitor dedicated to the participants view. The more focused, the faster we can accomplish what we need, and the faster we can get out.