Welcome to ruivieira.dev, a digital workspace where technology, machine learning, and software engineering intersect.
This space serves as my personal knowledge repository and technical journal, embracing the organic growth philosophy of a digital garden while maintaining the clean, functional aesthetics of Brutalist Web Design. Here, you’ll find my ongoing exploration of machine learning, software engineering, and various programming languages, along with technical notes and research findings.
For those interested in the technical architecture, you can find detailed information on the site details page. In keeping with the UNIX philosophy, this site is also accessible via man pages1 Try curl -s https://ruivieira.dev/man/index.txt | groff -man -Tascii | less. Any page will work. .
About me
I’m a Principal Machine Learning Engineer at Red Hat2 All opinions on this site are my own, not Red Hat’s. working on AI safety, model evaluation and distributed applications. I have a PhD in Bayesian Statistics from Newcastle University and I’m one of the core developers and community lead for the TrustyAI project.
You can find more about me, my background and education in the about page, as well as what I’m currently focused on in the “now”3 For a now page introduction, check https://sive.rs/nowff. page.
Topics
In this site you’ll find notes on topics such as:
- Machine Learning with a focus on explainability and fairness.
- Counterfactuals
- Synthetic data generation
- Optimisation methods, including Hill-climbing optimisation and Gradient-free optimisation.
- Generative AI and Large Language Models
- Software Engineering
- Programming languages I frequently use, in no particular order:
Here you can find some of the things I do for fun:
- Bots
- Reading list
- Non-work related content in this site, such as my drawings.
Recent posts
- Your LLM Judge is lying to you: the measurement crisis in AI benchmarks
- AgentDiet: trimming the fat from LLM agent trajectories
- Visualising Token Probabilities in Large Language Models
- Simulating Network Latency in Kubernetes with tc
- As teams grow
- Using custom system prompts with LMEval
- Panegyric
- VM Storage with XFS for High I/O Operations
- Syncthing as a service
- Restricting SSH connections
Pages
- (Semi) handcrafted RSS
- 58 bytes of CSS to look great nearly everywhere
- A Gibbs Sampler in Crystal
- A simple Python benchmark exercise
- A streaming ALS implementation
- About
- Anaconda
- Ansible
- Bayesian estimation of changepoints
- Bots
- Brutalist web design
- CLI
- Clojure
- Coconut
- Containerised Streaming Data Generation using State-Space Models
- Containers
- Cookiecutter data science
- Correlation matrix
- Counterfactual Fairness
- Counterfactual Fairness in Java
- Counterfactuals
- Counterfactuals with Constraint Solvers
- Day 1: The Mark of the Sigil
- Day 2: The Binding of Context
- Day 3: The Dissolution of Boundaries via the Slip
- Day 4: The Slurpy Maw of Parameters
- Day 5: The Dual Realms of Associative Mapping
- Day 6: The Operator's Curse of Precedence
- Deno
- Digital Garden
- Distance metrics
- DLIME
- DOOM Emacs
- Drools
- Dunn index
- Elisp
- Elisp snippets
- Emacs
- Emacs cookbook
- Emacs Quarkus
- Error metrics
- Explainability
- Extending JUnit
- Fairness in Machine Learning
- Feature scaling
- Fedora
- Flask
- Food
- From Scratch to Emacs, The Adventurous Configurator's Handbook
- Gaussian Process Regression
- Gemini
- Generative AI and Large Language Models
- Generative AI Tools and Frameworks
- Git
- Git cookbook
- GitHub
- GitHub actions
- Go
- Go filesystem operations
- Go resource bundling
- Gower distance
- GPG
- GraalVM
- Grad-CAM
- Gradient-free optimisation
- gulp
- Hill-climbing optimisation
- HTML
- Hugo
- I. A Diurnal Cipher of Raku
- Introduction to Balanced Box-Decomposition Trees
- Introduction to Isolation Forests
- Java
- Java build systems
- Java Completable Futures
- Java consumer
- Java streams
- JPype
- JUnit
- K-means clustering
- k3s
- k8s operators
- Kernel functions
- KinD
- KNative
- Kompose
- Kotlin
- Kourier
- KServe
- Kubernetes
- Kustomize
- Langton's ant
- Language performance metrics
- LaTeX
- Linux admin
- Llama Stack
- LLM evaluation
- Low-Rank Adaptation of Large Language Models (LoRA)
- Machine learning
- Machines
- Maven
- MCMC notifications
- MCMC performance on substrate VM
- Minikube
- Model fairness
- Model performance metrics
- Model serving
- ModelMesh
- Monotonic Cubic Spline interpolation (with some Rust)
- Navi
- Neovim
- now
- OOB score in random forests
- OpenShift
- Optimising random forest hyperparameters
- Pandas
- Pandas basics
- Pikchr
- Plan 9
- Podman
- Portuguese Christmas recipes
- Programming
- pytest
- Python
- Python Abstract classes
- Python code style
- Python dependency management
- Python environments
- Python grammar of graphics
- Python monkey patching (for readability)
- Python Pweave
- Python testing
- Python typing
- Quarkus
- RAGAS - RAG Assessment Framework
- Raku
- Random Forest
- Random walk
- Reading list
- Refactoring
- Retrieval-Augmented Generation (RAG)
- RHODS
- ROC
- Root Mean Squared Error
- RSS
- Rust
- Scala
- Scala cookbook
- Scikit-learn
- Serving models with Seldon
- SHAP Background for cold start
- Shell configurations
- Shell tricks
- Site details
- SMILE library
- Software Engineering
- Spearman correlation
- SSH
- Statistical dependence
- Streaming anomaly detection
- Streaming statistics
- Stuff I did in 2023
- Syncthing
- Synthetic data generation
- Synthetic Data Generation with SDV
- Synthetic data with SDV and CopulaGAN
- Synthetic data with SDV and CTGAN
- Synthetic data with SDV and Gaussian copulas
- t as mixture of Normals
- Thompson sampling
- Thompson sampling
- Time-series analysis
- Transformation functions
- Transformers
- TrustyAI
- TrustyAI-KServe conversions
- Typescript
- Typography
- Unfairness detection
- Union types
- Unit testing
- Universal and Transferable Adversarial Attacks on Aligned Language Models
- UNIX
- UNIX philosophy
- Vim keys
- Vue
- Workflow
- XGBoost
- zsh