Skip to content

Instantly share code, notes, and snippets.

View richkuz's full-sized avatar

Rich Kuzsma richkuz

  • LinkSquares
  • Amherst, NH
View GitHub Profile
@richkuz
richkuz / awesome-engineer-venn-diagram.md
Created February 11, 2025 22:36
What makes an awesome engineer?

What makes an awesome engineer?

A simple way to visualize what makes a great engineer:

image
  • Strong technical acumen

  • Works well with others

@richkuz
richkuz / project-ownership.md
Last active February 1, 2025 14:42
Project Ownership

Project Ownership

So you recently volunteered or were assigned to be the project owner for a large engineering deliverable.

Here's a guide to help you succeed.

What's a project owner?

What does it mean to be a project owner? What are the expectations for the role? How to do it well?

@richkuz
richkuz / use-your-49-percent.md
Created February 1, 2025 14:21
Use your 49%

Use your 49%

In most software teams I've worked on I think about decision making this way:

  • Product Manager / Product Owner has 51% of the vote for what we choose to build.

  • Designer has 51% of the vote for how it looks.

  • Architect/Tech Lead has 51% of the vote for how it's built.

@richkuz
richkuz / only_office_react_python_docker_example.md
Created December 31, 2024 22:39
OnlyOffice DocumentEditor React and Python Example using forcesave and JWT tokens

I was able to render an OnlyOffice document in React using the OnlyOffice local document server running in Docker with a JWT key and token.

This version also supports saving the document to my server automatically or on-demand.

Issues solved with this example include:

  1. Succesfully loading a document hosted on my local Python flask app when the JWT token setting is enabled while running OnlyOffice document server in docker on Mac OSX.
@richkuz
richkuz / looker-min-max-datetime-calculation.md
Last active November 9, 2024 13:09
Compute max date time in a Looker calculation expression

In a Looker table calculation custom expression you can compute the max or min value of a date time object using an expression like this:

max(
  (100 * 100 * 100 * 100 * 100 * extract_years(${table.created_at})) +
  (100 * 100 * 100 * 100 * extract_months(${table.created_at})) +
  (100 * 100 * 100 * extract_days(${table.created_at})) +
  (100 * 100 * extract_hours(${table.created_at})) +
  (100 * extract_minutes(${table.created_at})) +
 (extract_seconds(${table.created_at}))
@richkuz
richkuz / effective-delegation.md
Created November 9, 2023 20:42
Effective Delegation

To delegate effectively to a new team, you have to explain the following:

  1. Context and goal
  2. Expected results
  3. What to do
  4. How to do it

As the team grows and they learn how to do the work, it become sufficient and appropriate to explain only the first three bullet points. As the team further progresses, you can communicate the first 2 bullet points and the team will figure out what to do and how to do it. Finally, with high performing teams/individuals, you can provide context and the goal, and the team defines the rest.

@richkuz
richkuz / jira-bookmarklet.md
Created October 25, 2023 22:20
Bookmarklet to create Jira issues with default values provided

Jira Issue Create Bookmarklet

This bookmarklet lets you pop the Jira "Create Issue" dialog with values pre-populated. You have to be on a Jira page for this to work.

Create a new Bookmark in Chrome:

Bookmark name: “whatever”

URL:

@richkuz
richkuz / jira-query-issues.graphql
Created June 16, 2023 11:49
Jira GraphQL API Query Issues with links
# Example Jira GraphQL API to fetch a Cloud ID, query for issues with JQL, and get issues with links, i.e. child issues
#
# Run this in https://developer.atlassian.com/platform/atlassian-graphql-api/graphql/explorer/
#
# In the GraphQL explorer UI, at the bottom, add these Request Headers:
# {
# "X-ExperimentalApi" : "JiraIssueSearch"
# }
#
query fetchCloudId {
@richkuz
richkuz / select-range.js
Created May 25, 2023 01:54
JavaScript to select a range of text in a paragraph excluding HTML markup
// Given an element, select a range of text given a start and end character position offset relative
// to the element's innerText, not counting any HTML markup in the element.
// Partial credit: https://stackoverflow.com/questions/16662393/insert-html-into-text-node-with-javascript
function injectMarkerIntoTextNode(node, startIndex) {
// startIndex is beginning location of the text to inject a span
let parentNode = node.parentNode;
var s = node.nodeValue;
var beforePart = s.substring(0, startIndex);
@richkuz
richkuz / obsidian-default-note-title.md
Created May 18, 2023 13:21
Obsidian: How to set the default title of a new note

How to set the default title of a new note in Obsidian

I wanted to set the default title of new notes created via Cmd+N to be formatted like "2023-05-18 New", "2023-05-18 New 2", ...

I also wanted all new notes created via Cmd+N to go in the new folder.

  1. Create a folder called e.g. new

  2. In "Files & Links" settings, set "Folder to create new notes in" to new

  3. Create a folder called e.g. templates and add a file called e.g. Default with this content: