Setting Up Go Development with NeoVim
NeoVim Advantages
- Wide selection of color schemes
- Lightweight and fast
Kickstart nvim Configuration
- Single config file at
~/.config/nvim/init.lua
Installing Go Support
1. Install Go syntax highlighting
nvim
:TSInstall go
:TSInstallInfo # Verify install
:q!
2. Install Go language server
go install golang.org/x/tools/gopls@latest
3. Configure PATH
export PATH=$PATH:$(go env GOPATH)/bin
source ~/.zshrc # Reload shell
4. Set up LSP in NeoVim
nvim ~/.config/nvim/init.lua
:MasonInstall gopls
Initial impressions are positive, though I recognize no technology is perfect - I’ll need to explore Go’s limitations further.
AWS Glue & Jupyter Notebooks
On my todo list:
- Explore AWS Glue integration
- API deployment from Jupyter Notebooks
Chatbot Enhancement Analysis
Current RAG Pipeline
- Chunking: Content from
../src/content/**/*.mdxgets broken into chunks - Vectorstore: Chunks embedded (OpenAI) and stored in FAISS
- Retrieval: Finds top 5 similar chunks for each question
- Generation: Chunks sent to GPT-4o-mini with “TC Heiner” persona
Problem Identified
For prompt “Tell me about your favorite thing you built”:
- ❌ Gets: Generic Astro/Wells Fargo content
- ✅ Should get: ManaBurn, web crawler details
Root Cause
Similarity search matches generic phrases better than project-specific content.
Potential Solutions
-
Content Improvement:
- Add “favorite project” language to ManaBurn docs
-
Search Parameters:
- Increase
kfrom 5 to 8-10
- Increase
-
MMR Retrieval:
retriever = vectorstore.as_retriever(
search_type="mmr",
search_kwargs={
"k": 8,
"lambda_mult": 0.7,
"fetch_k": 20
}
)
- Custom Scoring:
def custom_retrieval(question, vectorstore):
docs = vectorstore.similarity_search(question, k=15)
# Apply score boosts based on project recency
for doc in docs:
years_ago = get_project_age(doc)
if years_ago <= 1: doc.score_boost = 0.3
elif years_ago <= 2: doc.score_boost = 0.2
elif years_ago <= 3: doc.score_boost = 0.1
elif years_ago <= 5: doc.score_boost = 0.05
return sorted(docs, key=lambda x: x.score + getattr(x, 'score_boost', 0))[:5]