a blog about nothing

Luther Vandross - Dance With My Father


Lyrics

Back when I was a child
Before life removed all the innocence
My father would lift me high
And dance with my mother and me and then
Spin me around till I fell asleep
Then up the stairs he would carry me
And I knew for sure I was loved
If I could get another chance
Another walk, another dance with him
I'd play a song that would never ever end
How I'd love, love, love to dance with my father again, ooh
When I and my mother would disagree
To get my way I would run from her to him
He'd make me laugh just to comfort me, yeah, yeah
Then finally make me do just what my momma said
Later that night when I was asleep
He left a dollar under my sheet
Never dreamed that he would be gone from me
If I could steal one final glance, one final step
One final dance with him
I'd play a song that would never ever end
'Cause I'd love, love, love to dance with my father again
Sometimes I'd listen outside her door
And I'd hear how my mother cried for him
I pray for her even more than me
I pray for her even more than me
I know I'm praying for much too much
But could you send back the only man she loved?
I know you don't do it usually
But dear Lord she's dying to dance with my father again
Every night I fall asleep and this is all I ever dream
Read more ⟶

Wheels and Engine Sound


Last year, we took Ayden to monster truck show. We didn’t know how loud these trucks can be. So we bought ear protection headphones for him. He was still feeling a little scared.

Later he came up with idea that sound of engine comes from the tires. He would keep telling me that monster trucks tires are loud or they made it louder after he put on his headphone.

Read more ⟶

How to backup Kubernetes' Config


The easiest solution seems to be following script by Stackoverflow user, Timothy Perez

:

  <pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">#!/bin/bash

