Skip to content

Instantly share code, notes, and snippets.

@rafaelquintanilha
rafaelquintanilha / estimation_challenges.md
Created September 4, 2025 18:03
Software Project Estimation Challenges

Detailed Briefing: Software Project Estimation Challenges

This briefing document synthesizes key themes and crucial insights from the provided sources regarding the notorious difficulty of software project estimation. It highlights why accurate forecasting is so challenging, common pitfalls, and strategies to improve the process.

I. Core Problem: Software Development as Discovery, Not Manufacturing

A central theme across the sources is the fundamental difference between software development and more traditional, predictable fields like construction or manufacturing. This distinction is the root cause of estimation difficulties.

  • Software is a Design Process: "Software development is, fundamentally, a design process." (r/programming) Unlike building a plane, where the design is largely finalized before construction, writing code is more akin to designing the airplane itself.
  • Act of Discovery and Invention: "Software development is -- by definition -- an act of discovery and invent
@rafaelquintanilha
rafaelquintanilha / settings.json
Created July 21, 2025 22:47
Claude Code Hooks
{
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [
{
"type": "command",
"command": "jq -r '\"\\(.tool_input.command) - \\(.tool_input.description // \"No description\")\"' >> ~/.claude/bash-command-log.txt"
}
@rafaelquintanilha
rafaelquintanilha / Dockerfile
Created July 15, 2025 14:15
Dockerfile for n8n with puppeteer and playwright
FROM n8nio/n8n:latest
USER root
# Install Chromium and all required dependencies for Alpine
RUN apk update && apk add --no-cache \
chromium \
chromium-chromedriver \
nss \
freetype \
@rafaelquintanilha
rafaelquintanilha / docker-compose.yml
Last active August 25, 2025 13:05
Docker Compose for n8n
services:
caddy:
image: caddy:2
restart: always
ports:
- "80:80"
- "443:443"
volumes:
- ./caddy/Caddyfile:/etc/caddy/Caddyfile
- caddy_data:/data
@rafaelquintanilha
rafaelquintanilha / correlation_vs_trend.py
Last active January 24, 2025 13:26
Correlation vs Trend
import numpy as np
import matplotlib.pyplot as plt
# Set seed for reproducibility
np.random.seed(42)
# Configuration (Balanced Parameters)
n_periods = 100 # Trading days
mu = 0.001 # Daily drift (0.1%)
noise_std = 0.0005 # Daily volatility (0.05%)
@rafaelquintanilha
rafaelquintanilha / gemini_demo.py
Created December 16, 2024 23:34
Use Google Gemini Flash 2.0 for Sentiment Analysis
import os
import re
import time
from typing import List, Literal
import dotenv
from bs4 import BeautifulSoup
from google import genai
from google.genai import types
from playwright.sync_api import sync_playwright
@rafaelquintanilha
rafaelquintanilha / scrape_ibx100.py
Created December 5, 2024 13:54
Code Night #001
# Video: https://www.youtube.com/watch?v=PRkVIBqC-is
import time
import pandas as pd
from bs4 import BeautifulSoup
from playwright.sync_api import sync_playwright
from quantbrasil.models.asset import get_ticker_map
from quantbrasil.models.portfolio import add_assets, create, remove_all
@rafaelquintanilha
rafaelquintanilha / merge.js
Created April 5, 2016 13:57
Merge two already sorted arrays
function merge(arr1, arr2) {
var result = []; // Array where elements will be added
var i1 = 0; // Index for arr1
var i2 = 0; // Index for arr2
// Iterate over arrays until reach the end of one of them
while ( i1 < arr1.length && i2 < arr2.length ) {
arr1[i1] < arr2[i2] ? result.push(arr1[i1++]) : result.push(arr2[i2++]) // Push the smallest and increment
}