<!DOCTYPE html><html lang="en"> <head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>GreenFlux Blog</title><meta name="description" content="AI, JavaScript, Python, &#38; Low-Code Guides"><link rel="canonical" href="https://blog.greenflux.us/"><link rel="icon" type="image/x-icon" href="/images/branding/favicon.ico"><link rel="alternate" type="application/atom+xml" title="GreenFlux Blog" href="/feed.xml"><meta property="og:title" content="GreenFlux Blog"><meta property="og:description" content="AI, JavaScript, Python, &#38; Low-Code Guides"><meta property="og:url" content="https://blog.greenflux.us/"><meta property="og:type" content="website"><meta name="twitter:card" content="summary_large_image"><script type="application/ld+json">{"@context":"https://schema.org","@type":"WebSite","name":"GreenFlux Blog","description":"AI, JavaScript, Python, & Low-Code Guides","url":"https://blog.greenflux.us","publisher":{"@type":"Organization","name":"GreenFlux, LLC","url":"https://www.greenflux.us"}}</script><script>
      document.documentElement.setAttribute('data-theme', localStorage.getItem('theme') || 'dark');
    </script><script async src="https://www.googletagmanager.com/gtag/js?id=G-5B4PP32V1R"></script><script>
      window.dataLayer = window.dataLayer || [];
      function gtag(){dataLayer.push(arguments);}
      gtag('js', new Date());
      gtag('config', 'G-5B4PP32V1R');
    </script><link rel="stylesheet" href="/_astro/_slug_.C6db3ZFa.css">
