How to capture Snowflake users, roles and grants into tables.

Based on post from Venkatesh Sekar, but with lots of code cleanup.

You may be asked to participate in a security and audit review and have to answer some questions like these:

  • How are our users connected to Snowflake?
  • What are the custom roles that we implemented?
  • Which users are assigned to which hierarchy?
  • What are the privileges assigned to a particular role, and which privileges are granted via inheritance?
  • Given a database object such as a table, how is that table accessed by a specific user and through which roles?
  • Are there any ghost or zombie roles?
  • Are the roles getting inherited by SYSADMIN or SECURITYADMIN?
  • Which users are assigned to ACCOUNTADMIN?
  • Are there any tables getting created and assigned to SYSADMIN and not following best practices?
  • Can you provide a visual representation of users, roles, and grants in Snowflake?

And so on and so forth.

Raspberry PI 4B Tips

Use ssh to connect terminal session to PI

You can ssh to connect to your raspberry pi, all you need to know is the IP address,

The default user is pi, and the password is raspberry.


Remote Desktop connection to PI

You can use VNC to remote connect to your PI, using your computer Keyboard and screen to see and control a virtual desktop.

Common VNC errors:

PI 4B pinouts




Show Raspberry Pi GPU and ARM CPU temperature

Monitory CPU speed and temp Sample output

Myth: Water softeners make your water salty

Won’t I taste a difference?

Sodium is a naturally occurring mineral and is found in almost everything you consume—from apples and almonds to water and milk. And while sodium is used to soften water, one of the biggest misconceptions is that it makes your water noticeably salty. Luckily, that’s not the case.

Your daily dose

According to the Dietary Guidelines for Americans, the recommended limit for sodium is less than 2,300 mg a day. The average American consumes about 3,400 mg a day, but the vast majority of sodium comes from table salt and processed and prepared foods, like cold cuts, canned soups, fast food, and frozen dinners. Here are the sodium levels of some common food items:

  • An 8-ounce glass of low-fat milk contains about 120 mg of sodium
  • One egg contains 59 mg of sodium
  • An 8-ounce glass of orange juice contains about 25 mg
  • A can of soda contains 40-45 mg
  • Depending on the brand, a standard 1-ounce slice of bread has between 80 and 230 mg of sodium
  • A teaspoon of regular table salt contains 2,300 mg of sodium

Sodium in Softened Water

The Hidden Pitfalls Of Servant Leadership

by Renita Kalhorn

“One of the signs of someone who was wise is that they disseminate responsibility,” the late actor Chadwick Bosman told Trevor Noah on The Daily Show. “They use everybody’s skills, they don’t try to do everything. You can’t be everywhere at one time.”

He was speaking about his role in Black Panther, playing T’Challa, king of the fictional African nation of Wakanda — but he could easily have been giving a lecture on modern-day leadership.

As the world become increasingly complex and volatile, the leaders with the most influence understand something important. 

It’s not about having power and control. 

It’s not about efficiency and using employees as a means to drive performance. 

It's not about the leader as the hero(ine) at the center of it all.

To build the teams that can solve big, thorny problems, leaders will have to empower their people to learn, grow and innovate.

This approach is often called "servant leadership" because the leader sees themself as serving, rather than commanding, the people around them.

But there’s nothing servile or weak about it. 

AWS Data Pipeline RDS MySQL to S3 - Unable to establish connection to jdbc:mysql:

Error when Data Pipeline tries to connect to MySQL 8:

amazonaws.datapipeline.database.ConnectionFactory: Unable to establish connection to jdbc:mysql://<host> Could not create connection to database server.

Caused by: java.lang.RuntimeException: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server.

Cause is:

Connector/J" that is installed by AWS Data Pipeline does not work. You will need to replace it by adding your own external JDBC driver

Prerequisites for the new data pipeline