# NAMESPACED EXPORTS
 for  ns in  $( kubectl get ns --no-headers | cut -d &#34; &#34;  -f1 ) ;  do
  kubectl --namespace = &#34; ${ ns} &#34;  get -o = json bindings,cm,ep,ev,limits,pvc,po,podtemplates,rc,quota,secrets,sa,svc,controllerrevisions,ds,deploy,rs,sts,localsubjectaccessreviews,hpa,cj,jobs,leases,ev,ds,deploy,ing,netpol,rs,pods,netpol,pdb,roles,rolebindings |  \
       jq '.items[] |
     select(.type!=&#34;kubernetes.io/service-account-token&#34;) |
     del(
         .spec.clusterIP,
         .metadata.uid,
         .metadata.selfLink,
         .metadata.resourceVersion,
         .metadata.creationTimestamp,
         .metadata.generation,
         .status,
         .spec.template.spec.securityContext,
         .spec.template.spec.dnsPolicy,
         .spec.template.spec.terminationGracePeriodSeconds,
         .spec.template.spec.restartPolicy
     )'  >> &#34;./ ${ ns} .json&#34;
 done

# NON-NAMESPACED EXPORTS
kubectl get -o = json cs,ns,no,pv,mutatingwebhookconfigurations,validatingwebhookconfigurations,crds,apiservices,tokenreviews,selfsubjectaccessreviews,selfsubjectrulesreviews,subjectaccessreviews,csr,psp,nodes,psp,clusterrolebindings,clusterroles,pc,sc,volumeattachments |  \
       jq '.items[] |
     select(.type!=&#34;kubernetes.io/service-account-token&#34;) |
     del(
         .spec.clusterIP,
         .metadata.uid,
         .metadata.selfLink,
         .metadata.resourceVersion,
         .metadata.creationTimestamp,
         .metadata.generation,
         .status,
         .spec.template.spec.securityContext,
         .spec.template.spec.dnsPolicy,
         .spec.template.spec.terminationGracePeriodSeconds,
         .spec.template.spec.restartPolicy
     )'  >> &#34;./cluster_non-namespaced_export.json&#34;

Script copied here under CC BY-SA 4.0 license

Read more ⟶

Crispy-Skinned Baked Chicken Drumsticks


Ingredients

  • 8 (4 oz each) skin-on chicken drumsticks (about 2 lb. total weight)
  • 2 tablespoons olive oil
  • 1 teaspoon salt
  • ½ teaspoon black pepper
  • 1 teaspoon garlic powder
  • 1 teaspoon onion powder
  • 1 teaspoon smoked paprika
  • 1/4 teaspoon chilli pepper

Instructions

  • Preheat your oven to 400 degrees F. Line a rimmed baking sheet with parchment paper and arrange the drumsticks in a single layer on the parchment.
  • Make the seasoning paste: In a medium bowl, use a fork or a spatula to mix the olive oil, salt, pepper, and spices.
  • Using a pastry brush or your hands, coat the chicken pieces with the seasoning paste.
  • Bake the drumsticks uncovered until their internal temperature reaches 165 degrees F, about 40 minutes.
  • Baste the drumsticks with the pan juices using a clean pastry brush. Serve immediately.

via https://healthyrecipesblogs.com/wprm_print/22974

Read more ⟶

LeetCode 605. Can Place Flowers


/**
 * @param {number[]} flowerbed
 * @param {number} n
 * @return {boolean}
 */
 var  canPlaceFlowers   = function (flowerbed , n ) {
     for  ( let  i   =   0 ; i  < flowerbed .length ; i  ++ ) {
         if  (flowerbed [i ]  ==   0
            &&  (i   ==   0   ||  flowerbed [i  -  1 ]  ==   0 )
            &&  (i   ==  flowerbed .length  -  1   ||  flowerbed [i  +  1 ]  ==   0 )) {
            n  --
            flowerbed [i ]  =   1
             if  (n   <   1 )
                 return true
        }
    }

     return  n   <=   0
};
Read more ⟶

LeetCode 1268. Search Suggestions System


/**
 * @param {string[]} products
 * @param {string} searchWord
 * @return {string[][]}
 */
 var  suggestedProducts   = function (products , searchWord ) {
    products .sort ((a , b ) => {
         if  (a   >  b )  return   1
         if  (a   <  b )  return   -  1
         return   0
    })

     const  r   =  []

     for  ( let  i   =   1 ; i  <= searchWord .length ; i  ++ ) {
         const  arr   =  products .filter ((s ) => s .startsWith (searchWord .substring ( 0 , i ))).slice ( 0 ,  3 )
       //console.log(searchWord.substring(0, i))
         r .push (arr )
    }

     return  r
};
Read more ⟶

LeetCode 253. Meeting Rooms II


Lack of built-in Priority Queues in JavaScript makes it a bit hard to do problems like this. I end looking at the solution:

/**
 * @param {number[][]} intervals
 * @return {number}
 */
 var  minMeetingRooms   = function (intervals ) {
     if  (intervals .length   <   1 )  return   0

     const  startTimes   =  []
     const  endTimes   =  []

     for  ( let  i   =   0 ; i  < intervals .length ; i  ++ ) {
        startTimes [i ]  =  intervals [i ][ 0 ]
        endTimes [i ]  =  intervals [i ][ 1 ]
    }

    startTimes .sort ((a , b ) => a  - b )
    endTimes .sort ((a , b ) => a  - b )

     let  startPtr   =   0
     let  endPtr   =   0
     let  rooms   =   0

     for  ( let  i  =  0 ; i  < intervals .length ; i  ++ ) {
         if  (startTimes [i ]  >=  endTimes [endPtr ]) {
            endPtr  ++
        }  else  {
            rooms  ++
        }
    }

     return  rooms
};
Read more ⟶

LeetCode 937. Reorder Data in Log Files


/**
 * @param {string[]} logs
 * @return {string[]}
 */
var reorderLogFiles = function(logs) {

    const sorted = []
    const numLogs = []
    const charLogs = []

    for (let i = 0; i<logs.length; i++) {
        const log = logs[i]
        const tokenized = log.split(&#34; &#34;)
        if (Number.isInteger(parseInt(tokenized[1]))) {
            numLogs.push(log)
        } else {
            charLogs.push(log)
        }
    }

    charLogs.sort(function (a, b) {
        const stra = a.substr(a.indexOf(' ') + 1)
        const strb = b.substr(b.indexOf(' ') + 1)
        if (stra > strb) {
            return 1
        }
        if (stra < strb) {
            return -1
        }

        const ida = a.substr(0, a.indexOf(' '))
        const idb = b.substr(0, b.indexOf(' '))
        //console.log({ida})
        if (ida > idb) {
            return 1
        }
        if (ida < idb) {
            return -1
        }

        return 0
    })

    return [...charLogs, ...numLogs]

};
Read more ⟶

LeetCode 49. Group Anagrams


/**
 * @param {string[]} strs
 * @return {string[][]}
 */
var groupAnagrams = function(strs) {
    const map = []

    for (let i = 0; i<strs.length; i++) {
        const str = strs[i].split('').sort().join('')
        if (!map[str]) map[str] = []
        map[str].push(strs[i])
    }
    const ans = []
    for (let k in map) {
        ans.push(map[k])
    }
    return ans
};
Read more ⟶

LeetCode 71. Simplify Path


/**
 * @param {string} path
 * @return {string}
 */
var simplifyPath = function(path) {
    const simple = [];
    const splitPath = path.split(&#34;/&#34;).filter(x => x.length>0 && x !== '.')

    for (let i = 0; i<splitPath.length; i++) {
        if (splitPath[i] === '..') {
            simple.pop()
        } else {
            simple.push(splitPath[i])
        }

    }

    return `/${simple.join('/')}`
};
Read more ⟶