<style>.post-count[data-astro-cid-j7pv25f6]{margin:1rem 0;display:flex;align-items:center;gap:1rem}.graph-link[data-astro-cid-j7pv25f6]{color:var(--primary);font-size:.9rem;font-weight:600;text-decoration:none}.graph-link[data-astro-cid-j7pv25f6]:hover{text-decoration:underline}.count-badge[data-astro-cid-j7pv25f6]{color:var(--primary);background:transparent;border:2px solid var(--primary);padding:.5rem 1rem;border-radius:2rem;font-size:.9rem;font-weight:600}
</style></head> <body> <header> <div class="container"> <div class="header-content"> <div class="header-brand"> <a href="/"> <img src="/images/branding/logo-light-mode.png" alt="GreenFlux Blog" class="logo logo-light" width="128" height="48"> <img src="/images/branding/logo-dark-mode.png" alt="GreenFlux Blog" class="logo logo-dark" width="128" height="48"> </a> <h1><a href="/"></a></h1> </div> <nav> <div class="nav-links"> <a href="/">Home</a> <a href="/tags/">Tags</a> <a href="/series/">Series</a> <a href="/about/">About</a> </div> <button class="theme-toggle" id="theme-toggle" aria-label="Toggle dark mode"> <svg class="icon theme-toggle-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path> </svg> </button> </nav> <button class="hamburger-menu" id="hamburger-menu" aria-label="Toggle mobile menu"> <span class="line"></span> <span class="line"></span> <span class="line"></span> </button> </div> </div> </header> <div class="mobile-menu-overlay" id="mobile-menu-overlay"></div> <div class="mobile-menu" id="mobile-menu"> <div class="nav-links"> <a href="/">Home</a> <a href="/tags/">Tags</a> <a href="/series/">Series</a> <a href="/about/">About</a> </div> <button class="theme-toggle" id="mobile-theme-toggle" aria-label="Toggle dark mode"> <svg class="icon theme-toggle-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path> </svg> </button> </div> <main> <div class="container">  <div class="home-content" data-astro-cid-j7pv25f6> <h1 data-astro-cid-j7pv25f6>🖖 My thoughts to your inbox 🧠→✉️<br><span class="home-subtitle">Like a Vulcan Mind Meld, but async!</span></h1> <div class="subscribe-section" data-astro-cid-j7pv25f6> <a href="https://news.greenflux.us/subscribe" target="_blank" class="subscribe-button" data-astro-cid-j7pv25f6>SUBSCRIBE</a> </div> <script type="module">const n=document.getElementById("search-input"),a=document.getElementById("search-clear"),o=document.getElementById("search-results-count"),i=document.querySelector(".post-list");if(n&&window.searchData){let h=function(){const t=document.querySelectorAll(".post-preview");l=Array.from(t).map(e=>{const c=e.dataset.postUrl;return{element:e,data:window.searchData[c]||{}}})},m=function(t){const e=t.toLowerCase().trim();if(!e){r();return}let c=0;l.forEach(s=>{s.data.title&&s.data.title.toLowerCase().includes(e)||s.data.subtitle&&s.data.subtitle.toLowerCase().includes(e)||s.data.tags&&s.data.tags.some(f=>f.toLowerCase().includes(e))?(s.element.classList.add("search-match"),c++):s.element.classList.remove("search-match")}),o&&(o.textContent=`${c} post${c!==1?"s":""} found for "${e}"`,o.style.display="block"),i&&i.classList.add("search-active")},r=function(){l.forEach(t=>t.element.classList.remove("search-match")),i&&i.classList.remove("search-active"),o&&(o.style.display="none")},d=function(){n.value="",r(),a&&(a.style.display="none"),n.focus()},u,l=[];h(),n.addEventListener("input",function(t){const e=t.target.value;clearTimeout(u),u=setTimeout(()=>m(e),150),a&&(a.style.display=e.length>0?"flex":"none")}),n.addEventListener("keydown",function(t){t.key==="Escape"&&d()}),a&&a.addEventListener("click",d)}</script> <div class="post-count" data-astro-cid-j7pv25f6> <span class="count-badge" data-astro-cid-j7pv25f6>63 posts</span> <a href="https://greenflux-graph.vercel.app/" target="_blank" class="graph-link" data-astro-cid-j7pv25f6>View as Knowledge Graph</a> </div> <div class="search-container"> <div class="search-input-wrapper"> <input type="text" id="search-input" placeholder="Search posts by title, subtitle, or tags..." class="search-input" autocomplete="off"> <button id="search-clear" class="search-clear" aria-label="Clear search" style="display: none;"> <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <line x1="18" y1="6" x2="6" y2="18"></line> <line x1="6" y1="6" x2="18" y2="18"></line> </svg> </button> </div> <div id="search-results-count" class="search-results-count" style="display: none;"></div> </div> <script>(function(){const searchData = {"/vibe-coding-chrome-extensions-with-claude-code":{"title":"Vibe Coding Chrome Extensions With Claude Code","subtitle":"Customize your browsing experience with vibes","url":"/vibe-coding-chrome-extensions-with-claude-code","tags":["claude_code","chrome_extension","vibe_coding"]},"/agentic-astroturfing-on-reddit":{"title":"Agentic Astroturfing Hits Reddit, UI Bakery Campaign Discovered","subtitle":"A Prime Example Of How NOT To Advertise Your Brand On Reddit","url":"/agentic-astroturfing-on-reddit","tags":["reddit","agentic_AI","AI","LLMs","DevRel"]},"/from-prompt-to-production-windows-gemini-edition":{"title":"From Prompt to Production: Windows/Gemini Edition","subtitle":"Vibe-coding and testing local web apps, and deploying with GitHub and Vercel","url":"/from-prompt-to-production-windows-gemini-edition","tags":["AI","AI_Code_Generator","gemini","Windows","vibe_coding"]},"/building-an-aeo-geo-monitoring-tool-with-openrouter-posthog":{"title":"Building an AEO/GEO Monitoring Tool with OpenRouter & PostHog","subtitle":"Simple Python Script to Test Multiple Models & Check Responses for Keywords","url":"/building-an-aeo-geo-monitoring-tool-with-openrouter-posthog","tags":["AI","Python","PostHog","OpenRouter","LLMs"]},"/interactive-knowledge-graph-of-blog-posts-using-vis-network-js":{"title":"Interactive Knowledge Graph of Blog Posts Using Vis-Network JS","subtitle":"Building a Network Visualization from an XML Sitemap","url":"/interactive-knowledge-graph-of-blog-posts-using-vis-network-js","tags":["knowledge_graph","Neo4j","JavaScript","xml"]},"/replicating-uis-from-an-image-with-vibe-coding-tools":{"title":"Replicating UIs from an Image with Vibe-Coding Tools","subtitle":"Testing UI Reproduction from Multimodal Input in Lovable, Bolt, V0, Claude, and more","url":"/replicating-uis-from-an-image-with-vibe-coding-tools","tags":["anthropic","AI","chatgpt","gemini","vibe_coding"]},"/open-source-chrome-extension-chat-with-web-page":{"title":"Open Source Chrome Extension to Chat with Web Pages","subtitle":"Add AI Chat To Any Website, Powered By Pinecone Assistants","url":"/open-source-chrome-extension-chat-with-web-page","tags":["LLMs","AI","APIs","Pinecone","chrome_extension"]},"/claude-code-hook-to-ask-gemini-for-help":{"title":"Claude Code Hook to Ask Gemini for Help","subtitle":"Call Gemini CLI for backup, from within Claude Code CLI","url":"/claude-code-hook-to-ask-gemini-for-help","tags":["AI","anthropic","claudeai","CLI","gemini","Python"]},"/adding-thumbnail-previews-to-folders-in-mac-finder":{"title":"Adding Thumbnail Previews to Folders in Mac Finder with Python","subtitle":"Simple Script to Generate and Save Folder Icons","url":"/adding-thumbnail-previews-to-folders-in-mac-finder","tags":["Python","macOS","image_processing","CLI"]},"/it-might-be-time-to-migrate-your-hashnode-blog":{"title":"It Might Be Time To Migrate Your Hashnode Blog","subtitle":"Open Source Tool to Extract Metadata & Images Missing in Export","url":"/it-might-be-time-to-migrate-your-hashnode-blog","tags":["Hashnode","blogging","markdown"]},"/from-prompt-to-production-vibe-coding-local-ai-apps-with-claude-ollama":{"title":"From Prompt to Production: Vibe Coding Local AI Apps with Claude + Ollama","subtitle":"A guide to building offline AI apps and dealing with CORS","url":"/from-prompt-to-production-vibe-coding-local-ai-apps-with-claude-ollama","tags":["ollama","Llama3","multimodalai","LLMs","AI","macOS","claudeai","anthropic","Open_Source","vibe_coding"]},"/so-you-want-to-integrate-with-the-sec-api":{"title":"So you want to integrate with the SEC API","subtitle":"A How-To Guide for Dealing with EDGAR's Oddities","url":"/so-you-want-to-integrate-with-the-sec-api","tags":["finance","fintech","stockmarket","stocks","JavaScript","json","xml","CORS"]},"/knowledge-graph-generator-with-claude-desktop-and-neo4j-mcp":{"title":"Knowledge Graph Generator with Claude Desktop and Neo4j MCP","subtitle":"Building A Text to Cypher Agent Without A Single Line Of Code","url":"/knowledge-graph-generator-with-claude-desktop-and-neo4j-mcp","tags":["Neo4j","knowledge_graph","claudeai","anthropic","mcp_server","RAG","LLMs","named_entity_recognition","AI"]},"/building-an-ai-powered-discord-bot-with-railway-and-pinecone":{"title":"Building an AI-Powered Discord Bot with Railway and Pinecone","subtitle":"Automating Server Moderation with Python","url":"/building-an-ai-powered-discord-bot-with-railway-and-pinecone","tags":["Python","discord","Pinecone","AI_Assistants","GitHub","railway","LLMs","bot"]},"/deep-dive-into-hashnode-embeds-and-widgets":{"title":"Deep Dive Into Hashnode Embeds and Widgets","subtitle":"Power up your Hashnode blog with advanced features","url":"/deep-dive-into-hashnode-embeds-and-widgets","tags":["Hashnode","iframe","widgets","knowledge_graph","HTML"]},"/ollama-and-fastapi-for-local-markdown-automations":{"title":"Ollama & FastAPI for Local Markdown Automations","subtitle":"Self-hosted Markdown Generator in Python","url":"/ollama-and-fastapi-for-local-markdown-automations","tags":["Python","Python_3","ollama","LLaMa","chatgpt","markdown","LLMs","FastAPI","self-hosted"]},"/may-the-nodes-be-with-you":{"title":"May the Nodes Be with You","subtitle":"A Star Wars Themed Knowledge Graph Generator with Neo4j & JavaScript","url":"/may-the-nodes-be-with-you","tags":["may_the_4th","star_wars_day","knowledge_graph","ontology","Neo4j","graph_database","obsidian","JavaScript","star_wars","cypher"]},"/reddit-api-with-oauth2-using-google-apps-script":{"title":"Reddit API with OAuth2 using Google Apps Script","subtitle":"A guide for Reddit OAuth2 flow and refresh token using Apps Script and Google Sheets","url":"/reddit-api-with-oauth2-using-google-apps-script","tags":["reddit","REST_API","JavaScript","google_apps_script","OAuth2","google_sheets","APIs","social_media","social_media_marketing"]},"/so-you-want-to-send-json-to-a-google-apps-script-web-app":{"title":"So you want to send JSON to a Google Apps Script Web App...","subtitle":"Dealing with 405 Method Not Allowed Errors and 302 Redirects","url":"/so-you-want-to-send-json-to-a-google-apps-script-web-app","tags":["google_apps_script","google_sheets","JavaScript","fetch","CORS","http","REST_API","json","automation"]},"/building-a-knowledge-graph-locally-with-neo4j-and-ollama":{"title":"Building a Knowledge Graph Locally with Neo4j & Ollama","subtitle":"Generating Cypher Queries From Text Using Python & Hugging Face","url":"/building-a-knowledge-graph-locally-with-neo4j-and-ollama","tags":["Neo4j","graph_database","knowledge_graph","Python","Python_3","huggingface","LLMs","cypher","macOS","obsidian","ollama","ontology"]},"/markdown-editor-and-knowledge-graph-notes-app-with-visjs-in-filemaker-pro":{"title":"Markdown Editor and Knowledge Graph Notes App with Vis.js in FileMaker Pro","subtitle":"A Star Trek Themed Editor Inspired by Obsidian","url":"/markdown-editor-and-knowledge-graph-notes-app-with-visjs-in-filemaker-pro","tags":["knowledge_graph","obsidian","filemaker","claris","markdown","JavaScript","data_visualization"]},"/replacing-google-forms-with-cloudflare-pages-and-apps-script":{"title":"Replacing Google Forms with CloudFlare Pages & Apps Script","subtitle":"Building a free web site contact form with no Google branding","url":"/replacing-google-forms-with-cloudflare-pages-and-apps-script","tags":["google_apps_script","google_sheets","google_forms","cloudflare","GitHubPages","Small_business"]},"/named-entity-recognition-with-bert-and-hugging-face":{"title":"Named Entity Recognition with BERT and Hugging Face 🤗","subtitle":"Extracting Object Data from Unstructured Text","url":"/named-entity-recognition-with-bert-and-hugging-face","tags":["NER","BERT","nlp","nlp_transformers","LLMs","knowledge_graph","named_entity_recognition","unstructured_data","huggingface"]},"/filemaker-web-viewer-copilot-with-openai-assistant-and-codemirrorjs":{"title":"FileMaker Web Viewer Copilot with OpenAI Assistant and CodeMirror.js","subtitle":"Generate Custom UI Components With Plain Text Prompts","url":"/filemaker-web-viewer-copilot-with-openai-assistant-and-codemirrorjs","tags":["filemaker","claris","openai","AI_Assistants","AI_Code_Generator"]},"/52-weeks-of-video-tutorials-what-i-learned-about-content-creation-community-and-developer-relations":{"title":"52 Weeks of Video Tutorials: What I Learned About Content Creation, Community, and Developer Relations","subtitle":"A year-long journey of creating weekly tutorial content and key insights for content creators","url":"/52-weeks-of-video-tutorials-what-i-learned-about-content-creation-community-and-developer-relations","tags":["DevRel","video","Tutorial","youtube","appsmith","JavaScript","content creation","Developer Tools"]},"/anti-spam-agent-openai-assistant-email-filter-using-google-apps-script":{"title":"Anti-Spam Agent: OpenAI Assistant Email Filter Using Google Apps Script","subtitle":"A Timer-driven Inbox Defender Against Spam","url":"/anti-spam-agent-openai-assistant-email-filter-using-google-apps-script","tags":["google_apps_script","openai","agentic_AI","spam","gmail","REST_API","JavaScript"]},"/export-sync-all-images-from-a-google-doc-to-drive-folder-using-apps-script":{"title":"Export & Sync All Images from a Google Doc to Drive Folder using Apps Script","subtitle":"Easily extract all images from a doc and sync with matching folder","url":"/export-sync-all-images-from-a-google-doc-to-drive-folder-using-apps-script","tags":["google_apps_script","Google","JavaScript","Google_Docs","Google_Drive","Low_Code"]},"/offline-ai-chat-with-local-rag-from-the-terminal":{"title":"Offline AI Chat with Local RAG from the Terminal","subtitle":"Retrieving Data from Markdown Files using Ollama on MacOS","url":"/offline-ai-chat-with-local-rag-from-the-terminal","tags":["ollama","LLMs","openai","Deepseek","RAG","generative_ai","markdown","macOS"]},"/becoming-the-art-ai-powered-selfies-with-flux1-and-replicatecom":{"title":"Becoming the Art: AI Powered Selfies with FLUX1 and Replicate.com","subtitle":"Fine-Tuning a Vision Model for Picture Perfect Results","url":"/becoming-the-art-ai-powered-selfies-with-flux1-and-replicatecom","tags":["AI","generative_ai","Artificial_Intelligence","Dall-e2","image_generation_API","LLMs"]},"/sql-to-json-in-filemaker-using-papa-parse":{"title":"SQL to JSON in FileMaker using Papa Parse","subtitle":"Web Viewer solution for constructing JSON from ExecuteSQL","url":"/sql-to-json-in-filemaker-using-papa-parse","tags":["filemaker","claris","papa-parse","JavaScript","SQL"]},"/extracting-all-images-from-a-google-doc-using-python":{"title":"Extracting All Images From A Google Doc Using Python","subtitle":"Using Google Colab for Bulk Image Extraction to Drive","url":"/extracting-all-images-from-a-google-doc-using-python","tags":["Python","Google_Colab","Google_Drive","Tutorial","Python_3"]},"/building-an-ai-chat-with-google-docs-knowledge-base-using-colab-pinecone":{"title":"Building an AI Chat with Google Docs Knowledge Base Using Colab + Pinecone","subtitle":"Retrieval Augmented Generation with Pinecone Assistants","url":"/building-an-ai-chat-with-google-docs-knowledge-base-using-colab-pinecone","tags":["AI","Google_Colab","Google_Docs","Pinecone","Python","LLMs"]},"/image-to-text-extraction-with-llama32-vision-and-python":{"title":"Image-to-Text Extraction with Llama3.2-vision and Python","subtitle":"Local and Offline Image Processing Made Easy With Ollama","url":"/image-to-text-extraction-with-llama32-vision-and-python","tags":["Python","Llama3","ollama","LLMs","image_processing","multimodalai"]},"/filemaker-image-to-text-with-llama32-vision":{"title":"FileMaker Image-to-Text with Llama3.2-vision","subtitle":"Extracting Text From Images with a Self-Hosted LLM","url":"/filemaker-image-to-text-with-llama32-vision","tags":["filemaker","ollama","genai","image_processing","claris"]},"/the-upwork-alternative-youve-been-waiting-for":{"title":"The UpWork Alternative You've Been Waiting For","subtitle":"Why self-marketing and personal lead generation might be better than freelance platforms","url":"/the-upwork-alternative-youve-been-waiting-for","tags":["Freelancing","upwork","freelance","Web_Development","side_project"]},"/local-llms-and-filemaker-pro":{"title":"Local LLMs and FileMaker Pro","subtitle":"Secure, Self-Hosted AI with Offline Access, Using Ollama","url":"/local-llms-and-filemaker-pro","tags":["LLMs","LLaMa","AI","filemaker","ollama"]},"/building-a-data-driven-organizational-chart-in-apps-script":{"title":"Building A Data-Driven Organizational Chart In Apps Script","subtitle":"Using OrgChart JavaScript Library In A Web App","url":"/building-a-data-driven-organizational-chart-in-apps-script","tags":["google_sheets","google_apps_script","JavaScript","Open_Source","Web_Development"]},"/why-i-built-a-code-editor-inside-filemaker-pro":{"title":"Why I Built A Code Editor Inside FileMaker Pro","subtitle":"A Web Viewer for Building Web Viewers","url":"/why-i-built-a-code-editor-inside-filemaker-pro","tags":["filemaker","codemirror","JavaScript","claris","Low_Code"]},"/text-analysis-without-ai-lexical-density-string-similarity-readability-other-metrics":{"title":"Text Analysis WITHOUT AI: Lexical Density, String Similarity, Readability & Other Metrics","subtitle":"A primer on natural language processing with JavaScript","url":"/text-analysis-without-ai-lexical-density-string-similarity-readability-other-metrics","tags":["linguistics","natural_language_processing","JavaScript","Sentiment_analysis","readability"]},"/choropleth-map-in-filemaker-pro-web-viewer-with-leafletjs":{"title":"Choropleth Map in FileMaker Pro Web Viewer With Leaflet.JS","subtitle":"Visualizing Aggregate Data Across Geographic Regions","url":"/choropleth-map-in-filemaker-pro-web-viewer-with-leafletjs","tags":["filemaker","JavaScript","leaflet","Mapping","data_analytics"]},"/talk-to-your-spreadsheet-apps-script-cohere-ai":{"title":"Talk To Your SpreadSheet:  Apps Script + Cohere AI","subtitle":"ChatGPT Clone In Google Sheets","url":"/talk-to-your-spreadsheet-apps-script-cohere-ai","tags":["LLMs","AI","Google","google_apps_script","cohereAI"]},"/building-an-interactive-xy-image-plot-with-google-apps-script-and-leafletjs":{"title":"Building an Interactive XY Image Plot with Google Apps Script and Leaflet.js","subtitle":"Custom Background Image With Markers Plotted From Sheets Data","url":"/building-an-interactive-xy-image-plot-with-google-apps-script-and-leafletjs","tags":["google_apps_script","leaflet","Mapping","google_sheets","JavaScript"]},"/generating-heatmaps-in-google-sheets-using-apps-script-and-echarts":{"title":"Generating Heatmaps in Google Sheets using Apps Script and ECharts","subtitle":"Interactive Heatmap in under 100 lines of code!","url":"/generating-heatmaps-in-google-sheets-using-apps-script-and-echarts","tags":["echarts","heatmap","google_apps_script","google_sheets","JavaScript"]},"/creating-a-google-sheets-sidebar-with-mermaidjs-charts":{"title":"Creating a Google Sheets Sidebar with MermaidJS Charts","subtitle":"Adding custom chart types to Google Sheets using MermaidJS and Apps Script sidebars","url":"/creating-a-google-sheets-sidebar-with-mermaidjs-charts","tags":["MermaidJS","google_sheets","google_apps_script","JavaScript","DataVisualization"]},"/building-a-mobile-responsive-grid-layout-in-filemaker-pro":{"title":"Building a Mobile Responsive Grid Layout in FileMaker Pro","subtitle":"Web Viewer Trick to Display Records in a Grid, with Click Events!","url":"/building-a-mobile-responsive-grid-layout-in-filemaker-pro","tags":["filemaker","JavaScript","Low_Code","claris"]},"/chatfmp-filemaker-pro-starter-template-for-integrating-openai-assistants":{"title":"ChatFMP: FileMaker Pro Starter Template For Integrating OpenAI Assistants","subtitle":"Just add your API Key and Assistant ID to start chatting with your own custom assistant!","url":"/chatfmp-filemaker-pro-starter-template-for-integrating-openai-assistants","tags":["claris","filemaker","openai","chatgpt","AI_Assistants"]},"/extract-images-from-a-google-doc-and-save-to-drive-folder":{"title":"Extract Images from a Google Doc and Save to Drive Folder","subtitle":"Automate bulk image extraction from Google Docs using Apps Script","url":"/extract-images-from-a-google-doc-and-save-to-drive-folder","tags":["google_apps_script","Google_Drive","Google_Docs"]},"/filemaker-api-connector":{"title":"FileMaker API Connector","subtitle":"a starter solution for integrating any API or Database with FileMaker","url":"/filemaker-api-connector","tags":["filemaker","appsmith","curl","REST_API"]},"/save-files-to-google-drive-by-post-ing-the-url-to-a-web-app":{"title":"Save files to Google Drive by POST-ing the URL to a web app","subtitle":"A simple Apps Script web app for saving cloud-hosted files to Google Drive via API","url":"/save-files-to-google-drive-by-post-ing-the-url-to-a-web-app","tags":["google_apps_script","APIs","Google_Drive","JavaScript"]},"/slacksmith-an-oauth-20-flow-example-in-appsmith":{"title":"Slacksmith: An OAuth 2.0 Flow Example in Appsmith","subtitle":"Building a Slack integration using OAuth 2.0 authentication flow in Appsmith","url":"/slacksmith-an-oauth-20-flow-example-in-appsmith","tags":["APIs","slack","Devops","Tutorial","hackathon"]},"/creating-a-delivery-app-in-appsmith":{"title":"Creating a Delivery App in Appsmith!","subtitle":"Integrating Google Maps Embed API for delivery route planning and driver notifications","url":"/creating-a-delivery-app-in-appsmith","tags":["hacktoberfest","Tutorial","devtools","google_maps","APIs"]},"/appsmith-tutorial-validating-user-input":{"title":"Appsmith Tutorial: Validating User Input","subtitle":"A collection of JavaScript and REGEX examples for common validation patterns","url":"/appsmith-tutorial-validating-user-input","tags":["JavaScript","Regex","hacktoberfest","Tutorial","Developer_Tools"]},"/the-little-big-framework-appsmith-reviewed":{"title":"The Little Big Framework: Appsmith Reviewed","subtitle":"A comprehensive review of the Appsmith low-code platform from a developer's perspective","url":"/the-little-big-framework-appsmith-reviewed","tags":["Developer_Tools","app_development","Devops","Databases","APIs"]},"/saving-files-to-google-drive-by-post-ing-the-url-to-a-web-app":{"title":"Saving Files to Google Drive by POST-ing the Url to a Web App","subtitle":"General purpose Apps Script web app for saving cloud-hosted files to Google Drive","url":"/saving-files-to-google-drive-by-post-ing-the-url-to-a-web-app","tags":["Google","google_cloud","JavaScript","Tutorial","APIs"]},"/building-a-reddit-browser-and-xml-parser-in-appsmith":{"title":"Building a Reddit Browser (and XML Parser) in Appsmith","subtitle":"Using Reddit RSS feeds as a simple API alternative for browsing subreddit content","url":"/building-a-reddit-browser-and-xml-parser-in-appsmith","tags":["xml","rss","Devops","Tutorial","7daystreak"]},"/googles-appsheet-no-code-apps-from-spreadsheets":{"title":"Google's AppSheet: No-Code Apps from Spreadsheets","subtitle":"A quick overview from an AppSheet Partner Developer","url":"/googles-appsheet-no-code-apps-from-spreadsheets","tags":["google_sheets","Google","Developer_Tools","review","google_cloud"]},"/replacing-google-forms-with-appsmith":{"title":"Replacing Google Forms with Appsmith","subtitle":"-without breaking existing integrations!","url":"/replacing-google-forms-with-appsmith","tags":["Google","google_sheets","devtools","forms","Tutorial"]},"/get-google-maps-images-from-address-text":{"title":"GET Google Maps Images from Address Text","subtitle":"Static Maps API & Appsmith Tutorial","url":"/get-google-maps-images-from-address-text","tags":["Google","google_maps","APIs","REST_API","Tutorial"]},"/validating-emails-with-appsmith-and-the-verifalia-api":{"title":"Validating Emails with Appsmith & the Verifalia API","subtitle":"Email validation service integration for verifying email addresses in Appsmith apps","url":"/validating-emails-with-appsmith-and-the-verifalia-api","tags":["REST_API","email_marketing","integration","Tutorial","Devops"]},"/upwork-job-search-tips-and-tricks":{"title":"UpWork: Job Search Tips & Tricks","subtitle":"6 Tips for Better Results","url":"/upwork-job-search-tips-and-tricks","tags":["Freelancing","Developer","workathome"]},"/saving-api-response-data-to-google-sheets-with-appsmith":{"title":"Saving API Response Data to Google Sheets with Appsmith","subtitle":"Using Appsmith's Google Sheets integration to bulk insert API response data","url":"/saving-api-response-data-to-google-sheets-with-appsmith","tags":["APIs","REST_API","Tutorial","google_sheets","Google"]},"/adding-gmail-contacts-to-appsmith-using-apps-script":{"title":"Adding Gmail Contacts to Appsmith using Apps Script","subtitle":"Publishing script as a web app to serve as API endpoint","url":"/adding-gmail-contacts-to-appsmith-using-apps-script","tags":["JavaScript","Google","APIs","REST_API","Tutorial"]},"/creating-a-scheduled-backup-service-for-google-sheets-using-apps-script":{"title":"Creating a Scheduled Backup Service for Google Sheets using Apps Script.","subtitle":"Beginner Apps Script tutorial","url":"/creating-a-scheduled-backup-service-for-google-sheets-using-apps-script","tags":["google_sheets","JavaScript","Tutorial","Google"]}};

  window.searchData = searchData;
})();</script>  <div class="post-list"> <article class="post-preview" data-post-url="/vibe-coding-chrome-extensions-with-claude-code"> <div class="post-preview-header"> <div class="post-preview-image"> <img src="/_astro/cover.CyYYMWkA_Z1QvXf0.webp" alt="Vibe Coding Chrome Extensions With Claude Code" loading="lazy" decoding="async" fetchpriority="auto" width="400" height="240"> </div> <div class="post-preview-content"> <h2 class="post-title"> <a href="/vibe-coding-chrome-extensions-with-claude-code/">Vibe Coding Chrome Extensions With Claude Code</a> </h2> <p class="post-subtitle">Customize your browsing experience with vibes</p> <div class="post-meta"> <time datetime="2026-03-28">Mar 28, 2026</time> <span class="read-time">5 min read</span> <div class="series-badge"> <span class="series-label">Series:</span> <a href="/series/artificial-intelligence/" class="series-link">Artificial Intelligence</a> </div> </div> </div> </div> <p class="post-excerpt">A Guide To Building Your Own Chrome Extensions with Claude Code</p> <div class="post-preview-footer"> <div class="post-tags"> <a href="/tags/claude_code/" class="tag">claude_code</a><a href="/tags/chrome_extension/" class="tag">chrome_extension</a><a href="/tags/vibe_coding/" class="tag">vibe_coding</a> </div> </div> </article><article class="post-preview" data-post-url="/agentic-astroturfing-on-reddit"> <div class="post-preview-header"> <div class="post-preview-image"> <img src="/_astro/cover.BKK2aXSo_Z1mQg11.webp" alt="Agentic Astroturfing Hits Reddit, UI Bakery Campaign Discovered" loading="lazy" decoding="async" fetchpriority="auto" width="400" height="240"> </div> <div class="post-preview-content"> <h2 class="post-title"> <a href="/agentic-astroturfing-on-reddit/">Agentic Astroturfing Hits Reddit, UI Bakery Campaign Discovered</a> </h2> <p class="post-subtitle">A Prime Example Of How NOT To Advertise Your Brand On Reddit</p> <div class="post-meta"> <time datetime="2026-01-20">Jan 20, 2026</time> <span class="read-time">5 min read</span> <div class="series-badge"> <span class="series-label">Series:</span> <a href="/series/devrel/" class="series-link">DevRel</a> </div> </div> </div> </div> <p class="post-excerpt">Agentic astroturfing is here. Companies are using AI to engagement farm and boost their brand on Reddit. For some brands, the vast majority of mentions are coming from obvious bot accounts. It can be ...</p> <div class="post-preview-footer"> <div class="post-tags"> <a href="/tags/reddit/" class="tag">reddit</a><a href="/tags/agentic_ai/" class="tag">agentic_AI</a><a href="/tags/ai/" class="tag">AI</a><a href="/tags/llms/" class="tag">LLMs</a> </div> </div> </article><article class="post-preview" data-post-url="/from-prompt-to-production-windows-gemini-edition"> <div class="post-preview-header"> <div class="post-preview-image"> <img src="/_astro/gemini.D6v44quI_17hb1w.webp" alt="From Prompt to Production: Windows/Gemini Edition" loading="lazy" decoding="async" fetchpriority="auto" width="400" height="240"> </div> <div class="post-preview-content"> <h2 class="post-title"> <a href="/from-prompt-to-production-windows-gemini-edition/">From Prompt to Production: Windows/Gemini Edition</a> </h2> <p class="post-subtitle">Vibe-coding and testing local web apps, and deploying with GitHub and Vercel</p> <div class="post-meta"> <time datetime="2025-11-03">Nov 03, 2025</time> <span class="read-time">11 min read</span> <div class="series-badge"> <span class="series-label">Series:</span> <a href="/series/artificial-intelligence/" class="series-link">Artificial Intelligence</a> </div> </div> </div> </div> <p class="post-excerpt">Learn how to set up a complete vibe-coding pipeline for free, with Gemini CLI, GitHub and Vercel.</p> <div class="post-preview-footer"> <div class="post-tags"> <a href="/tags/ai/" class="tag">AI</a><a href="/tags/ai_code_generator/" class="tag">AI_Code_Generator</a><a href="/tags/gemini/" class="tag">gemini</a><a href="/tags/windows/" class="tag">Windows</a><a href="/tags/vibe_coding/" class="tag">vibe_coding</a> </div> </div> </article><article class="post-preview" data-post-url="/building-an-aeo-geo-monitoring-tool-with-openrouter-posthog"> <div class="post-preview-header"> <div class="post-preview-image"> <img src="/_astro/aeo.Bjey22Ze_jyzcn.webp" alt="Building an AEO/GEO Monitoring Tool with OpenRouter &#38; PostHog" loading="lazy" decoding="async" fetchpriority="auto" width="400" height="240"> </div> <div class="post-preview-content"> <h2 class="post-title"> <a href="/building-an-aeo-geo-monitoring-tool-with-openrouter-posthog/">Building an AEO/GEO Monitoring Tool with OpenRouter &amp; PostHog</a> </h2> <p class="post-subtitle">Simple Python Script to Test Multiple Models &amp; Check Responses for Keywords</p> <div class="post-meta"> <time datetime="2025-10-13">Oct 13, 2025</time> <span class="read-time">10 min read</span> <div class="series-badge"> <span class="series-label">Series:</span> <a href="/series/artificial-intelligence/" class="series-link">Artificial Intelligence</a> </div> </div> </div> </div> <p class="post-excerpt">A guide to building an answer engine optimization monitoring tool in Python, using OpenRouter to query multiple models and PostHog for analytics.</p> <div class="post-preview-footer"> <div class="post-tags"> <a href="/tags/ai/" class="tag">AI</a><a href="/tags/python/" class="tag">Python</a><a href="/tags/posthog/" class="tag">PostHog</a><a href="/tags/openrouter/" class="tag">OpenRouter</a><a href="/tags/llms/" class="tag">LLMs</a> </div> </div> </article><article class="post-preview" data-post-url="/interactive-knowledge-graph-of-blog-posts-using-vis-network-js"> <div class="post-preview-header"> <div class="post-preview-image"> <img src="/_astro/kg-gen.DMhY4yOM_s3rpL.webp" alt="Interactive Knowledge Graph of Blog Posts Using Vis-Network JS" loading="lazy" decoding="async" fetchpriority="auto" width="400" height="240"> </div> <div class="post-preview-content"> <h2 class="post-title"> <a href="/interactive-knowledge-graph-of-blog-posts-using-vis-network-js/">Interactive Knowledge Graph of Blog Posts Using Vis-Network JS</a> </h2> <p class="post-subtitle">Building a Network Visualization from an XML Sitemap</p> <div class="post-meta"> <time datetime="2025-09-19">Sep 19, 2025</time> <span class="read-time">7 min read</span> <div class="series-badge"> <span class="series-label">Series:</span> <a href="/series/knowledge-graphs/" class="series-link">Knowledge Graphs</a> </div> </div> </div> </div> <p class="post-excerpt">A guide to generating an interactive knowledge graph from an XML sitemap, using the vis-network JavaScript library.</p> <div class="post-preview-footer"> <div class="post-tags"> <a href="/tags/knowledge_graph/" class="tag">knowledge_graph</a><a href="/tags/neo4j/" class="tag">Neo4j</a><a href="/tags/javascript/" class="tag">JavaScript</a><a href="/tags/xml/" class="tag">xml</a> </div> </div> </article><article class="post-preview" data-post-url="/replicating-uis-from-an-image-with-vibe-coding-tools"> <div class="post-preview-header"> <div class="post-preview-image"> <img src="/_astro/ui-replication.BVwS-3na_OMbq.webp" alt="Replicating UIs from an Image with Vibe-Coding Tools" loading="lazy" decoding="async" fetchpriority="auto" width="400" height="240"> </div> <div class="post-preview-content"> <h2 class="post-title"> <a href="/replicating-uis-from-an-image-with-vibe-coding-tools/">Replicating UIs from an Image with Vibe-Coding Tools</a> </h2> <p class="post-subtitle">Testing UI Reproduction from Multimodal Input in Lovable, Bolt, V0, Claude, and more</p> <div class="post-meta"> <time datetime="2025-08-18">Aug 18, 2025</time> <span class="read-time">7 min read</span> <div class="series-badge"> <span class="series-label">Series:</span> <a href="/series/artificial-intelligence/" class="series-link">Artificial Intelligence</a> </div> </div> </div> </div> <p class="post-excerpt">Measuring performance across multiple models at replicating UIs from an image.</p> <div class="post-preview-footer"> <div class="post-tags"> <a href="/tags/anthropic/" class="tag">anthropic</a><a href="/tags/ai/" class="tag">AI</a><a href="/tags/chatgpt/" class="tag">chatgpt</a><a href="/tags/gemini/" class="tag">gemini</a><a href="/tags/vibe_coding/" class="tag">vibe_coding</a> </div> </div> </article><article class="post-preview" data-post-url="/open-source-chrome-extension-chat-with-web-page"> <div class="post-preview-header"> <div class="post-preview-image"> <img src="/_astro/cover.CFQAaFkp_1gzoUa.webp" alt="Open Source Chrome Extension to Chat with Web Pages" loading="lazy" decoding="async" fetchpriority="auto" width="400" height="240"> </div> <div class="post-preview-content"> <h2 class="post-title"> <a href="/open-source-chrome-extension-chat-with-web-page/">Open Source Chrome Extension to Chat with Web Pages</a> </h2> <p class="post-subtitle">Add AI Chat To Any Website, Powered By Pinecone Assistants</p> <div class="post-meta"> <time datetime="2025-08-10">Aug 10, 2025</time> <span class="read-time">3 min read</span> <div class="series-badge"> <span class="series-label">Series:</span> <a href="/series/artificial-intelligence/" class="series-link">Artificial Intelligence</a> </div> </div> </div> </div> <p class="post-excerpt">Add AI Chat To Any Website, Powered By Pinecone Assistants</p> <div class="post-preview-footer"> <div class="post-tags"> <a href="/tags/llms/" class="tag">LLMs</a><a href="/tags/ai/" class="tag">AI</a><a href="/tags/apis/" class="tag">APIs</a><a href="/tags/pinecone/" class="tag">Pinecone</a><a href="/tags/chrome_extension/" class="tag">chrome_extension</a> </div> </div> </article><article class="post-preview" data-post-url="/claude-code-hook-to-ask-gemini-for-help"> <div class="post-preview-header"> <div class="post-preview-image"> <img src="/_astro/cover.DKrs6m1L_Z2hCr0i.webp" alt="Claude Code Hook to Ask Gemini for Help" loading="lazy" decoding="async" fetchpriority="auto" width="400" height="240"> </div> <div class="post-preview-content"> <h2 class="post-title"> <a href="/claude-code-hook-to-ask-gemini-for-help/">Claude Code Hook to Ask Gemini for Help</a> </h2> <p class="post-subtitle">Call Gemini CLI for backup, from within Claude Code CLI</p> <div class="post-meta"> <time datetime="2025-07-28">Jul 28, 2025</time> <span class="read-time">6 min read</span> <div class="series-badge"> <span class="series-label">Series:</span> <a href="/series/artificial-intelligence/" class="series-link">Artificial Intelligence</a> </div> </div> </div> </div> <p class="post-excerpt">A guide on using Claude Code Hooks with the userPromptSubmit trigger to call Gemini&#39;s CLI for help when stuck</p> <div class="post-preview-footer"> <div class="post-tags"> <a href="/tags/ai/" class="tag">AI</a><a href="/tags/anthropic/" class="tag">anthropic</a><a href="/tags/claudeai/" class="tag">claudeai</a><a href="/tags/cli/" class="tag">CLI</a><a href="/tags/gemini/" class="tag">gemini</a><a href="/tags/python/" class="tag">Python</a> </div> </div> </article><article class="post-preview" data-post-url="/adding-thumbnail-previews-to-folders-in-mac-finder"> <div class="post-preview-header"> <div class="post-preview-image"> <img src="/_astro/cover.C3LzXfKH_ZumAqJ.webp" alt="Adding Thumbnail Previews to Folders in Mac Finder with Python" loading="lazy" decoding="async" fetchpriority="auto" width="400" height="240"> </div> <div class="post-preview-content"> <h2 class="post-title"> <a href="/adding-thumbnail-previews-to-folders-in-mac-finder/">Adding Thumbnail Previews to Folders in Mac Finder with Python</a> </h2> <p class="post-subtitle">Simple Script to Generate and Save Folder Icons</p> <div class="post-meta"> <time datetime="2025-07-14">Jul 14, 2025</time> <span class="read-time">14 min read</span> <div class="series-badge"> <span class="series-label">Series:</span> <a href="/series/python-tutorials/" class="series-link">Python Tutorials</a> </div> </div> </div> </div> <p class="post-excerpt">A guide to adding thumbnail previews to image folders in MacOS Finder using Python.</p> <div class="post-preview-footer"> <div class="post-tags"> <a href="/tags/python/" class="tag">Python</a><a href="/tags/macos/" class="tag">macOS</a><a href="/tags/image_processing/" class="tag">image_processing</a><a href="/tags/cli/" class="tag">CLI</a> </div> </div> </article><article class="post-preview" data-post-url="/it-might-be-time-to-migrate-your-hashnode-blog"> <div class="post-preview-header"> <div class="post-preview-image"> <img src="/_astro/cover.DIdqIER4_Z1rKbMn.webp" alt="It Might Be Time To Migrate Your Hashnode Blog" loading="lazy" decoding="async" fetchpriority="auto" width="400" height="240"> </div> <div class="post-preview-content"> <h2 class="post-title"> <a href="/it-might-be-time-to-migrate-your-hashnode-blog/">It Might Be Time To Migrate Your Hashnode Blog</a> </h2> <p class="post-subtitle">Open Source Tool to Extract Metadata &amp; Images Missing in Export</p> <div class="post-meta"> <time datetime="2025-07-07">Jul 07, 2025</time> <span class="read-time">6 min read</span> <div class="series-badge"> <span class="series-label">Series:</span> <a href="/series/markdown-mastery/" class="series-link">Markdown Mastery</a> </div> </div> </div> </div> <p class="post-excerpt">A Guide To Migrating Your Blog From Hashnode</p> <div class="post-preview-footer"> <div class="post-tags"> <a href="/tags/hashnode/" class="tag">Hashnode</a><a href="/tags/blogging/" class="tag">blogging</a><a href="/tags/markdown/" class="tag">markdown</a> </div> </div> </article><article class="post-preview" data-post-url="/from-prompt-to-production-vibe-coding-local-ai-apps-with-claude-ollama"> <div class="post-preview-header"> <div class="post-preview-image"> <img src="/_astro/cover.-crXPxar_2lJAhc.webp" alt="From Prompt to Production: Vibe Coding Local AI Apps with Claude + Ollama" loading="lazy" decoding="async" fetchpriority="auto" width="400" height="240"> </div> <div class="post-preview-content"> <h2 class="post-title"> <a href="/from-prompt-to-production-vibe-coding-local-ai-apps-with-claude-ollama/">From Prompt to Production: Vibe Coding Local AI Apps with Claude + Ollama</a> </h2> <p class="post-subtitle">A guide to building offline AI apps and dealing with CORS</p> <div class="post-meta"> <time datetime="2025-06-30">Jun 30, 2025</time> <span class="read-time">7 min read</span> <div class="series-badge"> <span class="series-label">Series:</span> <a href="/series/artificial-intelligence/" class="series-link">Artificial Intelligence</a> </div> </div> </div> </div> <p class="post-excerpt">In this guide, I’ll show you how you can build and run your own AI-powered apps that work completely offline, and do it without writing a single line of code. I’ll be using my favorite vibe-coding too...</p> <div class="post-preview-footer"> <div class="post-tags"> <a href="/tags/ollama/" class="tag">ollama</a><a href="/tags/llama3/" class="tag">Llama3</a><a href="/tags/multimodalai/" class="tag">multimodalai</a><a href="/tags/llms/" class="tag">LLMs</a><a href="/tags/ai/" class="tag">AI</a><a href="/tags/macos/" class="tag">macOS</a><a href="/tags/claudeai/" class="tag">claudeai</a><a href="/tags/anthropic/" class="tag">anthropic</a><a href="/tags/open_source/" class="tag">Open_Source</a><a href="/tags/vibe_coding/" class="tag">vibe_coding</a> </div> </div> </article><article class="post-preview" data-post-url="/so-you-want-to-integrate-with-the-sec-api"> <div class="post-preview-header"> <div class="post-preview-image"> <img src="/_astro/cover.DCFUGLT0_ZSRSpf.webp" alt="So you want to integrate with the SEC API" loading="lazy" decoding="async" fetchpriority="auto" width="400" height="240"> </div> <div class="post-preview-content"> <h2 class="post-title"> <a href="/so-you-want-to-integrate-with-the-sec-api/">So you want to integrate with the SEC API</a> </h2> <p class="post-subtitle">A How-To Guide for Dealing with EDGAR&#39;s Oddities</p> <div class="post-meta"> <time datetime="2025-06-23">Jun 23, 2025</time> <span class="read-time">8 min read</span>  </div> </div> </div> <p class="post-excerpt">Hello, yes I’d like to speak to the (developer experience) manager! 🤬


