Sat Sep 26 2020

I have not talked to anybody since monday.

Oh wait that’s not true. Yesterday I said hi to a neighbor who I crossed paths with as she walked her dog on the street. I was walking the garbage can to the road at a little past 8 when I saw her.

I was thinking of slowing my roll so I would get to the street when she had passed, but I thought of all the CBT work I’ve been doing and I decided to stay calm and not change a thing about my pace.

I got the the road and turned the garbage can to face the street. The woman and her dog approached and she and I exchanged hellos. Her large dog then jumped up on me and I was surprised at the dog’s soft fur. She apologized as it seemed that her dog was too big for her to hold back, or maybe it just caught her off guard. She said sorry and told her dog to get down.

I said, “cute dog” and I didn’t even feel bad about saying it. In that moment I felt vulnerable but I didn’t mind. It was a nice thing to have an short greeting with a stranger and I got to say hi to her cute doggy.

There was no mail. I walked back to the house after that.

I had an opportunity to get on Discord voice chat with Nerds United, but I didn’t do it. Nobody invited me or anything, but my TODO list was pretty much filled out and I felt like it was time to chill out.

I didn’t chill out LOL. I said fuck it and I did more work, even though I should not have been working. I already completed ALL work Pomodoro sessions for the day, but it felt like I could be working because of how my sleep schedule was.

I ended up downloading a few games and working on a music track in LMMS, but then I translated some more paragraphs from the Prememo Rulebook. Luckily I kept to my pomodoro habit, and limited myself to one pomodoro session, 25 minutes.

Today is a new day! I’ve started checking of boxes on my todo list already. I woke up at 2AM, and it’s 3:15 now. I picked & packed one eBay order, meditated, had breakfast, and now I’m working on my journal.

I have a bike ride later today. Hopefully the weather calms down and we can have a nice day for riding. The past two days have been windy and rainy. Forecast for this morning says partly cloudy, 46..50 °F, 11-14 MPH. So that kinda sucks, but it’s better than rain!

Sunday and Monday are looking warmer and sunnier, with less wind. Well, this is just the seasons changing. We’re transitioning into fall.

I’m reminded of Waking Up meditation app in which Sam Harris talks about how life is impermanent. There is going to be a last of everything. I will die eventually, but before that, I’ll have my last day. I’ll have my last sleep.

I may have had the last beautiful summer day of 2020, and it came and went without me even noticing.

Going forward, I anticipate regular challenges for me to get groceries. My options are to brave the wet, rainy weather on bicycle, order groceries to be delivered, or tag along with a family member as they do their grocery shopping.

I’m grateful that I have options. It’s not like I can’t buy food. I still have government food benefits, which are sufficient in keeping me fed.

Aaand I’m out of things to talk about.

Ironmouse had a stream last night, in which she played Among Us with friends. I caught a bit of it, but as per usual, I prefer streams where Mousey doesn’t play games. When she plays Yakuza solo, that’s a pretty good time though, because Mouse does character impression voice overs, adds her own dialog, and it’s really humorous.

I’ve made some significant advances in my React.js knowledge. I was really struggling with how to implement a set of actions in the customer profile.

The customer sees their profile, with their shipping address. They can click an edit button which takes them to a screen where they edit their address. They enter their address, click save, which commits that address to the database, then makes a Shippo API request to validate the address.

Shippo responds with VALID or INVALID with an error, and the customer can act on that. Often, the Shippo address validator makes corrections such as adding a full ZIP+4. I made a react component which presents the correction to the customer, which they can use or reject in favor of the address they entered.

Tying that all together in the React way was a challenge. My instinct was to create custom logic in functional code that chose which page to route to.

Luckily, I discovered a React container component pattern which separates components which fetch data from components that render markup. By separating the two, the components which render markup become incredibly reusable, and no longer depend on the exact same conditions for being called.

I also discovered what I think is imperative programming. I think that’s what it’s called. It’s basically the holy grail of interface design. Instead of coding large if-else logic trees which determine what should be displayed, I can keep my code super simple.

I think I need to do more research on this pattern, because I can’t explain it.

Here’s the code!

import React, { useState } from 'react'
import AddressChooser from './AddressChooser'
import AddressValidation from './AddressValidation'
import AddressEditor from './MailingAddressEditor'
import Address from './Address'
import { Trigger as Spinner } from 'grommet-icons'

