{"name":"Ema Suriano","bio":"Passionate Engineer driven by all the Javascript ecosystem. In my spare time I like to write and speak publicly","website":"https://emasuriano.com/","projects":[{"title":"Gatsby Starter Event Calendar","url":"https://github.com/EmaSuriano/gatsby-starter-event-calendar"},{"title":"Gatsby Starter Mate","url":"https://github.com/EmaSuriano/gatsby-starter-mate"},{"title":"Astro Art Portfolio","url":"https://github.com/EmaSuriano/astro-art-portfolio"},{"title":"Language Learning Client","url":"https://github.com/EmaSuriano/language-learning-client"}],"posts":[{"title":"Making a personal site readable to LLMs","url":"https://emasuriano.com/blog/2026-08-31-making-a-personal-site-readable-to-llms"},{"title":"PR previews on GitHub Pages without Netlify","url":"https://emasuriano.com/til/2026-08-31-pr-previews-on-github-pages-without-netlify"},{"title":"Sesame Wake: A Bring-Your-Own Wake Word Launcher for Sesame","url":"https://emasuriano.com/blog/2026-05-12-sesame-wake"},{"title":"Ollama Launch lets you run Claude Code for free","url":"https://emasuriano.com/til/2026-01-25-ollama-launch-free-claude-code"},{"title":"Building a Universal AI Chat Interface with Streamlit and LiteLLM","url":"https://emasuriano.com/blog/2025-07-11-building-a-universal-ai-chat-interface-with-streamlit-and-litellm"},{"title":"The Silent Struggle: My Journey with Background Noise Dependency","url":"https://emasuriano.com/blog/2025-04-23-the-silent-struggle-my-journey-with-background-noise-dependency"},{"title":"Running Ollama in GitHub Actions - Automating LLM Workflows","url":"https://emasuriano.com/blog/2025-03-27-running-ollama-in-github-actions---automating-llm-workflows"},{"title":"VS Code Profiles - A Game-Changer for Managing Different Development Setups","url":"https://emasuriano.com/til/2025-01-23-vs-code-profiles---a-game-changer-for-managing-different-development-setups"},{"title":"Simplifying Python Development with uv: A Modern Package Management Tool","url":"https://emasuriano.com/blog/2025-01-21-simplifying-python-development-with-uv-a-modern-package-management-tool"},{"title":"Deploying and using your ML model with Streamlit","url":"https://emasuriano.com/til/2024-11-07-deploying-and-using-your-ml-model-with-streamlit"},{"title":"Supervised Learning in a Nutshell","url":"https://emasuriano.com/blog/2024-07-04-supervised-learning-in-a-nutshell"},{"title":"Running local LLM is not as hard as I expected","url":"https://emasuriano.com/til/2024-09-26-running-locall-llm-is-not-that-hard"},{"title":"Get Github repository preview images","url":"https://emasuriano.com/til/2024-09-26-easily-obtain-github-repository-preview-images"},{"title":"Remind yourself of Birthdays Using Google Calendar and Apps Script","url":"https://emasuriano.com/til/2024-08-05-setup-birthday-reminder-via-email"},{"title":"How to Install Fuzzy CLIPS: A Quick and Easy Setup Tutorial","url":"https://emasuriano.com/blog/2024-07-31-install-fuzzy-clips"},{"title":"Setting up a decent recording setup without spending","url":"https://emasuriano.com/til/2024-07-24-setting-up-a-decent-recording-setup-without-spending"},{"title":"Interactive presentations from a Jupyter Notebook","url":"https://emasuriano.com/til/2024-07-01-create-presentations-from-notebook"},{"title":"Adding support for LaTeX in Astro.js","url":"https://emasuriano.com/til/2024-06-24-adding-support-for-latex-in-astrojs"},{"title":"Drawing 3D functions with Plotly","url":"https://emasuriano.com/blog/2024-06-23-drawing-3d-functions-with-plotly-correctly"},{"title":"Running Jupyter notebook in the browser","url":"https://emasuriano.com/til/2024-06-21-running-jupyter-notebook-in-the-browser"},{"title":"Simplifying project navigation with git-open","url":"https://emasuriano.com/til/2024-06-19-simplifying-project-navigation-with-git-open"},{"title":"Using Pages CMS to quickly to add new TIL","url":"https://emasuriano.com/til/2024-06-18-pages-cms-to-quickly-to-add-new-til"},{"title":"Today I learned about TIL","url":"https://emasuriano.com/til/2024-06-18-today-i-learned-about-til"},{"title":"Run a Linux Distro in your Android device","url":"https://emasuriano.com/blog/2024-04-01-run-a-linux-distro-in-your-android-device"},{"title":"Going into a new direction","url":"https://emasuriano.com/blog/going-into-a-new-direction"},{"title":"Efficiently manage large files in Git with Git LFS","url":"https://blog.logrocket.com/efficiently-manage-large-files-git-with-git-lfs/"},{"title":"Building a multi-framework dashboard with Astro","url":"https://blog.logrocket.com/building-multi-framework-dashboard-with-astro/"},{"title":"New year, new portfolio","url":"https://emasuriano.com/blog/new-year-new-page"},{"title":"Understanding Astro islands architecture","url":"https://blog.logrocket.com/understanding-astro-islands-architecture/"},{"title":"End to end testing in React Native with Detox","url":"https://blog.logrocket.com/react-native-end-to-end-testing-detox/"},{"title":"Keep your Documentation updated with Cypress and Github Actions","url":"https://emasuriano.com/blog/keep-your-documentation-updated-with-cypress-and-github-actions"},{"title":"Dynamic Types Validation in Typescript","url":"https://blog.logrocket.com/dynamic-type-validation-in-typescript/"},{"title":"Building a maintainable Icon System for React and React Native","url":"https://emasuriano.com/blog/building-a-maintainable-icon-system-for-react-and-react-native"},{"title":"Docker for Frontend Developers","url":"https://blog.logrocket.com/docker-for-front-end-developers/"},{"title":"Using Storybook as a Visual Testing Platform","url":"https://emasuriano.com/blog/using-storybook-as-a-visual-testing-platform"},{"title":"Make any Static Site Dynamic with Zapier","url":"https://emasuriano.com/blog/make-any-static-site-dynamic-with-zapier"},{"title":"Building a collaborative Calendar with Google and Gatsby","url":"https://emasuriano.com/blog/building-a-collaborative-calendar-with-google-and-gatsby"}],"talks":[{"title":"Practical Introduction to LLMs with Ollama","url":"https://emasuriano.github.io/workshop-ollama"},{"title":"Is it time for framework-agnostic apps?","url":"https://time-for-framework-agnostic-projects.netlify.app"},{"title":"From create-react-app to create-any-app","url":"https://from-cra-to-caa.netlify.app"},{"title":"Runtime Types Validation in Typescript","url":"https://slides.com/emasuriano/runtime-types-validation-in-typescript"}]}