☝️That was me a few weeks ago when I first tried using the SEC API.
I’ve integrated with a lot of APIs over the years, but none...</p> <div class="post-preview-footer"> <div class="post-tags"> <a href="/tags/finance/" class="tag">finance</a><a href="/tags/fintech/" class="tag">fintech</a><a href="/tags/stockmarket/" class="tag">stockmarket</a><a href="/tags/stocks/" class="tag">stocks</a><a href="/tags/javascript/" class="tag">JavaScript</a><a href="/tags/json/" class="tag">json</a><a href="/tags/xml/" class="tag">xml</a><a href="/tags/cors/" class="tag">CORS</a> </div> </div> </article><article class="post-preview" data-post-url="/knowledge-graph-generator-with-claude-desktop-and-neo4j-mcp"> <div class="post-preview-header"> <div class="post-preview-image"> <img src="/_astro/cover.D4FwbwlF_ZbMz28.webp" alt="Knowledge Graph Generator with Claude Desktop and Neo4j MCP" loading="lazy" decoding="async" fetchpriority="auto" width="400" height="240"> </div> <div class="post-preview-content"> <h2 class="post-title"> <a href="/knowledge-graph-generator-with-claude-desktop-and-neo4j-mcp/">Knowledge Graph Generator with Claude Desktop and Neo4j MCP</a> </h2> <p class="post-subtitle">Building A Text to Cypher Agent Without A Single Line Of Code</p> <div class="post-meta"> <time datetime="2025-06-09">Jun 09, 2025</time> <span class="read-time">5 min read</span> <div class="series-badge"> <span class="series-label">Series:</span> <a href="/series/artificial-intelligence/" class="series-link">Artificial Intelligence</a> </div> </div> </div> </div> <p class="post-excerpt">Knowledge graphs are more than just interesting data visualizations. They’re also extremely effective as a data source for RAG (Retrieval-Augmented Generation), and can significantly improve LLM respo...</p> <div class="post-preview-footer"> <div class="post-tags"> <a href="/tags/neo4j/" class="tag">Neo4j</a><a href="/tags/knowledge_graph/" class="tag">knowledge_graph</a><a href="/tags/claudeai/" class="tag">claudeai</a><a href="/tags/anthropic/" class="tag">anthropic</a><a href="/tags/mcp_server/" class="tag">mcp_server</a><a href="/tags/rag/" class="tag">RAG</a><a href="/tags/llms/" class="tag">LLMs</a><a href="/tags/named_entity_recognition/" class="tag">named_entity_recognition</a><a href="/tags/ai/" class="tag">AI</a> </div> </div> </article><article class="post-preview" data-post-url="/building-an-ai-powered-discord-bot-with-railway-and-pinecone"> <div class="post-preview-header"> <div class="post-preview-image"> <img src="/_astro/cover.pr4UfpE3_Z1Cv0xi.webp" alt="Building an AI-Powered Discord Bot with Railway and Pinecone" loading="lazy" decoding="async" fetchpriority="auto" width="400" height="240"> </div> <div class="post-preview-content"> <h2 class="post-title"> <a href="/building-an-ai-powered-discord-bot-with-railway-and-pinecone/">Building an AI-Powered Discord Bot with Railway and Pinecone</a> </h2> <p class="post-subtitle">Automating Server Moderation with Python</p> <div class="post-meta"> <time datetime="2025-06-01">Jun 01, 2025</time> <span class="read-time">10 min read</span> <div class="series-badge"> <span class="series-label">Series:</span> <a href="/series/artificial-intelligence/" class="series-link">Artificial Intelligence</a> </div> </div> </div> </div> <p class="post-excerpt">Discord may be known for gaming, but it’s also widely used as a community and support forum for tech companies. Regardless of the use though, pretty much ever server has to deal with spam and scammers...</p> <div class="post-preview-footer"> <div class="post-tags"> <a href="/tags/python/" class="tag">Python</a><a href="/tags/discord/" class="tag">discord</a><a href="/tags/pinecone/" class="tag">Pinecone</a><a href="/tags/ai_assistants/" class="tag">AI_Assistants</a><a href="/tags/github/" class="tag">GitHub</a><a href="/tags/railway/" class="tag">railway</a><a href="/tags/llms/" class="tag">LLMs</a><a href="/tags/bot/" class="tag">bot</a> </div> </div> </article><article class="post-preview" data-post-url="/deep-dive-into-hashnode-embeds-and-widgets"> <div class="post-preview-header"> <div class="post-preview-image"> <img src="/_astro/cover.4Xs2rc-Z_Z1jvotH.webp" alt="Deep Dive Into Hashnode Embeds and Widgets" loading="lazy" decoding="async" fetchpriority="auto" width="400" height="240"> </div> <div class="post-preview-content"> <h2 class="post-title"> <a href="/deep-dive-into-hashnode-embeds-and-widgets/">Deep Dive Into Hashnode Embeds and Widgets</a> </h2> <p class="post-subtitle">Power up your Hashnode blog with advanced features</p> <div class="post-meta"> <time datetime="2025-05-30">May 30, 2025</time> <span class="read-time">3 min read</span>  </div> </div> </div> <p class="post-excerpt">I’ve been using Hashnode for my blog for about 5 years now. I originally chose it because it was the only option that supported connecting a custom domain for free, and 5 years later I have no regrets...</p> <div class="post-preview-footer"> <div class="post-tags"> <a href="/tags/hashnode/" class="tag">Hashnode</a><a href="/tags/iframe/" class="tag">iframe</a><a href="/tags/widgets/" class="tag">widgets</a><a href="/tags/knowledge_graph/" class="tag">knowledge_graph</a><a href="/tags/html/" class="tag">HTML</a> </div> </div> </article><article class="post-preview" data-post-url="/ollama-and-fastapi-for-local-markdown-automations"> <div class="post-preview-header"> <div class="post-preview-image"> <img src="/_astro/cover.CmYqvqsd_Z2tjoBX.webp" alt="Ollama &#38; FastAPI for Local Markdown Automations" loading="lazy" decoding="async" fetchpriority="auto" width="400" height="240"> </div> <div class="post-preview-content"> <h2 class="post-title"> <a href="/ollama-and-fastapi-for-local-markdown-automations/">Ollama &amp; FastAPI for Local Markdown Automations</a> </h2> <p class="post-subtitle">Self-hosted Markdown Generator in Python</p> <div class="post-meta"> <time datetime="2025-05-11">May 11, 2025</time> <span class="read-time">8 min read</span> <div class="series-badge"> <span class="series-label">Series:</span> <a href="/series/artificial-intelligence/" class="series-link">Artificial Intelligence</a> </div> </div> </div> </div> <p class="post-excerpt">Markdown is a great format for storing text files that need to be compatible with multiple systems. And LLMs excel at generating Markdown. If you regularly copy/paste responses from ChatGPT to a text ...</p> <div class="post-preview-footer"> <div class="post-tags"> <a href="/tags/python/" class="tag">Python</a><a href="/tags/python_3/" class="tag">Python_3</a><a href="/tags/ollama/" class="tag">ollama</a><a href="/tags/llama/" class="tag">LLaMa</a><a href="/tags/chatgpt/" class="tag">chatgpt</a><a href="/tags/markdown/" class="tag">markdown</a><a href="/tags/llms/" class="tag">LLMs</a><a href="/tags/fastapi/" class="tag">FastAPI</a><a href="/tags/self-hosted/" class="tag">self-hosted</a> </div> </div> </article><article class="post-preview" data-post-url="/may-the-nodes-be-with-you"> <div class="post-preview-header"> <div class="post-preview-image"> <img src="/_astro/cover.Bn-Bkx5u_1Iwex2.webp" alt="May the Nodes Be with You" loading="lazy" decoding="async" fetchpriority="auto" width="400" height="240"> </div> <div class="post-preview-content"> <h2 class="post-title"> <a href="/may-the-nodes-be-with-you/">May the Nodes Be with You</a> </h2> <p class="post-subtitle">A Star Wars Themed Knowledge Graph Generator with Neo4j &amp; JavaScript</p> <div class="post-meta"> <time datetime="2025-05-04">May 04, 2025</time> <span class="read-time">8 min read</span> <div class="series-badge"> <span class="series-label">Series:</span> <a href="/series/knowledge-graphs/" class="series-link">Knowledge Graphs</a> </div> </div> </div> </div> <p class="post-excerpt">Knowledge graphs are powerful tools to visualize and explore your data, and can help uncover new insights and patterns in how your data is related. They are easy to search and navigate, but getting yo...</p> <div class="post-preview-footer"> <div class="post-tags"> <a href="/tags/may_the_4th/" class="tag">may_the_4th</a><a href="/tags/star_wars_day/" class="tag">star_wars_day</a><a href="/tags/knowledge_graph/" class="tag">knowledge_graph</a><a href="/tags/ontology/" class="tag">ontology</a><a href="/tags/neo4j/" class="tag">Neo4j</a><a href="/tags/graph_database/" class="tag">graph_database</a><a href="/tags/obsidian/" class="tag">obsidian</a><a href="/tags/javascript/" class="tag">JavaScript</a><a href="/tags/star_wars/" class="tag">star_wars</a><a href="/tags/cypher/" class="tag">cypher</a> </div> </div> </article><article class="post-preview" data-post-url="/reddit-api-with-oauth2-using-google-apps-script"> <div class="post-preview-header"> <div class="post-preview-image"> <img src="/_astro/cover.Dc0IqoaX_Z289fnq.webp" alt="Reddit API with OAuth2 using Google Apps Script" loading="lazy" decoding="async" fetchpriority="auto" width="400" height="240"> </div> <div class="post-preview-content"> <h2 class="post-title"> <a href="/reddit-api-with-oauth2-using-google-apps-script/">Reddit API with OAuth2 using Google Apps Script</a> </h2> <p class="post-subtitle">A guide for Reddit OAuth2 flow and refresh token using Apps Script and Google Sheets</p> <div class="post-meta"> <time datetime="2025-04-30">Apr 30, 2025</time> <span class="read-time">7 min read</span> <div class="series-badge"> <span class="series-label">Series:</span> <a href="/series/google-apps-script/" class="series-link">Google Apps Script</a> </div> </div> </div> </div> <p class="post-excerpt">Reddit offers several different options for integrating web apps, scripts, and installed apps. Just go to https://www.reddit.com/prefs/apps/ to create a new app and select the type.

