{"count":12,"items":[{"categories":["ai"],"date":"2026-07-11","description":"Simple and effective tool call example","lastmod":"2026-09-25","reading_time":7,"section":"blog","slug":"calculator-tool-call","summary":"Simple Math is actually Hard? A very simple problem with large language models, which frequently gets highlighted, is their poor ability to accurately do simple grade school math. Something that would be easy for human beings, even just in their head, can be surprisingly difficult for these models to do reliably.\nThere are many benchmarks for model performance on simple math problems, and their results are often disappointing. This isn\u0026rsquo;t that surprising, given that their training is based on next token prediction, which isn\u0026rsquo;t as well suited to number crunching as a calculator. Computers though, should be very good at number crunching. If we could just hook up LLMs to a calculator, we could fix this problem.\n","tags":["python"],"title":"LLM Tool Calling","url":"/blog/artifacts/guides/calculator-tool-call/","word_count":1369},{"categories":["ai","security"],"date":"2025-09-18","description":"A curated index of tech conference video archives organized by track, with a Canada section for Toronto-accessible events.","lastmod":"2026-03-29","reading_time":4,"section":"blog","slug":"tech-conference-resources","summary":"A curated index of conference video archives by track. Channel links go to the full playlists page; year links go directly to a specific event.\nIn 2026 the conferences worth your attention are the ones that answer three questions: where is the hardware going, what are attackers actually doing right now, and where are the hyperscalers taking the default infrastructure stack. The most useful sessions increasingly cut across all three. Most major US conferences offer virtual or on-demand passes at 40–50% of the in-person price; keynotes from AWS, Google, and Microsoft are typically free.\n","tags":["conference"],"title":"Tech Conference Resources","url":"/blog/artifacts/notes/tech-conference-resources/","word_count":654},{"categories":["graphics"],"date":"2025-06-01","description":"Build interactive WebGL effects in Hugo pages with GLSL Canvas.","lastmod":"2025-06-01","reading_time":4,"section":"blog","slug":"shaders-glsl-canvas","summary":" GLSL Library GLSL Canvas is a library that allows you to run GLSL shaders in a web environment. It makes it easy to create interactive graphics and visualizations using shader language inside a canvas element with WebGL.\nhttps://github.com/patriciogonzalezvivo/glslCanvas\n1\u0026lt;script src=\u0026#34;https://cdn.jsdelivr.net/npm/glslCanvas@0.2.6/dist/GlslCanvas.min.js\u0026#34;\u0026gt;\u0026lt;/script\u0026gt; ShaderToy -\u0026gt; GLSL Canvas The original shader we\u0026rsquo;ll be using was written for ShaderToy, which uses a specific set of uniforms and functions. In GLSL Canvas, we need to adapt the code to use the u_time and u_resolution uniforms provided by the library. The main function will also be adjusted to fit the GLSL Canvas structure.\n","tags":[],"title":"Shaders in GLSL Canvas","url":"/blog/artifacts/guides/shaders-glsl-canvas/","word_count":670},{"categories":["security"],"date":"2025-05-25","description":"The first step to signing your images","lastmod":"2025-05-25","reading_time":4,"section":"blog","slug":"intro-image-watermarking","summary":"Intro to Image Watermarking Watermarking is a technique used to embed information into an image, which can be used for various purposes such as copyright protection, authentication, or non-repudiation. In this guide, we will explore the basics of image watermarking and how you can implement it in your projects.\nWhy Use Watermarking? Watermarking serves several purposes: Copyright protection:\nWatermarks can help protect your images from unauthorized use by clearly indicating ownership.\n","tags":["watermarking","steganography"],"title":"Intro to Image Watermarking","url":"/blog/artifacts/guides/intro-image-watermarking/","word_count":802},{"categories":["ai"],"date":"2025-05-16","description":"Practical notes on the AI tools I use most for writing and coding.","lastmod":"2025-05-16","reading_time":2,"section":"blog","slug":"ai-tools-using-now","summary":"ChatGPT Context I\u0026rsquo;ve been using ChatGPT since it came out in late 2022\n","tags":["chatgpt","copilot"],"title":"AI Tools I'm Using Right Now","url":"/blog/artifacts/notes/ai-tools-using-now/","word_count":256},{"categories":["cloud","web"],"date":"2025-04-22","description":"Setup notes for this Hugo blog, including tooling, deployment, and workflow.","lastmod":"2026-02-10","reading_time":4,"section":"blog","slug":"how-this-blog-works","summary":"The structure of this site is simple.\nHugo Static Generator I use a static site generator called Hugo: Hugo Quick Start\n1sudo apt install hugo 2 3hugo new site michaelmuratov.com 4cd michaelmuratov.com 5 6hugo server 7 8 | EN 9-------------------+----- 10 Pages | 1 11 Paginator pages | 0 12 Non-page files | 0 13 Static files | 1 14 Processed images | 0 15 Aliases | 0 16 Cleaned | 0 17 18Built in 10 ms The site consists of three quality of life features that would be non negotiable for this kind of project.\n","tags":["hugo"],"title":"How this Blog Works","url":"/blog/artifacts/builds/how-this-blog-works/","word_count":775},{"categories":["thm"],"date":"2024-10-20","description":"Network Services 2 Room","lastmod":"2024-10-20","reading_time":7,"section":"blog","slug":"thm-sql-room","summary":"This is a TryHackMe Room Writeup\nReference 💻 TryHackMe Network Services Room\n","tags":["thm","enumeration","hash cracking","mysql"],"title":"TryHackMe - SQL","url":"/blog/artifacts/guides/thm-sql-room/","word_count":1408},{"categories":["thm"],"date":"2024-10-17","description":"Network Services 2 Room","lastmod":"2024-10-17","reading_time":4,"section":"blog","slug":"thm-smtp-room","summary":"This is a TryHackMe Room Writeup\nReference 💻 TryHackMe Network Services Room\n","tags":["thm","brute force","mail","smtp"],"title":"TryHackMe - SMTP","url":"/blog/artifacts/guides/thm-smtp-room/","word_count":828},{"categories":["thm"],"date":"2024-10-12","description":"Network Services 2 Room","lastmod":"2024-10-12","reading_time":4,"section":"blog","slug":"thm-nfs-room","summary":"This is a TryHackMe Room Writeup\nReference 💻 THM Network Services Room\n","tags":["thm","file server","nmap","privilege escalation","ssh authentication"],"title":"TryHackMe - NFS","url":"/blog/artifacts/guides/thm-nfs-room/","word_count":689},{"categories":["data structures"],"date":"2021-06-27","description":"And you don’t need to memorize how binary search works","lastmod":"2021-06-27","reading_time":4,"section":"blog","slug":"binary-search-python","summary":"I always get anxious when I see a problem that involves a sorted list because I know that it’ll inevitably involve using binary search.\nThis fear is completely irrational, and I always kick myself for feeling this way because binary search is beautiful. Given a sorted list you can find the index of any value in log(N) time because you get to cut your search space in half with every lookup.\n","tags":["python","trees","recursion"],"title":"Binary Search in Python","url":"/blog/artifacts/guides/binary-search-python/","word_count":683},{"categories":["algorithms"],"date":"2020-05-19","description":"Analyzing a difficult Leetcode problem","lastmod":"2020-05-19","reading_time":12,"section":"blog","slug":"solving-recursive-complexity","summary":"A few days ago I bumped into a question on LeetCode where I saw a bunch of people scratching their heads. It was question number 10 titled Regular Expression Matching with the difficulty label Hard. The solution to the exercise itself was not intuitive, requiring effective use of previously solved subproblems, but that wasn’t what everyone in the comments were interested in. After all the solution was available for everyone to see.\n","tags":["python","recursion","complexity"],"title":"Solving for Recursive Complexity","url":"/blog/artifacts/guides/solving-recursive-complexity/","word_count":2465},{"categories":["ai"],"date":"2019-08-11","description":"Undergraduate introduction to machine learning on human generated data","lastmod":"2019-08-11","reading_time":14,"section":"blog","slug":"toy-car-ml","summary":"Introduction As a team of three undergraduate students, we were tasked with building a concept self driving car in our winter semester. Not having much experience in data science or machine learning meant that the production process was a mess, although looking back we probably could have made the same amount of progress in a fraction of the time.\nThis article is for those who are interested in what it takes to build a functioning self driving car in record time, on a budget, without the headaches that we had to go through! I don’t go too much in depth on all the details but there are a few snippets of code to spice things up. Also if you are interested in the code you can help yourself to our Github page, https://github.com/RoboticsCourse, but be warned that it’s not documented and was not created for general use.\n","tags":["python","android","reinforcement learning","tensorflow"],"title":"Toy Car Reinforcement Learning","url":"/blog/artifacts/builds/toy-car-ml/","word_count":2828}],"site":{"base_url":"https://michaelmuratov.ca/","generated_at":"2026-10-17T08:15:09.339105946Z","title":"Michael Muratov"}}