The MySQL JDBC driver "Connector/J" that is installed does not work. 

      You will need to download the correct version from Oracle.

        Product Version

            Select 5.1.48

        Operating System

            Select Platform Independent

        Download the .tar.gz file to your local machine.

     Download connector J

Summary - Multipliers by Liz Wiseman

Leadership lessons from “Multipliers” by Liz Wiseman — Book Summary


How the best leaders make everyone smarterMultipliers Cover

Andy Young

Wiseman draws on her 17 years’ experience as an exec at Oracle where she served as global leader of HR Development, and more recently leadership consulting to companies such as Apple, Disney, eBay/PayPal, Facebook, Google, Microsoft, Nike, Salesforce, and Twitter.

After meeting William Gladstone, you left feeling he was the smartest person in the world; but after meeting his rival Benjamin Disraeli, you left feeling you were the smartest person in the world.

Ender 3d printing nylon filament

Start by replacing the Print head with an all metal hot end like the Micro-swiss

Then adjust the retraction settings in Cura to prevent strings in the print as follows:


Enable Retraction: Yes

Retraction Distance: Begin with a setting of 5 mm and adjust it up or down by 1 mm until all stringing is gone.

Retraction Speed: Begin with 50 mm/s and slow down if you are seeing filament damage.

Retraction Extra Prime Amount: Leave at 0

Maximum Retraction Count: Set to 10 and only adjust if you see filament damage.

Minimum Extrusion Distance Window: Set to your Retraction Distance

Nozzle Switch Retraction Distance: 16 mm

Nozzle Switch Retraction Speed: 20 mm/s 

Limit Support Retractions: Enable


Klipper - use Raspberry Pi to offload calculations from 3D printer mainboard


Klipper is a special firmware designed to perform the heavy lifting of kinematics on a Raspberry Pi and simplify the job of the existing 3D printer mainboard. This allows very precise stepper motor timing and potentially much higher speeds.

Works with Octoprint. This allows the printer to be controlled using a regular web-browser. The same Raspberry Pi that runs Klipper can also run Octoprint.

In this video, a step by step guide to installing and configuring Klipper on an Ender 3. It includes the base set up as well as how to get a BLtouch and pressure advance working.

In the next part, I will tackle other boards and stepper motor drivers, including a Klipper specific board called the Printhat from Wrecklabs. I have tried to be as comprehensive as I can in this video but there is a lot to cover. Please read carefully through the docs I have referenced below.

Klipper Installation Guide:

Snowflake Example SQL

/**** ACCOUNT    ***************************************/
/* Show user SQL history with time and credits used */
use role accountadmin;
use database snowflake;
use schema account_usage;
use warehouse interactive_wh;
alter session set timestamp_output_format = 'YYYY-MM-DD HH:MI:SS';
select start_time, query_type, user_name, warehouse_name, to_number(total_elapsed_time/1000,10,2) as seconds, warehouse_size, (CREDITS_USED_CLOUD_SERVICES*300) as cost, query_text
from snowflake.account_usage.query_history
where warehouse_size is not NULL
--and query_type = 'SELECT'
--and warehouse_name = 'XXXXX'
--and role_name = 'XXXXX'
--and user_name = 'XXXXX'
order by 4 desc;

use role accountadmin;
use database snowflake;
use schema account_usage;
use warehouse interactive_wh;
select start_time, query_type, Role_name, user_name, warehouse_name, to_number(total_elapsed_time/1000,10,2) as seconds, bytes_scanned, rows_produced, rows_inserted, (CREDITS_USED_CLOUD_SERVICES*300) as cost, query_text
from snowflake.account_usage.query_history
where query_type <> 'GET_FILES'
and query_type <> 'PUT_FILES'
and query_type <> 'SHOW'
and to_date(start_time) between '2020-07-09' and '2020-08-25';

/* show space taken by tables */
select table_name, table_schema, to_varchar(active_bytes/1024/1024, 'F999,999,999,999.9') as Mbytes from snowflake.account_usage.table_storage_metrics
order b