In this guide, we...</p> <div class="post-preview-footer"> <div class="post-tags"> <a href="/tags/reddit/" class="tag">reddit</a><a href="/tags/rest_api/" class="tag">REST_API</a><a href="/tags/javascript/" class="tag">JavaScript</a><a href="/tags/google_apps_script/" class="tag">google_apps_script</a><a href="/tags/oauth2/" class="tag">OAuth2</a><a href="/tags/google_sheets/" class="tag">google_sheets</a><a href="/tags/apis/" class="tag">APIs</a><a href="/tags/social_media/" class="tag">social_media</a><a href="/tags/social_media_marketing/" class="tag">social_media_marketing</a> </div> </div> </article><article class="post-preview" data-post-url="/so-you-want-to-send-json-to-a-google-apps-script-web-app"> <div class="post-preview-header"> <div class="post-preview-image"> <img src="/_astro/cover.iJifCe0g_2sMqGd.webp" alt="So you want to send JSON to a Google Apps Script Web App..." loading="lazy" decoding="async" fetchpriority="auto" width="400" height="240"> </div> <div class="post-preview-content"> <h2 class="post-title"> <a href="/so-you-want-to-send-json-to-a-google-apps-script-web-app/">So you want to send JSON to a Google Apps Script Web App...</a> </h2> <p class="post-subtitle">Dealing with 405 Method Not Allowed Errors and 302 Redirects</p> <div class="post-meta"> <time datetime="2025-04-26">Apr 26, 2025</time> <span class="read-time">5 min read</span> <div class="series-badge"> <span class="series-label">Series:</span> <a href="/series/google-apps-script/" class="series-link">Google Apps Script</a> </div> </div> </div> </div> <p class="post-excerpt">Google Apps Scripts is incredible for a free product. There are so many things you can automate using script triggers and Google Sheets, Gmail, Docs, Calendar, and the rest of the Google ecosystem. Yo...</p> <div class="post-preview-footer"> <div class="post-tags"> <a href="/tags/google_apps_script/" class="tag">google_apps_script</a><a href="/tags/google_sheets/" class="tag">google_sheets</a><a href="/tags/javascript/" class="tag">JavaScript</a><a href="/tags/fetch/" class="tag">fetch</a><a href="/tags/cors/" class="tag">CORS</a><a href="/tags/http/" class="tag">http</a><a href="/tags/rest_api/" class="tag">REST_API</a><a href="/tags/json/" class="tag">json</a><a href="/tags/automation/" class="tag">automation</a> </div> </div> </article><article class="post-preview" data-post-url="/building-a-knowledge-graph-locally-with-neo4j-and-ollama"> <div class="post-preview-header"> <div class="post-preview-image"> <img src="/_astro/cover.IPTlP8F0_4ze2e.webp" alt="Building a Knowledge Graph Locally with Neo4j &#38; Ollama" loading="lazy" decoding="async" fetchpriority="auto" width="400" height="240"> </div> <div class="post-preview-content"> <h2 class="post-title"> <a href="/building-a-knowledge-graph-locally-with-neo4j-and-ollama/">Building a Knowledge Graph Locally with Neo4j &amp; Ollama</a> </h2> <p class="post-subtitle">Generating Cypher Queries From Text Using Python &amp; Hugging Face</p> <div class="post-meta"> <time datetime="2025-04-21">Apr 21, 2025</time> <span class="read-time">17 min read</span> <div class="series-badge"> <span class="series-label">Series:</span> <a href="/series/python-tutorials/" class="series-link">Python Tutorials</a> </div> </div> </div> </div> <p class="post-excerpt">Knowledge graphs, also known as semantic networks, are a specialized application of graph databases used to store information about entities (person, location, organization, etc) and their relationshi...</p> <div class="post-preview-footer"> <div class="post-tags"> <a href="/tags/neo4j/" class="tag">Neo4j</a><a href="/tags/graph_database/" class="tag">graph_database</a><a href="/tags/knowledge_graph/" class="tag">knowledge_graph</a><a href="/tags/python/" class="tag">Python</a><a href="/tags/python_3/" class="tag">Python_3</a><a href="/tags/huggingface/" class="tag">huggingface</a><a href="/tags/llms/" class="tag">LLMs</a><a href="/tags/cypher/" class="tag">cypher</a><a href="/tags/macos/" class="tag">macOS</a><a href="/tags/obsidian/" class="tag">obsidian</a><a href="/tags/ollama/" class="tag">ollama</a><a href="/tags/ontology/" class="tag">ontology</a> </div> </div> </article><article class="post-preview" data-post-url="/markdown-editor-and-knowledge-graph-notes-app-with-visjs-in-filemaker-pro"> <div class="post-preview-header"> <div class="post-preview-image"> <img src="/_astro/cover.CQvqiH1g_1OuUW7.webp" alt="Markdown Editor and Knowledge Graph Notes App with Vis.js in FileMaker Pro" loading="lazy" decoding="async" fetchpriority="auto" width="400" height="240"> </div> <div class="post-preview-content"> <h2 class="post-title"> <a href="/markdown-editor-and-knowledge-graph-notes-app-with-visjs-in-filemaker-pro/">Markdown Editor and Knowledge Graph Notes App with Vis.js in FileMaker Pro</a> </h2> <p class="post-subtitle">A Star Trek Themed Editor Inspired by Obsidian</p> <div class="post-meta"> <time datetime="2025-04-06">Apr 06, 2025</time> <span class="read-time">24 min read</span> <div class="series-badge"> <span class="series-label">Series:</span> <a href="/series/filemaker-pro/" class="series-link">FileMaker Pro</a> </div> </div> </div> </div> <p class="post-excerpt">Markdown is used widely in programming, documentation, content creation, GitHub, and lots of other areas in tech. One of the most popular Markdown editors is Obsidian, a note taking app with an intere...</p> <div class="post-preview-footer"> <div class="post-tags"> <a href="/tags/knowledge_graph/" class="tag">knowledge_graph</a><a href="/tags/obsidian/" class="tag">obsidian</a><a href="/tags/filemaker/" class="tag">filemaker</a><a href="/tags/claris/" class="tag">claris</a><a href="/tags/markdown/" class="tag">markdown</a><a href="/tags/javascript/" class="tag">JavaScript</a><a href="/tags/data_visualization/" class="tag">data_visualization</a> </div> </div> </article><article class="post-preview" data-post-url="/replacing-google-forms-with-cloudflare-pages-and-apps-script"> <div class="post-preview-header"> <div class="post-preview-image"> <img src="/_astro/cover.BChq5l_N_Z3qkvY.webp" alt="Replacing Google Forms with CloudFlare Pages &#38; Apps Script" loading="lazy" decoding="async" fetchpriority="auto" width="400" height="240"> </div> <div class="post-preview-content"> <h2 class="post-title"> <a href="/replacing-google-forms-with-cloudflare-pages-and-apps-script/">Replacing Google Forms with CloudFlare Pages &amp; Apps Script</a> </h2> <p class="post-subtitle">Building a free web site contact form with no Google branding</p> <div class="post-meta"> <time datetime="2025-03-22">Mar 22, 2025</time> <span class="read-time">6 min read</span> <div class="series-badge"> <span class="series-label">Series:</span> <a href="/series/google-apps-script/" class="series-link">Google Apps Script</a> </div> </div> </div> </div> <p class="post-excerpt">Google Forms is the most obvious choice when you need a simple public form to collect information into a spreadsheet. You can share a link to the form, or embed the form directly in your website. The ...</p> <div class="post-preview-footer"> <div class="post-tags"> <a href="/tags/google_apps_script/" class="tag">google_apps_script</a><a href="/tags/google_sheets/" class="tag">google_sheets</a><a href="/tags/google_forms/" class="tag">google_forms</a><a href="/tags/cloudflare/" class="tag">cloudflare</a><a href="/tags/githubpages/" class="tag">GitHubPages</a><a href="/tags/small_business/" class="tag">Small_business</a> </div> </div> </article><article class="post-preview" data-post-url="/named-entity-recognition-with-bert-and-hugging-face"> <div class="post-preview-header"> <div class="post-preview-image"> <img src="/_astro/cover.DDRyxDFF_Z1dxJBM.webp" alt="Named Entity Recognition with BERT and Hugging Face 🤗" loading="lazy" decoding="async" fetchpriority="auto" width="400" height="240"> </div> <div class="post-preview-content"> <h2 class="post-title"> <a href="/named-entity-recognition-with-bert-and-hugging-face/">Named Entity Recognition with BERT and Hugging Face 🤗</a> </h2> <p class="post-subtitle">Extracting Object Data from Unstructured Text</p> <div class="post-meta"> <time datetime="2025-03-17">Mar 17, 2025</time> <span class="read-time">7 min read</span> <div class="series-badge"> <span class="series-label">Series:</span> <a href="/series/artificial-intelligence/" class="series-link">Artificial Intelligence</a> </div> </div> </div> </div> <p class="post-excerpt">What is NER (Named Entity Recognition)?
Named Entity Recognition is a technique in Natural Language Processing (NLP), which involves identifying and classifying entities—such as names of people, organ...</p> <div class="post-preview-footer"> <div class="post-tags"> <a href="/tags/ner/" class="tag">NER</a><a href="/tags/bert/" class="tag">BERT</a><a href="/tags/nlp/" class="tag">nlp</a><a href="/tags/nlp_transformers/" class="tag">nlp_transformers</a><a href="/tags/llms/" class="tag">LLMs</a><a href="/tags/knowledge_graph/" class="tag">knowledge_graph</a><a href="/tags/named_entity_recognition/" class="tag">named_entity_recognition</a><a href="/tags/unstructured_data/" class="tag">unstructured_data</a><a href="/tags/huggingface/" class="tag">huggingface</a> </div> </div> </article><article class="post-preview" data-post-url="/filemaker-web-viewer-copilot-with-openai-assistant-and-codemirrorjs"> <div class="post-preview-header"> <div class="post-preview-image"> <img src="/_astro/cover.DCGuhb2H_Z2mvTlw.webp" alt="FileMaker Web Viewer Copilot with OpenAI Assistant and CodeMirror.js" loading="lazy" decoding="async" fetchpriority="auto" width="400" height="240"> </div> <div class="post-preview-content"> <h2 class="post-title"> <a href="/filemaker-web-viewer-copilot-with-openai-assistant-and-codemirrorjs/">FileMaker Web Viewer Copilot with OpenAI Assistant and CodeMirror.js</a> </h2> <p class="post-subtitle">Generate Custom UI Components With Plain Text Prompts</p> <div class="post-meta"> <time datetime="2025-03-10">Mar 10, 2025</time> <span class="read-time">8 min read</span> <div class="series-badge"> <span class="series-label">Series:</span> <a href="/series/filemaker-pro/" class="series-link">FileMaker Pro</a> </div> </div> </div> </div> <p class="post-excerpt">Web viewers in FileMaker Pro are a great way to extend the platform and create new UI components that would otherwise be impossible. The results can be extremely powerful, but working with web viewers...</p> <div class="post-preview-footer"> <div class="post-tags"> <a href="/tags/filemaker/" class="tag">filemaker</a><a href="/tags/claris/" class="tag">claris</a><a href="/tags/openai/" class="tag">openai</a><a href="/tags/ai_assistants/" class="tag">AI_Assistants</a><a href="/tags/ai_code_generator/" class="tag">AI_Code_Generator</a> </div> </div> </article><article class="post-preview" data-post-url="/52-weeks-of-video-tutorials-what-i-learned-about-content-creation-community-and-developer-relations"> <div class="post-preview-header"> <div class="post-preview-image"> <img src="/_astro/cover.2WtipiC__Z1oPBLB.webp" alt="52 Weeks of Video Tutorials: What I Learned About Content Creation, Community, and Developer Relations" loading="lazy" decoding="async" fetchpriority="auto" width="400" height="240"> </div> <div class="post-preview-content"> <h2 class="post-title"> <a href="/52-weeks-of-video-tutorials-what-i-learned-about-content-creation-community-and-developer-relations/">52 Weeks of Video Tutorials: What I Learned About Content Creation, Community, and Developer Relations</a> </h2> <p class="post-subtitle">A year-long journey of creating weekly tutorial content and key insights for content creators</p> <div class="post-meta"> <time datetime="2025-02-11">Feb 11, 2025</time> <span class="read-time">7 min read</span>  </div> </div> </div> <p class="post-excerpt">Just over a year ago, I had no real experience in recording video tutorials, or in the editing or distribution process. I had experimented with a few, but never consistently, and I had no idea what I ...</p> <div class="post-preview-footer"> <div class="post-tags"> <a href="/tags/devrel/" class="tag">DevRel</a><a href="/tags/video/" class="tag">video</a><a href="/tags/tutorial/" class="tag">Tutorial</a><a href="/tags/youtube/" class="tag">youtube</a><a href="/tags/appsmith/" class="tag">appsmith</a><a href="/tags/javascript/" class="tag">JavaScript</a><a href="/tags/content-creation/" class="tag">content creation</a><a href="/tags/developer-tools/" class="tag">Developer Tools</a> </div> </div> </article><article class="post-preview" data-post-url="/anti-spam-agent-openai-assistant-email-filter-using-google-apps-script"> <div class="post-preview-header"> <div class="post-preview-image"> <img src="/_astro/cover.DL-yWiFE_ZjjBvx.webp" alt="Anti-Spam Agent: OpenAI Assistant Email Filter Using Google Apps Script" loading="lazy" decoding="async" fetchpriority="auto" width="400" height="240"> </div> <div class="post-preview-content"> <h2 class="post-title"> <a href="/anti-spam-agent-openai-assistant-email-filter-using-google-apps-script/">Anti-Spam Agent: OpenAI Assistant Email Filter Using Google Apps Script</a> </h2> <p class="post-subtitle">A Timer-driven Inbox Defender Against Spam</p> <div class="post-meta"> <time datetime="2025-02-08">Feb 08, 2025</time> <span class="read-time">18 min read</span> <div class="series-badge"> <span class="series-label">Series:</span> <a href="/series/google-apps-script/" class="series-link">Google Apps Script</a> </div> </div> </div> </div> <p class="post-excerpt">I get a LOT of spam email that make it passed Google’s spam detection, and I’m constantly marking emails as spam and blocking senders. It’s a never-ending battle. Most of them end with something like
...</p> <div class="post-preview-footer"> <div class="post-tags"> <a href="/tags/google_apps_script/" class="tag">google_apps_script</a><a href="/tags/openai/" class="tag">openai</a><a href="/tags/agentic_ai/" class="tag">agentic_AI</a><a href="/tags/spam/" class="tag">spam</a><a href="/tags/gmail/" class="tag">gmail</a><a href="/tags/rest_api/" class="tag">REST_API</a><a href="/tags/javascript/" class="tag">JavaScript</a> </div> </div> </article><article class="post-preview" data-post-url="/export-sync-all-images-from-a-google-doc-to-drive-folder-using-apps-script"> <div class="post-preview-header"> <div class="post-preview-image"> <img src="/_astro/cover.t4fDU9iv_ZmkQHY.webp" alt="Export &#38; Sync All Images from a Google Doc to Drive Folder using Apps Script" loading="lazy" decoding="async" fetchpriority="auto" width="400" height="240"> </div> <div class="post-preview-content"> <h2 class="post-title"> <a href="/export-sync-all-images-from-a-google-doc-to-drive-folder-using-apps-script/">Export &amp; Sync All Images from a Google Doc to Drive Folder using Apps Script</a> </h2> <p class="post-subtitle">Easily extract all images from a doc and sync with matching folder</p> <div class="post-meta"> <time datetime="2025-02-03">Feb 03, 2025</time> <span class="read-time">6 min read</span> <div class="series-badge"> <span class="series-label">Series:</span> <a href="/series/google-apps-script/" class="series-link">Google Apps Script</a> </div> </div> </div> </div> <p class="post-excerpt">Adding images to a Google Doc is no problem, but getting them back out can be a pain. I’ve written about this before with Five Ways to Extract All Images From a Google Doc, and more recently, with thi...</p> <div class="post-preview-footer"> <div class="post-tags"> <a href="/tags/google_apps_script/" class="tag">google_apps_script</a><a href="/tags/google/" class="tag">Google</a><a href="/tags/javascript/" class="tag">JavaScript</a><a href="/tags/google_docs/" class="tag">Google_Docs</a><a href="/tags/google_drive/" class="tag">Google_Drive</a><a href="/tags/low_code/" class="tag">Low_Code</a> </div> </div> </article><article class="post-preview" data-post-url="/offline-ai-chat-with-local-rag-from-the-terminal"> <div class="post-preview-header"> <div class="post-preview-image"> <img src="/_astro/cover.KZrY-imX_Z1xIopk.webp" alt="Offline AI Chat with Local RAG from the Terminal" loading="lazy" decoding="async" fetchpriority="auto" width="400" height="240"> </div> <div class="post-preview-content"> <h2 class="post-title"> <a href="/offline-ai-chat-with-local-rag-from-the-terminal/">Offline AI Chat with Local RAG from the Terminal</a> </h2> <p class="post-subtitle">Retrieving Data from Markdown Files using Ollama on MacOS</p> <div class="post-meta"> <time datetime="2025-01-22">Jan 22, 2025</time> <span class="read-time">6 min read</span> <div class="series-badge"> <span class="series-label">Series:</span> <a href="/series/markdown-mastery/" class="series-link">Markdown Mastery</a> </div> </div> </div> </div> <p class="post-excerpt">There are plenty of online AI services like ChatGPT that make it easy to chat with your documents, using Retrieval Augmented Generation (RAG) to improve the LLM response. But these all require sending...</p> <div class="post-preview-footer"> <div class="post-tags"> <a href="/tags/ollama/" class="tag">ollama</a><a href="/tags/llms/" class="tag">LLMs</a><a href="/tags/openai/" class="tag">openai</a><a href="/tags/deepseek/" class="tag">Deepseek</a><a href="/tags/rag/" class="tag">RAG</a><a href="/tags/generative_ai/" class="tag">generative_ai</a><a href="/tags/markdown/" class="tag">markdown</a><a href="/tags/macos/" class="tag">macOS</a> </div> </div> </article><article class="post-preview" data-post-url="/becoming-the-art-ai-powered-selfies-with-flux1-and-replicatecom"> <div class="post-preview-header"> <div class="post-preview-image"> <img src="/_astro/cover.Dskb1W7__Z1EdvGA.webp" alt="Becoming the Art: AI Powered Selfies with FLUX1 and Replicate.com" loading="lazy" decoding="async" fetchpriority="auto" width="400" height="240"> </div> <div class="post-preview-content"> <h2 class="post-title"> <a href="/becoming-the-art-ai-powered-selfies-with-flux1-and-replicatecom/">Becoming the Art: AI Powered Selfies with FLUX1 and Replicate.com</a> </h2> <p class="post-subtitle">Fine-Tuning a Vision Model for Picture Perfect Results</p> <div class="post-meta"> <time datetime="2024-12-29">Dec 29, 2024</time> <span class="read-time">4 min read</span>  </div> </div> </div> <p class="post-excerpt">AI image generation has been around for a while now and become fairly accessible. You can ask ChatGPT or MidJourney to draw anything you can imagine, and they can create some pretty impressive results...</p> <div class="post-preview-footer"> <div class="post-tags"> <a href="/tags/ai/" class="tag">AI</a><a href="/tags/generative_ai/" class="tag">generative_ai</a><a href="/tags/artificial_intelligence/" class="tag">Artificial_Intelligence</a><a href="/tags/dall-e2/" class="tag">Dall-e2</a><a href="/tags/image_generation_api/" class="tag">image_generation_API</a><a href="/tags/llms/" class="tag">LLMs</a> </div> </div> </article><article class="post-preview" data-post-url="/sql-to-json-in-filemaker-using-papa-parse"> <div class="post-preview-header"> <div class="post-preview-image"> <img src="/_astro/cover.4gXej9t-_Z1V6cg0.webp" alt="SQL to JSON in FileMaker using Papa Parse" loading="lazy" decoding="async" fetchpriority="auto" width="400" height="240"> </div> <div class="post-preview-content"> <h2 class="post-title"> <a href="/sql-to-json-in-filemaker-using-papa-parse/">SQL to JSON in FileMaker using Papa Parse</a> </h2> <p class="post-subtitle">Web Viewer solution for constructing JSON from ExecuteSQL</p> <div class="post-meta"> <time datetime="2024-12-14">Dec 14, 2024</time> <span class="read-time">6 min read</span> <div class="series-badge"> <span class="series-label">Series:</span> <a href="/series/filemaker-pro/" class="series-link">FileMaker Pro</a> </div> </div> </div> </div> <p class="post-excerpt">Recently I needed to upload some data from a local FileMaker database to a REST API as part of a migration. FileMaker’s Insert from Url script step uses curl requests for sending data to another API, ...</p> <div class="post-preview-footer"> <div class="post-tags"> <a href="/tags/filemaker/" class="tag">filemaker</a><a href="/tags/claris/" class="tag">claris</a><a href="/tags/papa-parse/" class="tag">papa-parse</a><a href="/tags/javascript/" class="tag">JavaScript</a><a href="/tags/sql/" class="tag">SQL</a> </div> </div> </article><article class="post-preview" data-post-url="/extracting-all-images-from-a-google-doc-using-python"> <div class="post-preview-header"> <div class="post-preview-image"> <img src="/_astro/cover.D61OVcAS_Z3wIAm.webp" alt="Extracting All Images From A Google Doc Using Python" loading="lazy" decoding="async" fetchpriority="auto" width="400" height="240"> </div> <div class="post-preview-content"> <h2 class="post-title"> <a href="/extracting-all-images-from-a-google-doc-using-python/">Extracting All Images From A Google Doc Using Python</a> </h2> <p class="post-subtitle">Using Google Colab for Bulk Image Extraction to Drive</p> <div class="post-meta"> <time datetime="2024-11-23">Nov 23, 2024</time> <span class="read-time">6 min read</span> <div class="series-badge"> <span class="series-label">Series:</span> <a href="/series/python-tutorials/" class="series-link">Python Tutorials</a> </div> </div> </div> </div> <p class="post-excerpt">Google makes it as easy as possible to add new images to a Google Doc, with options like drag-and-drop, paste from clipboard, insert from Drive/URL, etc. But they make it surprisingly hard to get the ...</p> <div class="post-preview-footer"> <div class="post-tags"> <a href="/tags/python/" class="tag">Python</a><a href="/tags/google_colab/" class="tag">Google_Colab</a><a href="/tags/google_drive/" class="tag">Google_Drive</a><a href="/tags/tutorial/" class="tag">Tutorial</a><a href="/tags/python_3/" class="tag">Python_3</a> </div> </div> </article><article class="post-preview" data-post-url="/building-an-ai-chat-with-google-docs-knowledge-base-using-colab-pinecone"> <div class="post-preview-header"> <div class="post-preview-image"> <img src="/_astro/cover.Ae489Yw8_pjPOk.webp" alt="Building an AI Chat with Google Docs Knowledge Base Using Colab + Pinecone" loading="lazy" decoding="async" fetchpriority="auto" width="400" height="240"> </div> <div class="post-preview-content"> <h2 class="post-title"> <a href="/building-an-ai-chat-with-google-docs-knowledge-base-using-colab-pinecone/">Building an AI Chat with Google Docs Knowledge Base Using Colab + Pinecone</a> </h2> <p class="post-subtitle">Retrieval Augmented Generation with Pinecone Assistants</p> <div class="post-meta"> <time datetime="2024-11-17">Nov 17, 2024</time> <span class="read-time">6 min read</span>  </div> </div> </div> <p class="post-excerpt">LLMs can be a huge productivity boost for work, but the output is only as good as the input. To get the best results, you often have to provide extra reference data to go with the query. This is know ...</p> <div class="post-preview-footer"> <div class="post-tags"> <a href="/tags/ai/" class="tag">AI</a><a href="/tags/google_colab/" class="tag">Google_Colab</a><a href="/tags/google_docs/" class="tag">Google_Docs</a><a href="/tags/pinecone/" class="tag">Pinecone</a><a href="/tags/python/" class="tag">Python</a><a href="/tags/llms/" class="tag">LLMs</a> </div> </div> </article><article class="post-preview" data-post-url="/image-to-text-extraction-with-llama32-vision-and-python"> <div class="post-preview-header"> <div class="post-preview-image"> <img src="/_astro/cover.DhUtdlIP_Z3IRdx.webp" alt="Image-to-Text Extraction with Llama3.2-vision and Python" loading="lazy" decoding="async" fetchpriority="auto" width="400" height="240"> </div> <div class="post-preview-content"> <h2 class="post-title"> <a href="/image-to-text-extraction-with-llama32-vision-and-python/">Image-to-Text Extraction with Llama3.2-vision and Python</a> </h2> <p class="post-subtitle">Local and Offline Image Processing Made Easy With Ollama</p> <div class="post-meta"> <time datetime="2024-11-11">Nov 11, 2024</time> <span class="read-time">8 min read</span> <div class="series-badge"> <span class="series-label">Series:</span> <a href="/series/python-tutorials/" class="series-link">Python Tutorials</a> </div> </div> </div> </div> <p class="post-excerpt">Generative AI for image-to-text has been out for a while now, so we’ve all seen how well it can extract text compared to traditional OCR (optical character recognition). Sure, it can hallucinate, but ...</p> <div class="post-preview-footer"> <div class="post-tags"> <a href="/tags/python/" class="tag">Python</a><a href="/tags/llama3/" class="tag">Llama3</a><a href="/tags/ollama/" class="tag">ollama</a><a href="/tags/llms/" class="tag">LLMs</a><a href="/tags/image_processing/" class="tag">image_processing</a><a href="/tags/multimodalai/" class="tag">multimodalai</a> </div> </div> </article><article class="post-preview" data-post-url="/filemaker-image-to-text-with-llama32-vision"> <div class="post-preview-header"> <div class="post-preview-image"> <img src="/_astro/cover.CxuPlgaF_ZVTmKM.webp" alt="FileMaker Image-to-Text with Llama3.2-vision" loading="lazy" decoding="async" fetchpriority="auto" width="400" height="240"> </div> <div class="post-preview-content"> <h2 class="post-title"> <a href="/filemaker-image-to-text-with-llama32-vision/">FileMaker Image-to-Text with Llama3.2-vision</a> </h2> <p class="post-subtitle">Extracting Text From Images with a Self-Hosted LLM</p> <div class="post-meta"> <time datetime="2024-11-09">Nov 09, 2024</time> <span class="read-time">3 min read</span> <div class="series-badge"> <span class="series-label">Series:</span> <a href="/series/filemaker-pro/" class="series-link">FileMaker Pro</a> </div> </div> </div> </div> <p class="post-excerpt">Last week, Meta released the LLama3.2-vision models, adding image recognition to the existing v3.2 text models. GenAI with image-to-text has been out for a while now, but what’s new here is just how o...</p> <div class="post-preview-footer"> <div class="post-tags"> <a href="/tags/filemaker/" class="tag">filemaker</a><a href="/tags/ollama/" class="tag">ollama</a><a href="/tags/genai/" class="tag">genai</a><a href="/tags/image_processing/" class="tag">image_processing</a><a href="/tags/claris/" class="tag">claris</a> </div> </div> </article><article class="post-preview" data-post-url="/the-upwork-alternative-youve-been-waiting-for"> <div class="post-preview-header"> <div class="post-preview-image"> <img src="/_astro/cover.DjxVv1xe_1Hjioa.webp" alt="The UpWork Alternative You've Been Waiting For" loading="lazy" decoding="async" fetchpriority="auto" width="400" height="240"> </div> <div class="post-preview-content"> <h2 class="post-title"> <a href="/the-upwork-alternative-youve-been-waiting-for/">The UpWork Alternative You&#39;ve Been Waiting For</a> </h2> <p class="post-subtitle">Why self-marketing and personal lead generation might be better than freelance platforms</p> <div class="post-meta"> <time datetime="2024-10-28">Oct 28, 2024</time> <span class="read-time">8 min read</span>  </div> </div> </div> <p class="post-excerpt">Before we get started, I want to make one thing clear, this is not a post bashing UpWork. For many years, I chose to find and keep clients in UpWork, and pay the fees, because I found the service well...</p> <div class="post-preview-footer"> <div class="post-tags"> <a href="/tags/freelancing/" class="tag">Freelancing</a><a href="/tags/upwork/" class="tag">upwork</a><a href="/tags/freelance/" class="tag">freelance</a><a href="/tags/web_development/" class="tag">Web_Development</a><a href="/tags/side_project/" class="tag">side_project</a> </div> </div> </article><article class="post-preview" data-post-url="/local-llms-and-filemaker-pro"> <div class="post-preview-header"> <div class="post-preview-image"> <img src="/_astro/cover.Bw9vBjts_1f00uz.webp" alt="Local LLMs and FileMaker Pro" loading="lazy" decoding="async" fetchpriority="auto" width="400" height="240"> </div> <div class="post-preview-content"> <h2 class="post-title"> <a href="/local-llms-and-filemaker-pro/">Local LLMs and FileMaker Pro</a> </h2> <p class="post-subtitle">Secure, Self-Hosted AI with Offline Access, Using Ollama</p> <div class="post-meta"> <time datetime="2024-10-21">Oct 21, 2024</time> <span class="read-time">5 min read</span> <div class="series-badge"> <span class="series-label">Series:</span> <a href="/series/filemaker-pro/" class="series-link">FileMaker Pro</a> </div> </div> </div> </div> <p class="post-excerpt">In just the last year or so, nearly every app and web service has integrated some form of AI into their product. Even many development platforms like FileMaker now include LLMs for building custom sol...</p> <div class="post-preview-footer"> <div class="post-tags"> <a href="/tags/llms/" class="tag">LLMs</a><a href="/tags/llama/" class="tag">LLaMa</a><a href="/tags/ai/" class="tag">AI</a><a href="/tags/filemaker/" class="tag">filemaker</a><a href="/tags/ollama/" class="tag">ollama</a> </div> </div> </article><article class="post-preview" data-post-url="/building-a-data-driven-organizational-chart-in-apps-script"> <div class="post-preview-header"> <div class="post-preview-image"> <img src="/_astro/cover.B9E-CGB0_Z1h9EXR.webp" alt="Building A Data-Driven Organizational Chart In Apps Script" loading="lazy" decoding="async" fetchpriority="auto" width="400" height="240"> </div> <div class="post-preview-content"> <h2 class="post-title"> <a href="/building-a-data-driven-organizational-chart-in-apps-script/">Building A Data-Driven Organizational Chart In Apps Script</a> </h2> <p class="post-subtitle">Using OrgChart JavaScript Library In A Web App</p> <div class="post-meta"> <time datetime="2024-10-05">Oct 05, 2024</time> <span class="read-time">8 min read</span> <div class="series-badge"> <span class="series-label">Series:</span> <a href="/series/google-apps-script/" class="series-link">Google Apps Script</a> </div> </div> </div> </div> <p class="post-excerpt">Organizational charts help visualize the reporting structure of a company in a tree-like graph. They are usually created with a design tool, and lots of manual data entry. Then, every time an employee...</p> <div class="post-preview-footer"> <div class="post-tags"> <a href="/tags/google_sheets/" class="tag">google_sheets</a><a href="/tags/google_apps_script/" class="tag">google_apps_script</a><a href="/tags/javascript/" class="tag">JavaScript</a><a href="/tags/open_source/" class="tag">Open_Source</a><a href="/tags/web_development/" class="tag">Web_Development</a> </div> </div> </article><article class="post-preview" data-post-url="/why-i-built-a-code-editor-inside-filemaker-pro"> <div class="post-preview-header"> <div class="post-preview-image"> <img src="/_astro/cover.DvQEevX9_oUrzC.webp" alt="Why I Built A Code Editor Inside FileMaker Pro" loading="lazy" decoding="async" fetchpriority="auto" width="400" height="240"> </div> <div class="post-preview-content"> <h2 class="post-title"> <a href="/why-i-built-a-code-editor-inside-filemaker-pro/">Why I Built A Code Editor Inside FileMaker Pro</a> </h2> <p class="post-subtitle">A Web Viewer for Building Web Viewers</p> <div class="post-meta"> <time datetime="2024-09-22">Sep 22, 2024</time> <span class="read-time">6 min read</span> <div class="series-badge"> <span class="series-label">Series:</span> <a href="/series/filemaker-pro/" class="series-link">FileMaker Pro</a> </div> </div> </div> </div> <p class="post-excerpt">Web Viewers in FileMaker Pro are like an escape hatch. When you hit the limits of the native FMP platform, you can always extend it with a web viewer to add new functionality. You can add some really ...</p> <div class="post-preview-footer"> <div class="post-tags"> <a href="/tags/filemaker/" class="tag">filemaker</a><a href="/tags/codemirror/" class="tag">codemirror</a><a href="/tags/javascript/" class="tag">JavaScript</a><a href="/tags/claris/" class="tag">claris</a><a href="/tags/low_code/" class="tag">Low_Code</a> </div> </div> </article><article class="post-preview" data-post-url="/text-analysis-without-ai-lexical-density-string-similarity-readability-other-metrics"> <div class="post-preview-header"> <div class="post-preview-image"> <img src="/_astro/cover.DwDC9u5L_ZhbqoH.webp" alt="Text Analysis WITHOUT AI: Lexical Density, String Similarity, Readability &#38; Other Metrics" loading="lazy" decoding="async" fetchpriority="auto" width="400" height="240"> </div> <div class="post-preview-content"> <h2 class="post-title"> <a href="/text-analysis-without-ai-lexical-density-string-similarity-readability-other-metrics/">Text Analysis WITHOUT AI: Lexical Density, String Similarity, Readability &amp; Other Metrics</a> </h2> <p class="post-subtitle">A primer on natural language processing with JavaScript</p> <div class="post-meta"> <time datetime="2024-09-17">Sep 17, 2024</time> <span class="read-time">9 min read</span>  </div> </div> </div> <p class="post-excerpt">Lexical density measures word frequency within text.

