Black Bean Cupcakes

Makes about 12 cupcakes.

Ingredients

Cupcakes

  • 1/2 cups black beans cooked and drained
  • 3 large eggs
  • 1 cup plus 2 tablespoons granulated sugar
  • 4 tablespoons unsalted melted butter
  • 1/2 cups cocoa powder
  • 1 teaspoon instant cofee
  • 1 teaspoon vanilla extract
  • 1/2 teaspoon baking soda
  • 1/2 teaspoon salt
  • 1/3 cup of chopped dark chocolate

Glaze

  • 4 tablespoons unsalted butter
  • 1 tablespoons cocoa powder
  • 1/2 cup powdered sugar

Instructions

Cupcakes

  1. Preheat seep to 350F
  2. In a blender add all at the ingredients except the chocolate and blend until smooth
  3. Add the dark chocolate and blend for about 15 seconds to bleak up the pieces
  4. Pour the batter into the cupcake liners filling each about 3/4 full
  5. Bake for about 20 minutes or until the cupcakes spring back to the touch
  6. Let them cool for about 10 minutes before removing from pan and glazing

Glaze

  1. In a small saucepan over medium-low heat add all of the ingredients and whisk until butter is melted and the mixture is smooth
  2. Remove from heat and allow to cool slightly
  3. Dip the lops of the cupcakes the glaze

Creating a Launch Config in VSCode to Debug a Python Invoke Script

I regularly use Python Invoke and Fabric for the automation of various tasks; from deploying code to developing my own set of tools for various projects. Following is an example on how to write a launch.json launch configuration for vscode so that you can step through the tasks.py code and debug it.

Assuming that you have created a virtual environment and pip installed invoke into it. And, assuming that you have defined a task in your tasks.py file as follows:

from invoke import task

@task()
def do_something(ctx, some_path, some_other_path):
    # Do something with data in these dirs . . . 

The following is a template you can use for a launch configuration that you can use to debug your task.

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "invoke",
      "type": "python",
      "request": "launch",
      // The complete path to the invoke python script in your virtual environment
      "program": "/my/virtualenv/path/bin/invoke",
      "justMyCode": false,
      // The args that you would otherwise enter on the command line
      // when invoking your task
      "args": [
        "do-something",
        "--some-path",
        "/var/tmp/a/",
        "--some-other-path",
        "/var/tmp/b/"
      ],
      "cwd": "/the/path/to/the/dir/that/contains/your/tasks/script",
    }
  ]
}

Using bq load Command to Load logicalType Partitioned Data into a BigQuery Table

Following is the syntax and bq load command that you need to issue if you want to load data in avro file into a partitioned BigQuery table based on avro field defined as a logicalType.

Given the following schema

{
  "type" : "record",
  "name" : "logicalType",
  "namespace" : "com.ryanchapin.tests",
  "fields" : [ {
    "name" : "id",
    "type" : [ "null", "string" ],
    "default" : null
  }, {
    "name" : "value",
    "type" : [ "null", "long" ],
    "default" : null
  }, {
    "name" : "day",
    "type" : {
      "type" : "int",
      "logicalType" : "date"
    }
  }
}

And the following BigQuery schema

[
  {
    "name": "id",
    "mode": "NULLABLE",
    "type": "STRING"
  },
  {
    "name": "value",
    "mode": "NULLABLE",
    "type": "INT64"
  },
  {
    "name": "day",
    "mode": "REQUIRED",
    "type": "DATE"
  }
]

Assuming that you have a correct avro data file (an exercise for the reader) that contains records that include values in the day column that are the number of days since the epoch, you can run the following bq load command to load that data into your table.

 bq --project_id my_project load --source_format=AVRO --time_partitioning_type=DAY --time_partitioning_field=day --use_avro_logical_types my_dataset.my_table gs://my_bucket/*.avro

Sheet Pan Mushroom and Gnocchi

Ingredients

  • 1 pound mixed wild mushrooms
  • 2 medium shallots
  • 1 pound fresh, shelf-stable, or frozen potato gnocchi
  • 3 tablespoons olive oil
  • 1/2 teaspoon kosher salt
  • 1/4 teaspoon freshly ground black pepper
  • Fresh thyme leaves, for garnish

Instructions

  1. Preheat oven to 400F
  2. Slice mushrooms, chop shallots
  3. Place mushroom, shallots, and gnocchi in a mixing bowl and drizzle with olive oil. Add seasoning and toss to coat oil and seasonings.
  4. Turn out onto baking sheet in an even layer
  5. Roast for about 15 to 20 minutes stirring about half way through
  6. Garnish with fresh thyme, if desired, and serve

Serves

Approx 4

Flush Commands to BASH History Immediately

I cannot take credit for figuring this one out. Original post is here.

TLDR; is to add the following to your ~/.bashrc

export PROMPT_COMMAND='history -a'

Following are the history configs that I use

######################################################################
shopt -s histappend
HISTSIZE=-1
HISTFILESIZE=-1
HISTCONTROL=ignoreboth
HISTTIMEFORMAT="[%F %T] "
export PROMPT_COMMAND='history -a'
######################################################################

Setting Per File Type Tab Configurations in VSCode

If you would like to have different tab configurations (tabs or spaces) along with the number of tab chars for different file types you can update your user settings.

The first thing you need to do is figure out what the file type code thinks the file that you want to change is. Open the file in vscode and then look at the bottom right of your window. In my case, I’m looking at an avro schema (.avsc) file:

In this case, code sees this file type as “JSON with Comments” and is configured to use spaces with 2 spaces per “tab”.

In order to change that, press CTRL+Shift+P and select “Preferences: Configure Language Specific Settings”. You will then be presented with a host of file types. Scroll down to the entry you want (JSON with comments) and take note of of the string within the parenthesis. That is the key that you will need to make an entry into settings.json. If you click on that entry it will open up your user settings.json. I was baffled by what to do next until I saw this stackoverflow post.

Once I read that, I knew what to add to the settings.json. Simply add a new key, defined at the root of the JSON object that is the string displayed in the parenthesis that you saw for the file type in the dropdown that was displayed after selecting “Preferences: Configure Language Specific Settings”.

The JSON in settings.json will look like the following

   "[jsonc]": {
        "editor.tabSize": 2,
        "editor.detectIndentation": false,
        "editor.insertSpaces": true,
        "editor.quickSuggestions": {
            "strings": true
        },
        "editor.suggest.insertMode": "replace",
        "gitlens.codeLens.scopes": [
            "document"
        ]
    }

Check the language specific settings docs for the configuration options.