← Blog

The Kitchen Sink Post


This is a test post to make sure everything renders nicely. Think of it as a stress test.

Code blocks

Plain Python with syntax highlighting:

def naive_bayes(doc, vocab, priors, likelihoods):
    scores = {}
    for label, prior in priors.items():
        score = math.log(prior)
        for word in doc:
            if word in vocab:
                score += math.log(likelihoods[label].get(word, 1e-10))
        scores[label] = score
    return max(scores, key=scores.get)

Go with error handling:

func fetchMetrics(ctx context.Context, endpoint string) ([]Metric, error) {
	req, err := http.NewRequestWithContext(ctx, http.MethodGet, endpoint, nil)
	if err != nil {
		return nil, fmt.Errorf("building request: %w", err)
	}

	resp, err := http.DefaultClient.Do(req)
	if err != nil {
		return nil, fmt.Errorf("executing request: %w", err)
	}
	defer resp.Body.Close()

	var metrics []Metric
	if err := json.NewDecoder(resp.Body).Decode(&metrics); err != nil {
		return nil, fmt.Errorf("decoding response: %w", err)
	}
	return metrics, nil
}

Bash:

# Deploy to production
kubectl apply -f k8s/deployment.yaml
kubectl rollout status deployment/api --timeout=120s
kubectl get pods -l app=api

Inline code also works: const x = 42 or kubectl get pods.


Callouts

Did you know?

Astro ships zero JavaScript by default. This entire page has no client-side JS except the theme toggle.

Tip

Use error budgets to decide when to ship features vs. fix reliability. If your error budget is full, ship. If it’s gone, fix.

Warning

Never run kubectl delete namespace production without a backup. Ask me how I know.

Danger

Don’t store secrets in environment variables baked into Docker images. Use a secrets manager.


Blockquotes

The goal of SRE is to make tomorrow’s work easier than today’s.

— Ben Treynor Sloss, inventor of SRE at Google


Tables

CompanyRolePeriod
AppleSite Reliability Engineer InternJun – Sep 2025
CoinbaseBackend Software Engineer InternMay – Aug 2024
Unlimited RemitSoftware Engineer InternJun – Aug 2023

Lists

Unordered:

  • Computer vision models like SAM3D and DepthAnything
  • Volumetric 3D formats (.splat, .ply, .glb)
  • Upload pipelines handling 1500+ files

Ordered:

  1. User uploads an image or video
  2. Pipeline sends it to a GPU worker
  3. Model runs depth estimation
  4. Output is converted to a 3D splat
  5. File is stored and served via CDN

Nested:

  • Infrastructure
    • Kubernetes on GCP
    • Spinnaker for deployments
    • Prometheus + Grafana for metrics
  • Application
    • Go services for the API
    • Python workers for ML

Typography

Normal paragraph text. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

Bold text for emphasis. Italic text for softer emphasis. Strikethrough for corrections. inline code for technical terms.

A link to the blog and an external link both work fine.


Headings at every level

H3 heading

Some content under an H3.

H4 heading

Some content under an H4.


That’s everything. If it all looks good, the blog is ready.