That sentence had a lexical density of 100%, but it&#39;s a little hard to understand. Let&#39;s unpack it.

Lexical density, in the context of text analy...</p> <div class="post-preview-footer"> <div class="post-tags"> <a href="/tags/linguistics/" class="tag">linguistics</a><a href="/tags/natural_language_processing/" class="tag">natural_language_processing</a><a href="/tags/javascript/" class="tag">JavaScript</a><a href="/tags/sentiment_analysis/" class="tag">Sentiment_analysis</a><a href="/tags/readability/" class="tag">readability</a> </div> </div> </article><article class="post-preview" data-post-url="/choropleth-map-in-filemaker-pro-web-viewer-with-leafletjs"> <div class="post-preview-header"> <div class="post-preview-image"> <img src="/_astro/cover.B_Yn9y64_Z1anxCk.webp" alt="Choropleth Map in FileMaker Pro Web Viewer With Leaflet.JS" loading="lazy" decoding="async" fetchpriority="auto" width="400" height="240"> </div> <div class="post-preview-content"> <h2 class="post-title"> <a href="/choropleth-map-in-filemaker-pro-web-viewer-with-leafletjs/">Choropleth Map in FileMaker Pro Web Viewer With Leaflet.JS</a> </h2> <p class="post-subtitle">Visualizing Aggregate Data Across Geographic Regions</p> <div class="post-meta"> <time datetime="2024-09-08">Sep 08, 2024</time> <span class="read-time">1 min read</span> <div class="series-badge"> <span class="series-label">Series:</span> <a href="/series/filemaker-pro/" class="series-link">FileMaker Pro</a> </div> </div> </div> </div> <p class="post-excerpt">Choropleth maps are similar to heat maps, but with regions defined by geometry, rather than a grid. These maps are useful for displaying aggregate values for each region, like census or voting totals,...</p> <div class="post-preview-footer"> <div class="post-tags"> <a href="/tags/filemaker/" class="tag">filemaker</a><a href="/tags/javascript/" class="tag">JavaScript</a><a href="/tags/leaflet/" class="tag">leaflet</a><a href="/tags/mapping/" class="tag">Mapping</a><a href="/tags/data_analytics/" class="tag">data_analytics</a> </div> </div> </article><article class="post-preview" data-post-url="/talk-to-your-spreadsheet-apps-script-cohere-ai"> <div class="post-preview-header"> <div class="post-preview-image"> <img src="/_astro/cover.BXvKOdre_Z1j29Ma.webp" alt="Talk To Your SpreadSheet:  Apps Script + Cohere AI" loading="lazy" decoding="async" fetchpriority="auto" width="400" height="240"> </div> <div class="post-preview-content"> <h2 class="post-title"> <a href="/talk-to-your-spreadsheet-apps-script-cohere-ai/">Talk To Your SpreadSheet:  Apps Script + Cohere AI</a> </h2> <p class="post-subtitle">ChatGPT Clone In Google Sheets</p> <div class="post-meta"> <time datetime="2024-09-06">Sep 06, 2024</time> <span class="read-time">5 min read</span> <div class="series-badge"> <span class="series-label">Series:</span> <a href="/series/google-apps-script/" class="series-link">Google Apps Script</a> </div> </div> </div> </div> <p class="post-excerpt">AI can be a huge productivity boost, but it can also become a new bottleneck if it doesn&#39;t have existing access to your data. Bouncing back and forth between tabs and pasting sheets data into ChatGPT ...</p> <div class="post-preview-footer"> <div class="post-tags"> <a href="/tags/llms/" class="tag">LLMs</a><a href="/tags/ai/" class="tag">AI</a><a href="/tags/google/" class="tag">Google</a><a href="/tags/google_apps_script/" class="tag">google_apps_script</a><a href="/tags/cohereai/" class="tag">cohereAI</a> </div> </div> </article><article class="post-preview" data-post-url="/building-an-interactive-xy-image-plot-with-google-apps-script-and-leafletjs"> <div class="post-preview-header"> <div class="post-preview-image"> <img src="/_astro/cover.BYuQKlXJ_mP3iH.webp" alt="Building an Interactive XY Image Plot with Google Apps Script and Leaflet.js" loading="lazy" decoding="async" fetchpriority="auto" width="400" height="240"> </div> <div class="post-preview-content"> <h2 class="post-title"> <a href="/building-an-interactive-xy-image-plot-with-google-apps-script-and-leafletjs/">Building an Interactive XY Image Plot with Google Apps Script and Leaflet.js</a> </h2> <p class="post-subtitle">Custom Background Image With Markers Plotted From Sheets Data</p> <div class="post-meta"> <time datetime="2024-09-03">Sep 03, 2024</time> <span class="read-time">8 min read</span> <div class="series-badge"> <span class="series-label">Series:</span> <a href="/series/google-apps-script/" class="series-link">Google Apps Script</a> </div> </div> </div> </div> <p class="post-excerpt">Google Maps has a ton of features for plotting points on a map, but what if you want to plot points on an image? These XY Image Plot maps are commonly used for floor maps, job site inspections, and ev...</p> <div class="post-preview-footer"> <div class="post-tags"> <a href="/tags/google_apps_script/" class="tag">google_apps_script</a><a href="/tags/leaflet/" class="tag">leaflet</a><a href="/tags/mapping/" class="tag">Mapping</a><a href="/tags/google_sheets/" class="tag">google_sheets</a><a href="/tags/javascript/" class="tag">JavaScript</a> </div> </div> </article><article class="post-preview" data-post-url="/generating-heatmaps-in-google-sheets-using-apps-script-and-echarts"> <div class="post-preview-header"> <div class="post-preview-image"> <img src="/_astro/cover.C4x7-1Jr_oyXW.webp" alt="Generating Heatmaps in Google Sheets using Apps Script and ECharts" loading="lazy" decoding="async" fetchpriority="auto" width="400" height="240"> </div> <div class="post-preview-content"> <h2 class="post-title"> <a href="/generating-heatmaps-in-google-sheets-using-apps-script-and-echarts/">Generating Heatmaps in Google Sheets using Apps Script and ECharts</a> </h2> <p class="post-subtitle">Interactive Heatmap in under 100 lines of code!</p> <div class="post-meta"> <time datetime="2024-08-27">Aug 27, 2024</time> <span class="read-time">9 min read</span> <div class="series-badge"> <span class="series-label">Series:</span> <a href="/series/google-apps-script/" class="series-link">Google Apps Script</a> </div> </div> </div> </div> <p class="post-excerpt">Heatmaps are a great way to visualize aggregate data so you can easily see trends and spikes in the data. They can summarize data across a range of time, display traffic and weather patterns, or any o...</p> <div class="post-preview-footer"> <div class="post-tags"> <a href="/tags/echarts/" class="tag">echarts</a><a href="/tags/heatmap/" class="tag">heatmap</a><a href="/tags/google_apps_script/" class="tag">google_apps_script</a><a href="/tags/google_sheets/" class="tag">google_sheets</a><a href="/tags/javascript/" class="tag">JavaScript</a> </div> </div> </article><article class="post-preview" data-post-url="/creating-a-google-sheets-sidebar-with-mermaidjs-charts"> <div class="post-preview-header"> <div class="post-preview-image"> <img src="/_astro/cover.Dv0Vuid4_irpkl.webp" alt="Creating a Google Sheets Sidebar with MermaidJS Charts" loading="lazy" decoding="async" fetchpriority="auto" width="400" height="240"> </div> <div class="post-preview-content"> <h2 class="post-title"> <a href="/creating-a-google-sheets-sidebar-with-mermaidjs-charts/">Creating a Google Sheets Sidebar with MermaidJS Charts</a> </h2> <p class="post-subtitle">Adding custom chart types to Google Sheets using MermaidJS and Apps Script sidebars</p> <div class="post-meta"> <time datetime="2024-08-25">Aug 25, 2024</time> <span class="read-time">7 min read</span> <div class="series-badge"> <span class="series-label">Series:</span> <a href="/series/google-apps-script/" class="series-link">Google Apps Script</a> </div> </div> </div> </div> <p class="post-excerpt">Google Sheets has a ton of different chart types built-in, but there are a few types missing like Class, Sequence and Sankey diagrams, to name a few. When it comes to these types of charts, you usuall...</p> <div class="post-preview-footer"> <div class="post-tags"> <a href="/tags/mermaidjs/" class="tag">MermaidJS</a><a href="/tags/google_sheets/" class="tag">google_sheets</a><a href="/tags/google_apps_script/" class="tag">google_apps_script</a><a href="/tags/javascript/" class="tag">JavaScript</a><a href="/tags/datavisualization/" class="tag">DataVisualization</a> </div> </div> </article><article class="post-preview" data-post-url="/building-a-mobile-responsive-grid-layout-in-filemaker-pro"> <div class="post-preview-header"> <div class="post-preview-image"> <img src="/_astro/cover.CAhezUCu_1P35TU.webp" alt="Building a Mobile Responsive Grid Layout in FileMaker Pro" loading="lazy" decoding="async" fetchpriority="auto" width="400" height="240"> </div> <div class="post-preview-content"> <h2 class="post-title"> <a href="/building-a-mobile-responsive-grid-layout-in-filemaker-pro/">Building a Mobile Responsive Grid Layout in FileMaker Pro</a> </h2> <p class="post-subtitle">Web Viewer Trick to Display Records in a Grid, with Click Events!</p> <div class="post-meta"> <time datetime="2024-08-24">Aug 24, 2024</time> <span class="read-time">8 min read</span> <div class="series-badge"> <span class="series-label">Series:</span> <a href="/series/filemaker-pro/" class="series-link">FileMaker Pro</a> </div> </div> </div> </div> <p class="post-excerpt">FileMaker Pro&#39;s layout design tools are top-notch. Between Form View, List View, Sub-Summary Parts, and Table View, you can build just about any type of UI you want... EXCEPT Grid Layouts! Yes, there ...</p> <div class="post-preview-footer"> <div class="post-tags"> <a href="/tags/filemaker/" class="tag">filemaker</a><a href="/tags/javascript/" class="tag">JavaScript</a><a href="/tags/low_code/" class="tag">Low_Code</a><a href="/tags/claris/" class="tag">claris</a> </div> </div> </article><article class="post-preview" data-post-url="/chatfmp-filemaker-pro-starter-template-for-integrating-openai-assistants"> <div class="post-preview-header"> <div class="post-preview-image"> <img src="/_astro/cover.DpuW7QKE_ZBaesm.webp" alt="ChatFMP: FileMaker Pro Starter Template For Integrating OpenAI Assistants" loading="lazy" decoding="async" fetchpriority="auto" width="400" height="240"> </div> <div class="post-preview-content"> <h2 class="post-title"> <a href="/chatfmp-filemaker-pro-starter-template-for-integrating-openai-assistants/">ChatFMP: FileMaker Pro Starter Template For Integrating OpenAI Assistants</a> </h2> <p class="post-subtitle">Just add your API Key and Assistant ID to start chatting with your own custom assistant!</p> <div class="post-meta"> <time datetime="2024-08-03">Aug 03, 2024</time> <span class="read-time">6 min read</span> <div class="series-badge"> <span class="series-label">Series:</span> <a href="/series/filemaker-pro/" class="series-link">FileMaker Pro</a> </div> </div> </div> </div> <p class="post-excerpt">OpenAI’s Assistants allow developers to add a ChatGPT-like AI chat to other apps and websites. I’ve been using the Assistant API quite a bit lately in Appsmith, and I wanted to see if I could build th...</p> <div class="post-preview-footer"> <div class="post-tags"> <a href="/tags/claris/" class="tag">claris</a><a href="/tags/filemaker/" class="tag">filemaker</a><a href="/tags/openai/" class="tag">openai</a><a href="/tags/chatgpt/" class="tag">chatgpt</a><a href="/tags/ai_assistants/" class="tag">AI_Assistants</a> </div> </div> </article><article class="post-preview" data-post-url="/extract-images-from-a-google-doc-and-save-to-drive-folder"> <div class="post-preview-header"> <div class="post-preview-image"> <img src="/_astro/cover.DTkKMBuV_ZlogeF.webp" alt="Extract Images from a Google Doc and Save to Drive Folder" loading="lazy" decoding="async" fetchpriority="auto" width="400" height="240"> </div> <div class="post-preview-content"> <h2 class="post-title"> <a href="/extract-images-from-a-google-doc-and-save-to-drive-folder/">Extract Images from a Google Doc and Save to Drive Folder</a> </h2> <p class="post-subtitle">Automate bulk image extraction from Google Docs using Apps Script</p> <div class="post-meta"> <time datetime="2023-06-10">Jun 10, 2023</time> <span class="read-time">2 min read</span> <div class="series-badge"> <span class="series-label">Series:</span> <a href="/series/google-apps-script/" class="series-link">Google Apps Script</a> </div> </div> </div> </div> <p class="post-excerpt">Recently, I needed to export all the images from a Google Doc and upload them to another service. Seems like a simple job, right? You would think... but not so much.
Google Docs blocks the standard ri...</p> <div class="post-preview-footer"> <div class="post-tags"> <a href="/tags/google_apps_script/" class="tag">google_apps_script</a><a href="/tags/google_drive/" class="tag">Google_Drive</a><a href="/tags/google_docs/" class="tag">Google_Docs</a> </div> </div> </article><article class="post-preview" data-post-url="/filemaker-api-connector"> <div class="post-preview-header"> <div class="post-preview-image"> <img src="/_astro/cover.BQbrdvIk_ZcuEWu.webp" alt="FileMaker API Connector" loading="lazy" decoding="async" fetchpriority="auto" width="400" height="240"> </div> <div class="post-preview-content"> <h2 class="post-title"> <a href="/filemaker-api-connector/">FileMaker API Connector</a> </h2> <p class="post-subtitle">a starter solution for integrating any API or Database with FileMaker</p> <div class="post-meta"> <time datetime="2023-06-09">Jun 09, 2023</time> <span class="read-time">5 min read</span> <div class="series-badge"> <span class="series-label">Series:</span> <a href="/series/filemaker-pro/" class="series-link">FileMaker Pro</a> </div> </div> </div> </div> <p class="post-excerpt">Hey, I&#39;m Joseph, I&#39;m an engineer at Appsmith, and a long-time FileMaker Pro developer and consultant. I freelanced in FileMaker Pro for years, integrating APIs like Shopify, BigCommerce, eBay and othe...</p> <div class="post-preview-footer"> <div class="post-tags"> <a href="/tags/filemaker/" class="tag">filemaker</a><a href="/tags/appsmith/" class="tag">appsmith</a><a href="/tags/curl/" class="tag">curl</a><a href="/tags/rest_api/" class="tag">REST_API</a> </div> </div> </article><article class="post-preview" data-post-url="/save-files-to-google-drive-by-post-ing-the-url-to-a-web-app"> <div class="post-preview-header"> <div class="post-preview-image"> <img src="/_astro/cover.BR7tiZIw_ZVohgy.webp" alt="Save files to Google Drive by POST-ing the URL to a web app" loading="lazy" decoding="async" fetchpriority="auto" width="400" height="240"> </div> <div class="post-preview-content"> <h2 class="post-title"> <a href="/save-files-to-google-drive-by-post-ing-the-url-to-a-web-app/">Save files to Google Drive by POST-ing the URL to a web app</a> </h2> <p class="post-subtitle">A simple Apps Script web app for saving cloud-hosted files to Google Drive via API</p> <div class="post-meta"> <time datetime="2023-06-09">Jun 09, 2023</time> <span class="read-time">2 min read</span>  </div> </div> </div> <p class="post-excerpt">I just found an old script I wrote that others might find useful, so I wanted to share. This script saves a file to Google Drive when you POST its URL to the webapp, using this format:
{
  &#39;key&#39;: &#39;API...</p> <div class="post-preview-footer"> <div class="post-tags"> <a href="/tags/google_apps_script/" class="tag">google_apps_script</a><a href="/tags/apis/" class="tag">APIs</a><a href="/tags/google_drive/" class="tag">Google_Drive</a><a href="/tags/javascript/" class="tag">JavaScript</a> </div> </div> </article><article class="post-preview" data-post-url="/slacksmith-an-oauth-20-flow-example-in-appsmith"> <div class="post-preview-header"> <div class="post-preview-image"> <img src="/_astro/cover.DX0m7qPU_Z1QXx0z.webp" alt="Slacksmith: An OAuth 2.0 Flow Example in Appsmith" loading="lazy" decoding="async" fetchpriority="auto" width="400" height="240"> </div> <div class="post-preview-content"> <h2 class="post-title"> <a href="/slacksmith-an-oauth-20-flow-example-in-appsmith/">Slacksmith: An OAuth 2.0 Flow Example in Appsmith</a> </h2> <p class="post-subtitle">Building a Slack integration using OAuth 2.0 authentication flow in Appsmith</p> <div class="post-meta"> <time datetime="2021-10-30">Oct 30, 2021</time> <span class="read-time">8 min read</span> <div class="series-badge"> <span class="series-label">Series:</span> <a href="/series/appsmith/" class="series-link">Appsmith</a> </div> </div> </div> </div> <p class="post-excerpt">Joseph from GreenFlux, LLC here, with my 3rd and final entry for Appsmith&#39;s 2021 Hackathon.
Let&#39;s build a Slack integration in Appsmith!
Appsmith is great for connecting various APIs and bridging diff...</p> <div class="post-preview-footer"> <div class="post-tags"> <a href="/tags/apis/" class="tag">APIs</a><a href="/tags/slack/" class="tag">slack</a><a href="/tags/devops/" class="tag">Devops</a><a href="/tags/tutorial/" class="tag">Tutorial</a><a href="/tags/hackathon/" class="tag">hackathon</a> </div> </div> </article><article class="post-preview" data-post-url="/creating-a-delivery-app-in-appsmith"> <div class="post-preview-header"> <div class="post-preview-image"> <img src="/_astro/cover.D1_rnOd3_Z1wGirA.webp" alt="Creating a Delivery App in Appsmith!" loading="lazy" decoding="async" fetchpriority="auto" width="400" height="240"> </div> <div class="post-preview-content"> <h2 class="post-title"> <a href="/creating-a-delivery-app-in-appsmith/">Creating a Delivery App in Appsmith!</a> </h2> <p class="post-subtitle">Integrating Google Maps Embed API for delivery route planning and driver notifications</p> <div class="post-meta"> <time datetime="2021-10-23">Oct 23, 2021</time> <span class="read-time">5 min read</span> <div class="series-badge"> <span class="series-label">Series:</span> <a href="/series/appsmith/" class="series-link">Appsmith</a> </div> </div> </div> </div> <p class="post-excerpt">Hello again, Joseph from GreenFlux, LLC here with another Appsmith tutorial; I&#39;m submitting this one for Appsmith&#39;s Hacktoberfest . Today I will be integrating with the Google Maps Embed API to plot d...</p> <div class="post-preview-footer"> <div class="post-tags"> <a href="/tags/hacktoberfest/" class="tag">hacktoberfest</a><a href="/tags/tutorial/" class="tag">Tutorial</a><a href="/tags/devtools/" class="tag">devtools</a><a href="/tags/google_maps/" class="tag">google_maps</a><a href="/tags/apis/" class="tag">APIs</a> </div> </div> </article><article class="post-preview" data-post-url="/appsmith-tutorial-validating-user-input"> <div class="post-preview-header"> <div class="post-preview-image"> <img src="/_astro/cover.Cz7FXctF_Z17U4V5.webp" alt="Appsmith Tutorial: Validating User Input" loading="lazy" decoding="async" fetchpriority="auto" width="400" height="240"> </div> <div class="post-preview-content"> <h2 class="post-title"> <a href="/appsmith-tutorial-validating-user-input/">Appsmith Tutorial: Validating User Input</a> </h2> <p class="post-subtitle">A collection of JavaScript and REGEX examples for common validation patterns</p> <div class="post-meta"> <time datetime="2021-10-10">Oct 10, 2021</time> <span class="read-time">8 min read</span> <div class="series-badge"> <span class="series-label">Series:</span> <a href="/series/appsmith/" class="series-link">Appsmith</a> </div> </div> </div> </div> <p class="post-excerpt">Hey, Joseph from GreenFlux, LLC here. I&#39;m a full-time freelancer and a HUGE fan of Appsmith ! I&#39;ve written a few other tutorials for Appsmith before but this one is gonna be a little different:
Instea...</p> <div class="post-preview-footer"> <div class="post-tags"> <a href="/tags/javascript/" class="tag">JavaScript</a><a href="/tags/regex/" class="tag">Regex</a><a href="/tags/hacktoberfest/" class="tag">hacktoberfest</a><a href="/tags/tutorial/" class="tag">Tutorial</a><a href="/tags/developer_tools/" class="tag">Developer_Tools</a> </div> </div> </article><article class="post-preview" data-post-url="/the-little-big-framework-appsmith-reviewed"> <div class="post-preview-header"> <div class="post-preview-image"> <img src="/_astro/cover.DR0Ad-jd_14hgAQ.webp" alt="The Little Big Framework: Appsmith Reviewed" loading="lazy" decoding="async" fetchpriority="auto" width="400" height="240"> </div> <div class="post-preview-content"> <h2 class="post-title"> <a href="/the-little-big-framework-appsmith-reviewed/">The Little Big Framework: Appsmith Reviewed</a> </h2> <p class="post-subtitle">A comprehensive review of the Appsmith low-code platform from a developer&#39;s perspective</p> <div class="post-meta"> <time datetime="2021-09-22">Sep 22, 2021</time> <span class="read-time">9 min read</span> <div class="series-badge"> <span class="series-label">Series:</span> <a href="/series/appsmith/" class="series-link">Appsmith</a> </div> </div> </div> </div> <p class="post-excerpt">Intro
Hi, I&#39;m Joseph Petty from GreenFlux, LLC - I&#39;m a full-time freelancer/developer- focused on mobile/web apps, databases, and no/low-code platforms and integrations. I&#39;ve been using Appsmith for a...</p> <div class="post-preview-footer"> <div class="post-tags"> <a href="/tags/developer_tools/" class="tag">Developer_Tools</a><a href="/tags/app_development/" class="tag">app_development</a><a href="/tags/devops/" class="tag">Devops</a><a href="/tags/databases/" class="tag">Databases</a><a href="/tags/apis/" class="tag">APIs</a> </div> </div> </article><article class="post-preview" data-post-url="/saving-files-to-google-drive-by-post-ing-the-url-to-a-web-app"> <div class="post-preview-header"> <div class="post-preview-image"> <img src="/_astro/cover._ycTJb_2_Zog0TA.webp" alt="Saving Files to Google Drive by POST-ing the Url to a Web App" loading="lazy" decoding="async" fetchpriority="auto" width="400" height="240"> </div> <div class="post-preview-content"> <h2 class="post-title"> <a href="/saving-files-to-google-drive-by-post-ing-the-url-to-a-web-app/">Saving Files to Google Drive by POST-ing the Url to a Web App</a> </h2> <p class="post-subtitle">General purpose Apps Script web app for saving cloud-hosted files to Google Drive</p> <div class="post-meta"> <time datetime="2021-07-25">Jul 25, 2021</time> <span class="read-time">4 min read</span> <div class="series-badge"> <span class="series-label">Series:</span> <a href="/series/google-apps-script/" class="series-link">Google Apps Script</a> </div> </div> </div> </div> <p class="post-excerpt">In this tutorial, I&#39;ll be writing a general purpose Apps Script Web App to save a cloud-hosted file to Google Drive as a new file, when the original file url is POST-ed to the script&#39;s web app endpoin...</p> <div class="post-preview-footer"> <div class="post-tags"> <a href="/tags/google/" class="tag">Google</a><a href="/tags/google_cloud/" class="tag">google_cloud</a><a href="/tags/javascript/" class="tag">JavaScript</a><a href="/tags/tutorial/" class="tag">Tutorial</a><a href="/tags/apis/" class="tag">APIs</a> </div> </div> </article><article class="post-preview" data-post-url="/building-a-reddit-browser-and-xml-parser-in-appsmith"> <div class="post-preview-header"> <div class="post-preview-image"> <img src="/_astro/cover.BlKmuhYk_ZC4o1t.webp" alt="Building a Reddit Browser (and XML Parser) in Appsmith" loading="lazy" decoding="async" fetchpriority="auto" width="400" height="240"> </div> <div class="post-preview-content"> <h2 class="post-title"> <a href="/building-a-reddit-browser-and-xml-parser-in-appsmith/">Building a Reddit Browser (and XML Parser) in Appsmith</a> </h2> <p class="post-subtitle">Using Reddit RSS feeds as a simple API alternative for browsing subreddit content</p> <div class="post-meta"> <time datetime="2021-07-21">Jul 21, 2021</time> <span class="read-time">2 min read</span> <div class="series-badge"> <span class="series-label">Series:</span> <a href="/series/appsmith/" class="series-link">Appsmith</a> </div> </div> </div> </div> <p class="post-excerpt">Did you know you can turn almost any sub-Reddit into an RSS feed by adding .RSS to the url?!

RSS? Ok, by why is this useful? 🤨
Because it&#39;s basically an API to GET the recent posts, in XML format, w...</p> <div class="post-preview-footer"> <div class="post-tags"> <a href="/tags/xml/" class="tag">xml</a><a href="/tags/rss/" class="tag">rss</a><a href="/tags/devops/" class="tag">Devops</a><a href="/tags/tutorial/" class="tag">Tutorial</a><a href="/tags/7daystreak/" class="tag">7daystreak</a> </div> </div> </article><article class="post-preview" data-post-url="/googles-appsheet-no-code-apps-from-spreadsheets"> <div class="post-preview-header"> <div class="post-preview-image"> <img src="/_astro/cover.Co7GIlOL_876Iy.webp" alt="Google's AppSheet: No-Code Apps from Spreadsheets" loading="lazy" decoding="async" fetchpriority="auto" width="400" height="240"> </div> <div class="post-preview-content"> <h2 class="post-title"> <a href="/googles-appsheet-no-code-apps-from-spreadsheets/">Google&#39;s AppSheet: No-Code Apps from Spreadsheets</a> </h2> <p class="post-subtitle">A quick overview from an AppSheet Partner Developer</p> <div class="post-meta"> <time datetime="2021-07-19">Jul 19, 2021</time> <span class="read-time">4 min read</span>  </div> </div> </div> <p class="post-excerpt">AppSheet is a no-code, mobile/web-app builder that connects to cloud spreadsheets and databases.
It&#39;s a great tool for throwing together a quick mobile app with no coding experience, but also powerful...</p> <div class="post-preview-footer"> <div class="post-tags"> <a href="/tags/google_sheets/" class="tag">google_sheets</a><a href="/tags/google/" class="tag">Google</a><a href="/tags/developer_tools/" class="tag">Developer_Tools</a><a href="/tags/review/" class="tag">review</a><a href="/tags/google_cloud/" class="tag">google_cloud</a> </div> </div> </article><article class="post-preview" data-post-url="/replacing-google-forms-with-appsmith"> <div class="post-preview-header"> <div class="post-preview-image"> <img src="/_astro/cover.Dg9mRcWj_ZqbOFG.webp" alt="Replacing Google Forms with Appsmith" loading="lazy" decoding="async" fetchpriority="auto" width="400" height="240"> </div> <div class="post-preview-content"> <h2 class="post-title"> <a href="/replacing-google-forms-with-appsmith/">Replacing Google Forms with Appsmith</a> </h2> <p class="post-subtitle">-without breaking existing integrations!</p> <div class="post-meta"> <time datetime="2021-07-18">Jul 18, 2021</time> <span class="read-time">3 min read</span> <div class="series-badge"> <span class="series-label">Series:</span> <a href="/series/appsmith/" class="series-link">Appsmith</a> </div> </div> </div> </div> <p class="post-excerpt">Google Forms is widely used in various integrations and workflows that all start with capturing data and sending it to a Google Sheet.
Whether it&#39;s a contact form embedded on your website, a registrat...</p> <div class="post-preview-footer"> <div class="post-tags"> <a href="/tags/google/" class="tag">Google</a><a href="/tags/google_sheets/" class="tag">google_sheets</a><a href="/tags/devtools/" class="tag">devtools</a><a href="/tags/forms/" class="tag">forms</a><a href="/tags/tutorial/" class="tag">Tutorial</a> </div> </div> </article><article class="post-preview" data-post-url="/get-google-maps-images-from-address-text"> <div class="post-preview-header"> <div class="post-preview-image"> <img src="/_astro/cover.JUHXNxVL_Z2qHVew.webp" alt="GET Google Maps Images from Address Text" loading="lazy" decoding="async" fetchpriority="auto" width="400" height="240"> </div> <div class="post-preview-content"> <h2 class="post-title"> <a href="/get-google-maps-images-from-address-text/">GET Google Maps Images from Address Text</a> </h2> <p class="post-subtitle">Static Maps API &amp; Appsmith Tutorial</p> <div class="post-meta"> <time datetime="2021-07-17">Jul 17, 2021</time> <span class="read-time">2 min read</span> <div class="series-badge"> <span class="series-label">Series:</span> <a href="/series/appsmith/" class="series-link">Appsmith</a> </div> </div> </div> </div> <p class="post-excerpt">Today I will be integrating with Google&#39;s Static Maps API and using Appsmith to retrieve a map image, given a text-string street address.
There&#39;s a bit of setup involved if you&#39;ve never used the Googl...</p> <div class="post-preview-footer"> <div class="post-tags"> <a href="/tags/google/" class="tag">Google</a><a href="/tags/google_maps/" class="tag">google_maps</a><a href="/tags/apis/" class="tag">APIs</a><a href="/tags/rest_api/" class="tag">REST_API</a><a href="/tags/tutorial/" class="tag">Tutorial</a> </div> </div> </article><article class="post-preview" data-post-url="/validating-emails-with-appsmith-and-the-verifalia-api"> <div class="post-preview-header"> <div class="post-preview-image"> <img src="/_astro/cover.BnsfbTWY_127ETx.webp" alt="Validating Emails with Appsmith &#38; the Verifalia API" loading="lazy" decoding="async" fetchpriority="auto" width="400" height="240"> </div> <div class="post-preview-content"> <h2 class="post-title"> <a href="/validating-emails-with-appsmith-and-the-verifalia-api/">Validating Emails with Appsmith &amp; the Verifalia API</a> </h2> <p class="post-subtitle">Email validation service integration for verifying email addresses in Appsmith apps</p> <div class="post-meta"> <time datetime="2021-07-16">Jul 16, 2021</time> <span class="read-time">3 min read</span> <div class="series-badge"> <span class="series-label">Series:</span> <a href="/series/appsmith/" class="series-link">Appsmith</a> </div> </div> </div> </div> <p class="post-excerpt">Verifalia is an email validation service with an API and a free plan that can be used to verify up to 25 emails per day (or more with the paid plans).
Send in one or more email addresses, and Verifali...</p> <div class="post-preview-footer"> <div class="post-tags"> <a href="/tags/rest_api/" class="tag">REST_API</a><a href="/tags/email_marketing/" class="tag">email_marketing</a><a href="/tags/integration/" class="tag">integration</a><a href="/tags/tutorial/" class="tag">Tutorial</a><a href="/tags/devops/" class="tag">Devops</a> </div> </div> </article><article class="post-preview" data-post-url="/upwork-job-search-tips-and-tricks"> <div class="post-preview-header"> <div class="post-preview-image"> <img src="/_astro/cover.Dj3wxg_1_GvYE5.webp" alt="UpWork: Job Search Tips &#38; Tricks" loading="lazy" decoding="async" fetchpriority="auto" width="400" height="240"> </div> <div class="post-preview-content"> <h2 class="post-title"> <a href="/upwork-job-search-tips-and-tricks/">UpWork: Job Search Tips &amp; Tricks</a> </h2> <p class="post-subtitle">6 Tips for Better Results</p> <div class="post-meta"> <time datetime="2021-07-15">Jul 15, 2021</time> <span class="read-time">4 min read</span>  </div> </div> </div> <p class="post-excerpt">UpWork is a great way for developers to start freelancing, and build an online profile with customer reviews to help gain further clients. But it can be a little tough to get started and close the dea...</p> <div class="post-preview-footer"> <div class="post-tags"> <a href="/tags/freelancing/" class="tag">Freelancing</a><a href="/tags/developer/" class="tag">Developer</a><a href="/tags/workathome/" class="tag">workathome</a> </div> </div> </article><article class="post-preview" data-post-url="/saving-api-response-data-to-google-sheets-with-appsmith"> <div class="post-preview-header"> <div class="post-preview-image"> <img src="/_astro/cover.DNCxBcBJ_8ybq4.webp" alt="Saving API Response Data to Google Sheets with Appsmith" loading="lazy" decoding="async" fetchpriority="auto" width="400" height="240"> </div> <div class="post-preview-content"> <h2 class="post-title"> <a href="/saving-api-response-data-to-google-sheets-with-appsmith/">Saving API Response Data to Google Sheets with Appsmith</a> </h2> <p class="post-subtitle">Using Appsmith&#39;s Google Sheets integration to bulk insert API response data</p> <div class="post-meta"> <time datetime="2021-07-14">Jul 14, 2021</time> <span class="read-time">2 min read</span> <div class="series-badge"> <span class="series-label">Series:</span> <a href="/series/appsmith/" class="series-link">Appsmith</a> </div> </div> </div> </div> <p class="post-excerpt">Appsmith recently released a new Google Sheets integration with a huge list of options, including a method to Bulk Insert Rows to an existing sheet.  

☝️ So let&#39;s say you want to take the response da...</p> <div class="post-preview-footer"> <div class="post-tags"> <a href="/tags/apis/" class="tag">APIs</a><a href="/tags/rest_api/" class="tag">REST_API</a><a href="/tags/tutorial/" class="tag">Tutorial</a><a href="/tags/google_sheets/" class="tag">google_sheets</a><a href="/tags/google/" class="tag">Google</a> </div> </div> </article><article class="post-preview" data-post-url="/adding-gmail-contacts-to-appsmith-using-apps-script"> <div class="post-preview-header"> <div class="post-preview-image"> <img src="/_astro/cover.ykKGVflS_Z1FVW0b.webp" alt="Adding Gmail Contacts to Appsmith using Apps Script" loading="lazy" decoding="async" fetchpriority="auto" width="400" height="240"> </div> <div class="post-preview-content"> <h2 class="post-title"> <a href="/adding-gmail-contacts-to-appsmith-using-apps-script/">Adding Gmail Contacts to Appsmith using Apps Script</a> </h2> <p class="post-subtitle">Publishing script as a web app to serve as API endpoint</p> <div class="post-meta"> <time datetime="2021-07-13">Jul 13, 2021</time> <span class="read-time">3 min read</span> <div class="series-badge"> <span class="series-label">Series:</span> <a href="/series/google-apps-script/" class="series-link">Google Apps Script</a> </div> </div> </div> </div> <p class="post-excerpt">I&#39;ve been having a lot of fun building with Appsmith lately and wanted to do something with Google Contacts.
It&#39;s easy to connect to a new API from Appsmith, but it&#39;s not so easy to enable the Google ...</p> <div class="post-preview-footer"> <div class="post-tags"> <a href="/tags/javascript/" class="tag">JavaScript</a><a href="/tags/google/" class="tag">Google</a><a href="/tags/apis/" class="tag">APIs</a><a href="/tags/rest_api/" class="tag">REST_API</a><a href="/tags/tutorial/" class="tag">Tutorial</a> </div> </div> </article><article class="post-preview" data-post-url="/creating-a-scheduled-backup-service-for-google-sheets-using-apps-script"> <div class="post-preview-header"> <div class="post-preview-image"> <img src="/_astro/cover.Ds10Zz1H_22xLJ7.webp" alt="Creating a Scheduled Backup Service for Google Sheets using Apps Script." loading="lazy" decoding="async" fetchpriority="auto" width="400" height="240"> </div> <div class="post-preview-content"> <h2 class="post-title"> <a href="/creating-a-scheduled-backup-service-for-google-sheets-using-apps-script/">Creating a Scheduled Backup Service for Google Sheets using Apps Script.</a> </h2> <p class="post-subtitle">Beginner Apps Script tutorial</p> <div class="post-meta"> <time datetime="2021-07-09">Jul 09, 2021</time> <span class="read-time">4 min read</span> <div class="series-badge"> <span class="series-label">Series:</span> <a href="/series/google-apps-script/" class="series-link">Google Apps Script</a> </div> </div> </div> </div> <p class="post-excerpt">Apps Script is a powerful tool for automating routine tasks with Google Sheets, Docs, Gmail, and other Google services. On a recent job, I needed to create a daily backup of a Google Sheet for a clien...</p> <div class="post-preview-footer"> <div class="post-tags"> <a href="/tags/google_sheets/" class="tag">google_sheets</a><a href="/tags/javascript/" class="tag">JavaScript</a><a href="/tags/tutorial/" class="tag">Tutorial</a><a href="/tags/google/" class="tag">Google</a> </div> </div> </article> </div>  </div>  </div> </main> <footer> <div class="container"> <p>&copy; 2026 <a href="https://www.greenflux.us" target="_blank">GreenFlux, LLC</a>.</p> <div class="container d-flex justify-content-center"> <a href="https://x.com/greenflux_dev" target="_blank" class="social-icon mx-2" aria-label="Twitter/X"> <svg width="32" height="32" fill="currentColor" viewBox="0 0 16 16"> <path d="M12.6.75h2.454l-5.36 6.142L16 15.25h-4.937l-3.867-5.07-4.425 5.07H.316l5.733-6.57L0 .75h5.063l3.495 4.633L12.6.75Zm-.86 13.028h1.36L4.323 2.145H2.865l8.875 11.633Z"></path> </svg> </a> <a href="https://www.linkedin.com/in/greenflux/" target="_blank" class="social-icon mx-2" aria-label="LinkedIn"> <svg width="32" height="32" fill="currentColor" viewBox="0 0 16 16"> <path d="M0 1.146C0 .513.526 0 1.175 0h13.65C15.474 0 16 .513 16 1.146v13.708c0 .633-.526 1.146-1.175 1.146H1.175C.526 16 0 15.487 0 14.854V1.146zm4.943 12.248V6.169H2.542v7.225h2.401zm-1.2-8.212c.837 0 1.358-.554 1.358-1.248-.015-.709-.52-1.248-1.342-1.248-.822 0-1.359.54-1.359 1.248 0 .694.521 1.248 1.327 1.248h.016zm4.908 8.212V9.359c0-.216.016-.432.08-.586.173-.431.568-.878 1.232-.878.869 0 1.216.662 1.216 1.634v3.865h2.401V9.25c0-2.22-1.184-3.252-2.764-3.252-1.274 0-1.845.7-2.165 1.193v.025h-.016a5.54 5.54 0 0 1 .016-.025V6.169h-2.4c.03.678 0 7.225 0 7.225h2.4z"></path> </svg> </a> <a href="https://www.reddit.com/user/HomeBrewDude/" target="_blank" class="social-icon mx-2" aria-label="Reddit"> <svg width="32" height="32" fill="currentColor" viewBox="0 0 16 16"> <path d="M6.167 8a.831.831 0 0 0-.83.83c0 .459.372.84.83.831a.831.831 0 0 0 0-1.661zm1.843 3.647c.315 0 1.403-.038 1.976-.611a.232.232 0 0 0 0-.306.213.213 0 0 0-.306 0c-.353.363-1.126.487-1.67.487-.545 0-1.308-.124-1.671-.487a.213.213 0 0 0-.306 0 .213.213 0 0 0 0 .306c.564.563 1.652.611 1.977.611zm.992-2.807c0 .458.373.83.831.83.458 0 .83-.381.83-.83a.831.831 0 0 0-1.66 0z"></path> <path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0zm-3.828-1.165c-.315 0-.602.124-.812.325-.801-.573-1.9-.945-3.121-.993l.534-2.501 1.738.372a.83.83 0 1 0 .83-.869.83.83 0 0 0-.744.468l-1.938-.41a.203.203 0 0 0-.145.04.22.22 0 0 0-.098.127l-.592 2.788c-1.24.038-2.358.41-3.17.992-.21-.2-.496-.324-.81-.324a1.163 1.163 0 0 0-.478 2.224c-.02.115-.029.23-.029.353 0 1.795 2.091 3.256 4.669 3.256 2.577 0 4.668-1.451 4.668-3.256 0-.114-.01-.238-.029-.353.401-.181.688-.592.688-1.069 0-.65-.525-1.165-1.165-1.165z"></path> </svg> </a> <a href="https://www.youtube.com/@greenflux_dev" target="_blank" class="social-icon mx-2" aria-label="YouTube"> <svg width="32" height="32" fill="currentColor" viewBox="0 0 16 16"> <path d="M8.051 1.999h.089c.822.003 4.987.033 6.11.335a2.01 2.01 0 0 1 1.415 1.42c.101.38.172.883.22 1.402l.01.104.022.26.008.104c.065.914.073 1.77.074 1.957v.075c-.001.194-.01 1.108-.082 2.06l-.008.105-.009.104c-.05.572-.124 1.14-.235 1.558a2.007 2.007 0 0 1-1.415 1.42c-1.16.312-5.569.334-6.18.335h-.142c-.309 0-1.587-.006-2.927-.052l-.17-.006-.087-.004-.171-.007-.171-.007c-1.11-.049-2.167-.128-2.654-.26a2.007 2.007 0 0 1-1.415-1.419c-.111-.417-.185-.986-.235-1.558L.09 9.82l-.008-.104A31.4 31.4 0 0 1 0 7.68v-.123c.002-.215.01-.958.064-1.778l.007-.103.003-.052.008-.104.022-.26.01-.104c.048-.519.119-1.023.22-1.402a2.007 2.007 0 0 1 1.415-1.42c.487-.13 1.544-.21 2.654-.26l.17-.007.172-.006.086-.003.171-.007A99.788 99.788 0 0 1 7.858 2h.193zM6.4 5.209v4.818l4.157-2.408L6.4 5.209z"></path> </svg> </a> </div> <div class="footer-links"> <a href="/feed.xml">RSS Feed</a> </div> </div> </footer> <script type="module">console.log("LET'S CONNECT! https://www.linkedin.com/in/greenflux/");const n=document.getElementById("hamburger-menu"),e=document.getElementById("mobile-menu"),o=document.getElementById("mobile-menu-overlay"),d=e?e.querySelectorAll(".nav-links a"):[];function r(){n&&e&&o&&(n.classList.toggle("active"),e.classList.toggle("active"),o.classList.toggle("active"),document.body.style.overflow=e.classList.contains("active")?"hidden":"auto")}function l(){n&&e&&o&&(n.classList.remove("active"),e.classList.remove("active"),o.classList.remove("active"),document.body.style.overflow="auto")}n&&n.addEventListener("click",r);o&&o.addEventListener("click",l);d.forEach(t=>{t.addEventListener("click",l)});document.addEventListener("keydown",function(t){t.key==="Escape"&&e&&e.classList.contains("active")&&l()});const i=document.getElementById("theme-toggle"),s=document.getElementById("mobile-theme-toggle"),u=document.querySelectorAll(".theme-toggle-icon"),g='<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>',y='<circle cx="12" cy="12" r="5"></circle><line x1="12" y1="1" x2="12" y2="3"></line><line x1="12" y1="21" x2="12" y2="23"></line><line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line><line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line><line x1="1" y1="12" x2="3" y2="12"></line><line x1="21" y1="12" x2="23" y2="12"></line><line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line><line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>',h=localStorage.getItem("theme")||"dark";a(h);function m(){const c=document.documentElement.getAttribute("data-theme")==="dark"?"light":"dark";document.documentElement.setAttribute("data-theme",c),localStorage.setItem("theme",c),a(c)}function a(t){u.forEach(c=>{c.innerHTML=t==="dark"?y:g})}i&&i.addEventListener("click",m);s&&s.addEventListener("click",m);</script> <!-- Cloudflare Pages Analytics --><script defer src='https://static.cloudflareinsights.com/beacon.min.js' data-cf-beacon='{"token": "a9a6474b3e384f0297adf409e671ff75"}'></script><!-- Cloudflare Pages Analytics --></body> </html> 