const validatedAddress = { // @TODO tie in the shippo API
    name: 'taco del mar',
    street1: '1234 del toro ave',
    street2: '',
    city: 'Tacoma',
    state: 'WA',
    postalCode: '83428-885',
    country: 'United States'

const AddressWrapper = ({ user }) => {
  const [ isEditMode ] = useState(false);
  const [ isSaving ] = useState(false);
  const [ isValidating ] = useState(false);
  const [ isChoiceNeeded ] = useState(false);

  if (isChoiceNeeded) return <AddressChooser entered={user} suggested={validatedAddress}/>
  if (isValidating) return <AddressValidation user={user}/>
  if (isEditMode) return <AddressEditor user={user}/>
  if (isSaving) return <Spinner size="large"/>
  return <Address user={user}/>

export default AddressWrapper

This is an incomplete example, because some of those React.useState() hooks shouldn’t be there. Instead, they should be delegating to a custom hook which will determine the app’s state.

Work in progress!

CBT Forgiveness

reading this page brought up some intense feelings. I felt haunted and grief-striken. I felt insecure. “I can’t let him know that that bothered me!”

I think of forgiveness as me going to a person who hurt me and talking to them and saying I forgive them to their face. I can’t do that. That’s what I’m feeling scared about.

Apparently, forgiveness isn’t going to the person and talking about the thing that hurt me. Nope, forgiveness is a gift I give myself. I’m the one who is suffering from the pain.

The person who hurt me might have already moved on from whatever it was that I’m still fixated on.

I’m the one who dwells on wanting to make up for it with either punishment or revenge, or getting to a place where i can “prove them wrong.”

Forgiveness doesn’t mean I have to forget, and it doesn’t mean I have to give them permission to do it again. In fact, what they did was probably not acceptable and it should not be allowed to be repeated.

I don’t have any specific situation I’m thinking of that I want to forgive my father for. To think of a specific situation would bring up uncomfortable emotions.

#9 on this list mentions, “Allow yourself to experience the full range of feelings that emerge.” That would entail being uncomfortable, damnit!

This is emotional work, which I am not good at. For fucks sake!

I want logical work. I want eazy mode!


Hey, anger is an emotion and I jumped to that one just fine. So it’s not the emotions that bother me, I think it’s the situations that I’m repressing that bother me.

3. Make a list of what specific actions you need to forgive. What was actually done that caused you pain?

Ok I’ll think of a situation. Spokane wind storm 2017? 2015? I can’t remember the date.

Our house was out of power for over 7 days. Because there was no electricity to heat my apartment, I had temporarily moved into my parent’s house so that I could stay warm from their fireplace.

Every day my dad would chop wood for the fireplace, so the house could be kept warm. We had a generator that we would run so we could charge phones and have some light.

After a week of this, my dad became frustrated. He awoke one morning and from the living room, I could hear say, “I don’t want to do this, I don’t want to do this, I don’t want to do this!”

He assigned some chores to my brother D. and I, then he asked if there was anything else I would like to do. I said no. He got very upset and he said something like, “If it weren’t for me and your mom, you would be much worse off.”

He also said something that I can’t recall, but the sentiment was that I was lazy and it just took me straight back to my childhood where he would get angry with my siblings and I after losing patience with us. “YOU KIDS!” he would say.

I felt betrayed and scared and angry. I left the house and I thought of all sorts of terrible things. I thought of harming myself. I thought of ending my life to make him feel remorse. I thought of running away, cutting myself off and and never coming back. I thought of begging for forgiveness and promising that I would do whatever he wanted.

Now I just laugh at the things I wanted to do. My codependence at that time is so obvious now.

So the specific actions that I need to forgive are

  • That my dad became patience and took out his frustration on me

I’ll end forgivness work for today. Tomorrow I will pick up on #4.

Wrapping it up

12. I am smart.
13. I believe I can change the world (or at least my corner of it)
14. I am important.

I’m grateful for the work I’m putting in on CBT and all that shmeah. It’s a pain in the ass, but it has good rewards.

I’m grateful for Miku-san! I just turned over to my monitor with her as wallpaper, and I touched my screen, imagining that I’m touching her cheek. What would her skin feel like? Warm, I imagine, and smooth. Does she even have pores? Software defined pores, yes! They’d be PERFECT and free of dirt and oil, and nice and TIGHT. Does Miku even have body oil? Yeah, it’d be a perfect LUBE which has her fragrance in every drop!

OMG that’s HOTTT!

There I go, talking about cute girls after I talk about my painful relationship with my dad. That’s so fucked up! Why do I do that? Is it because I suppressed my sexuality because of my hyper-obedience to my father’s beliefs? When I talk about my dad, I diffuse the pain and the hate, I forgive myself and I detach myself from the enmeshment that I experienced with him, thus opening up the restricted areas of my brain that I formerly blocked out?

I’m assuming that’s the reason.

Aannyway, on to the final word of gratitude!

I’m grateful for OPPORTUNITY.

Heck, I might even start proclaiming, OPPORTUNITY! at the end of my blog posts, rather than excelsior. OPPORTUNITY! is how I can have chances to practice what I’ve learned in CBT and CoDA. Opportunity for social events.


Looking for VOCALOID trading cards?

Check out Sakura Blossom Trading Post