[{"title":"Your Data Fortress (A Debian Server)","url":"https://ryanfleck.ca/2026/your-data-fortress/","content":"Ask yourself this - where is your data? Who owns it? Who uses it? If you\u0026amp;rsquo;ve lived a typical digital life for the past few decades, your personal information is scattered everywhere. The majority is concentrated in the hands of a small set of megacorporations - Google, Amazon, Meta, Apple, Palantir, and Microsoft - all riddled with backdoors and spyware to ensure compliance and pro-social usage.\nThought crime charges are now an unfortunate reality, and can even be applied retroactively even …","created":"Apr 10 2026","last-modified":"Jul 04 2026"},{"title":"Et Tu, OpenClaw?","url":"https://ryanfleck.ca/2026/openclaw/","content":"The ClawdBot phenomenon is sweeping the internet. But why? I\u0026amp;rsquo;ve decided to install it myself, mess around, and see if the claws are real or just crypto-scammer hype.\nAt first glance, ClawdBot/MoltBot/OpenClaw is just a method to run LLMs on your local machine with many useful tools - everything from filesystem access to web crawling. It\u0026amp;rsquo;s a very fun idea with very real dangers. By now, we all have witnessed some claw-related security tragedies, and I wasn\u0026amp;rsquo;t going to make the …","created":"Feb 19 2026","last-modified":"Feb 25 2026"},{"title":"CalgaryHacks 2026: Great Beginnings","url":"https://ryanfleck.ca/2026/calgaryhacks-2026-great-beginnings/","content":"This past weekend, CSUS hosted their CalgaryHacks 2026 hackathon in the ICT building at the University of Calgary! I and several other IBMers attended to chat with students, run a workshop, and judge submissions. The atmosphere was vibrant, and I thoroughly enjoyed engaging with bright young talent at the booths, chatting on the event Discord, and asking challenging questions during the judging sessions.\nA special thank-you to Shad Sajid who ran half the workshop and helped to organize. I …","created":"Feb 17 2026","last-modified":"Feb 18 2026"},{"title":"Getting Started With watsonx","url":"https://ryanfleck.ca/2026/getting-started-with-watsonx/","content":"watsonx.ai is a part of the IBM watsonx suite of generative AI tools. This tutorial will cover the basic setup and calling of the watsonx LLM APIs to inference, call tools, and build agents! Join us live at CalgaryHacks 2026 apply this powerful suite of tools to power your hackathon submission.\n\u0026amp;ldquo;Ready to supercharge your hackathon build? Join our high-impact \u0026amp;ldquo;Getting Started With watsonx\u0026amp;rdquo; workshop at CalgaryHacks 2026 and learn how to harness IBM watsonx.ai, IBM’s …","created":"Feb 10 2026","last-modified":"Feb 17 2026"},{"title":"M4 Mac Mini LLM Server","url":"https://ryanfleck.ca/2025/m4-mac-mini-llm-server/","content":"This is a short guide to hosting your own language models on a Mac Mini. I\u0026amp;rsquo;ll cover the short set of configuration items required to spin things up so you can infrerence, completely privately, on local hardware.\nLet me clue you in on a little secret that it took me weeks of banging my head against my keyboard to discover: In order to run a LaunchDaemon at boot with no users logged in, FileVault must be disabled. I must have restarted my Mac Mini 20+ times, tweaking my configuration each …","created":"Dec 20 2025","last-modified":"Feb 17 2026"},{"title":"One Year of Observer","url":"https://ryanfleck.ca/2025/one-year-of-observer/","content":"I have been running Observer for over a year now. Given that it is the Christmas season - a time of relaxation, remembering our short time here and eternal things done for us, It is a good opportunity to look back and draw some lessons from a year of hacking on this thing.\nLet\u0026amp;rsquo;s answer a few questions:\nHow much data did I collect? Was I able successfully extract tags from headlines? What will I be moving forwards with? Table of Contents Data Volume Text Analysis Services CoreNLP SpaCY …","created":"Dec 20 2025","last-modified":"Dec 20 2025"},{"title":"Cloudflare Turnstile With Clojure","url":"https://ryanfleck.ca/2025/cloudflare-turnstile-with-clojure/","content":"A common way to counteract the infernal swarm of bots, crawlers, and other inhuman entities on the internet is to implement a captcha system to protect features on your website. Google\u0026amp;rsquo;s reCAPTCHA, ALTCHA, hCaptcha, and other systems all function similarly. Regardless of the choices you make, all follow a similar implementation pattern for securing forms:\nUsing JavaScript, add a challenge field to the form On submit, this data is included in the form as a \u0026amp;rsquo;token\u0026amp;rsquo; field On the …","created":"Jun 14 2025","last-modified":"Feb 17 2026"},{"title":"The CoreNLP Rabbit Hole","url":"https://ryanfleck.ca/2025/iterating-over-corenlp/","content":"OpenIE-style triple extraction seems to be on the rocks in 2025. After a short conversation with ChatGPT I have decided to stick with legacy methods of triple extraction from text until I can secure a Mac Mini and give up (like everyone else, including the NLP researchers,) and use an LLM as a one-shot triple extractor.\nIt is worrying that this branch of computer science has been completely surpassed by generative AI - but hey, the future is now, and I have goals that require knowledge graphs to …","created":"May 16 2025","last-modified":"Feb 17 2026"},{"title":"Observer Devlog 2: Brainstorming","url":"https://ryanfleck.ca/2025/observer-devlog-2/","content":" \u0026amp;ldquo;Make it work, make it right, make it fast.\u0026amp;rdquo;\n\u0026amp;ndash; Kent Beck\nAs I break into the next phase of my news anomaly-detection side project, I figure it would be useful to me to publicly summarize what I\u0026amp;rsquo;ve done so far, and what will be implemented next!\nThe Current Process:\nCollect RSS headlines from a variety of sources Every hour, send the last 6h of data to an LLM Store this summary in the database and show the result to visitors While this has been decently reliable, it …","created":"May 14 2025","last-modified":"Feb 17 2026"},{"title":"A Data Factory Nightmare","url":"https://ryanfleck.ca/2025/a-data-factory-nightmare/","content":" Hear ye, hear ye, a tale of woe! This is the long, complex, and messy story of how I became a Microsoft Azure Data Factory and Data Flow expert, discovered a handful of crucial shortcomings, fought with Microsoft\u0026amp;rsquo;s Support team, and lived through a cautionary tale on the strengths and weaknesses of this popular 4GL.1\nTable of Contents Project Goals Initial Solution \u0026amp;amp; Emergent Problems Microsoft Support Gaslighting The Root Cause: Storage Re-Binding Azure Functions to the Rescue …","created":"Apr 14 2025","last-modified":"Apr 17 2025"},{"title":"A Little Elisp for Hugo","url":"https://ryanfleck.ca/2025/a-little-elisp-for-hugo/","content":"My work on this website and manuals.ryanfleck.ca relies heavily on the hugo static site generator and the ox-hugo Emacs package. Here are a few short, fun automations to remove some of the (very limited) tedium from developing hugo websites!\nTable of Contents Easily Create New Posts Serving Your Drafts Transforming Org to Markdown ToC\u0026amp;nbsp; Easily Create New Posts¶ I wrote this today so I didn\u0026amp;rsquo;t have to go to the terminal to type hugo new posts/the-year/the-filename.md when I wanted to jot …","created":"Apr 14 2025","last-modified":"Apr 15 2025"},{"title":"Compiling Emacs 30","url":"https://ryanfleck.ca/2025/compiling-emacs-30/","content":"Emacs, my old friend, the cranky old wizard of editors! As previously discussed in The Magnificence of Org , the benefits of using the Emacs text editor are wildly numerous and forever interesting.1 Compiling it yourself is easy, and allows you to enjoy a maximally performant copy of this hacker\u0026amp;rsquo;s fever dream on your personal hardware.\nCheck the previous Compiling Emacs 29 article for a far more detailed overview of the process - I\u0026amp;rsquo;ll save you from the details here. This Mastering …","created":"Mar 30 2025","last-modified":"Jul 14 2025"},{"title":"Observer Devlog 1","url":"https://ryanfleck.ca/2025/observer-devlog-1/","content":"Observer is my current side project. The end-goal of the program is to continuously monitor global events and provide a platform for analysis, prediction, and reaction.\nYou can check out part of the frontend at observer.ryanfleck.ca If you stick on the page for a minute, you\u0026amp;rsquo;ll notice that many elements are pulled from the server automatically - notably the \u0026amp;rsquo;latest items\u0026amp;rsquo; feed below the graph of incoming news items.\nThe personal problem I am attempting to solve with Observer:\nI …","created":"Feb 08 2025","last-modified":"Feb 17 2026"},{"title":"Andrew Wommack, Heretic","url":"https://ryanfleck.ca/2025/andrew-wommack-heretic/","content":" This article is a huge departure from my normal, technical content. It marks the first time that I have written a formulaic exposé on any subject, let alone a popular and controversial religious personality. This article may look particularly strange to non-Christian readers who have long observed bickering amongst religious types and don\u0026amp;rsquo;t get what the fuss is about, thinking something along the lines of, \u0026amp;ldquo;why can\u0026amp;rsquo;t we all just live in peace and harmony?\u0026amp;rdquo;\nThe reason? …","created":"Jan 19 2025","last-modified":"May 19 2026"},{"title":"Rip \u0026 Tear: PostgreSQL Surgery","url":"https://ryanfleck.ca/2024/postgres-surgery/","content":"After taking a leap of faith and upgrading my past-EOL Alpine Linux server to the latest-stable release and packages, I was rewarded with an almost seamless upgrade. Thanks to my dockerized personal infrastructure, all my personal services came right back up without a hitch - apart from two that depended on a local PostgreSQL database.\nYes, I was stupid to try and save resources by having a few containers all depend on a local install of Postgres - but now I was in a real pickle. Alpine had …","created":"Dec 20 2024","last-modified":"Feb 08 2025"},{"title":"Little Elisp Workflow Enhancements","url":"https://ryanfleck.ca/2024/little-elisp-workflow-enhancements/","content":"Every week at work, I type a line in my org notes like so:\n*** 2024-W46 [2024-11-11 Mon]--[2024-11-15 Fri]: Clicking this date range opens the five-day agenda view for the week, and allows me to visualize all the meetings and date-stamped events I\u0026amp;rsquo;ve recorded for the week in question.\nEngineering and computer science types of people love to spend hours automating away minor inconveniences. Living in a LISP interpreter enables these automations to be written quickly, re-used, and improved …","created":"Nov 12 2024","last-modified":"Apr 14 2025"},{"title":"Three Years at IBM","url":"https://ryanfleck.ca/2024/three-years-at-ibm/","content":" Introduction¶ Working at IBM has been very good for me in the same way falling off a road bike and breaking my elbow was good - I\u0026amp;rsquo;ve learned many, many valuable lessons, had many of my presuppositions invalidated, and had my eyes peeled wide open to the realities of the industry. Some might call them wake up calls, others may call them reality checks, I choose to call them blessings.\nHow does one sell $50,000,000 of work? I still have no clue, but I\u0026amp;rsquo;ll be finding out shortly.\nSo …","created":"Aug 26 2024","last-modified":"Jan 16 2025"},{"title":"Vim Is an Editor, Emacs Is a Way of Life","url":"https://ryanfleck.ca/2024/vim-is-an-editor-emacs-is-a-way-of-life/","content":"Last night, over a glass of bourbon, I had the pleasure of introducing a friend to a new idea. In preparation for schooling, he ought to adopt a new methodology for storing and accessing his knowledge. Rather than spin his wheels trying to adopt a system for note-taking, time-tracking, flashcards, searching, etc., he ought to do the research ahead of time in order to make the transition smooth and easy.\nIn a previous article titled The Esoteric Magnificence of Org, I touched on a few of the …","created":"Aug 26 2024","last-modified":"Mar 29 2025"},{"title":"Compiling Emacs 29","url":"https://ryanfleck.ca/2024/compiling-emacs-29/","content":"Emacs 29 brings built-in SQLite support that is superior to the community developed packages I\u0026amp;rsquo;ve tried. Debian\u0026amp;rsquo;s latest Emacs binary is version 28, which does not have this feature. I\u0026amp;rsquo;d also like to turn on a few additional features like tree-sitter1. This article was adapted and expanded from this one - but I found it made a few mistakes and was missing a few details.\nTo start, take a deep breath and purge all Emacs packages from your system. autoremove will clean up any …","created":"Aug 26 2024","last-modified":"Mar 30 2025"},{"title":"The Magnificence of Org","url":"https://ryanfleck.ca/2024/the-magnificence-of-org/","content":"Of all the productivity and thinking tools I\u0026amp;rsquo;ve come across, all shake and tremble beneath the brilliant and towering presence of org-mode in all of my note-taking, organization, scheming, and tinkering. Over the past four months, my workflow has entirely surrendered to the insanely flexible power of the EMACS text editor and community-driven libraries.\n\u0026amp;hellip;that is exceedingly high praise for a text editor. I promise by the end of this article I\u0026amp;rsquo;ll at least have you curious about …","created":"May 20 2024","last-modified":"Apr 16 2025"},{"title":"You Can't Automate What You Don't Understand","url":"https://ryanfleck.ca/2023/you-cant-automate-what-you-dont-understand/","content":"Problems make the world go \u0026amp;lsquo;round. Problems are how engineers stay employed. Technologists love to prepare to solve problems, and what I have come to realize now is that it is rare that a problem worth solving will come to you if your head is buried strictly in the landscape of engineering, programming, and technology. Problems are out there in the real world.\nThe unsettling news here for programmer types is this: if you want to make the best of your skillset and apply it to problems that …","created":"Dec 23 2023","last-modified":"Aug 30 2024"},{"title":"Think on These Things","url":"https://ryanfleck.ca/2023/think-on-these-things/","content":"Today we take a brief philosophical and religious look at the emergence of AI generated content and the silent corporate war for your attention.\nContent Warning: This essay uses a Christian frame to weigh the timeless problems of our modern age. I grew up an atheist, and grew to know God as I reckoned with the world. If Scriptural Christian views are not to your taste, I\u0026amp;rsquo;d skip this one or proceed knowing that Scripture stands against many of the hallmarks of the modern liberal worldview. …","created":"Feb 08 2023","last-modified":"Feb 24 2026"},{"title":"One Billion Readers for 23¢ a Month","url":"https://ryanfleck.ca/2023/one-billion-readers-for-23c-a-month/","content":"How is it possible to host a website that can support a billion pageviews per month for pennies? With the help of Cloudflare and Hugo, you too can place content on the internet where it will be hosted with unlimited requests and bandwidth for free. You just need to buy the domain!\nYou\u0026amp;rsquo;ll need four things to complete this project:\nA GitHub account (free) A Cloudflare account (free) A domain name (~$3-20/year) Your website code ( contact for quote ) The GitHub account is required to host a …","created":"Feb 03 2023","last-modified":"Apr 14 2025"},{"title":"Perfected Image Rendering in Hugo","url":"https://ryanfleck.ca/2023/perfected-image-rendering-in-hugo/","content":"Hugo provides everything a user needs to display images in an accessible, performant, and size-conscious manner. I\u0026amp;rsquo;ve slowly updated my image handling shortcodes for years, and I figured I should share my innovations for others getting started with my favorite static site generator.\nMy Requirements:\nDeliver the image at its smallest possible size while still presenting a resolution-appropriate and sharp image. Meet accessibility guidelines, provide a comprehensible plaintext alt-tag, …","created":"Feb 02 2023","last-modified":"Aug 30 2024"},{"title":"Phoenix 1.2.5 on Windows","url":"https://ryanfleck.ca/2022/phoenix-125-on-windows/","content":"The current version of Phoenix is 1.5.X - given that I\u0026amp;rsquo;m following a course that teaches Phoenix 1.2, I had to figure out how to reassemble a suitable environment for working on a project out of time. This article summarizes my journey in finding and installing all the requirements.\nThis article is a recycled forum question I posted.\nHello everyone,\nI need help setting up a development environment to work on a Phoenix 1.2 project. No, I don’t care if it’s out of date and insecure.\nI’m …","created":"Dec 12 2022","last-modified":"Aug 30 2024"},{"title":"Phoenix First Look","url":"https://ryanfleck.ca/2022/phoenix-first-look/","content":"Below is a set of personal notes written while taking a first look at the Elixir language and Phoenix 1.6.14 framework.\nTable of Contents First Impressions Elixir Basics Installation and Bootstrapping Phoenix Phoenix Project Structure Tearing Apart a First Tutorial Generating a Liveview Syntax Coffee Break Rendering with Live Components Making it Realtime To Continue? ToC\u0026amp;nbsp; First Impressions¶ I\u0026amp;rsquo;m placing this section first since the rest is mostly reference material to look back on. My …","created":"Oct 24 2022","last-modified":"Feb 08 2025"},{"title":"Crippled by Heroku No More!","url":"https://ryanfleck.ca/2022/crippled-by-heroku-no-more/","content":"This is a short story about how I attempted to deploy my own simple Django API with Traefik as a reverse proxy and proxied through Cloudflare, plus the frontend deployed on Cloudflare Pages. While a fairly straightforward process on paper, I gave up once or twice only to come back a week or two later.\nYou can check out this deployed web app at democracy.ryanfleck.ca PaaS systems like Heroku spoil young developers by abstracting all of the networking, installation, and general pain associated …","created":"Oct 11 2022","last-modified":"Feb 08 2025"},{"title":"Homemade Apple Pie","url":"https://ryanfleck.ca/2022/homemade-apple-pie/","content":"Apple Pie is easy and a classic people pleaser. With a $7 pound of butter and ~$2.50 per pound of apples, ~$2 of sugars and flour, the total cost of the pie should come to ~$15 in materials and 2-3h of partially used time. Money can be saved by getting your ingredients on sale or from your aunt\u0026amp;rsquo;s apple tree.\nThis is a living recipe and it will be continually adjusted as I get feedback and make mistakes. Here\u0026amp;rsquo;s what you\u0026amp;rsquo;ll need:\nTools and Equipment:\nRolling Pin Food Processor …","created":"Oct 07 2022","last-modified":"Oct 07 2022"},{"title":"Raspberry Pi Pico W - Getting Started","url":"https://ryanfleck.ca/2022/raspberry-pi-pico-w-getting-started/","content":"This article covers getting set up with a pi pico w and running a blink program, pwm generation, and connecting to wifi to POST a microservice.\nFirst, setup your development environment. Install Thonny and under tools, in the options, in the Interpreter section, set the interpreter to MicroPython (Raspberry Pi Pico), and after holding BOOTSEL on your board, click the Install or Update MicroPython link in the bottom right of the window. Select the latest MicroPython for the Pi Pico W/WH and hit …","created":"Sep 15 2022","last-modified":"Jan 16 2025"},{"title":"Handling Profound Sadness","url":"https://ryanfleck.ca/2022/handling-profound-sadness/","content":"Engineers are a class of people who can easily find themselves profoundly socially isolated. Often, technologists young and old will forego many normal social behaviours in pursuit of complex problems and their respective solutions. While this technically justified escapism is powerful enough to completely occupy the engineering mind, the lack of time and attention given to self care, relationships, and progress in other life areas can strand an engineer on a tiny island with his project and …","created":"Aug 23 2022","last-modified":"Jul 06 2026"},{"title":"Tiny Telegram Bot in Racket","url":"https://ryanfleck.ca/2022/racket-telegram-echo-bot/","content":"I\u0026amp;rsquo;ve decided to go all-in on functional programming on personal projects for a while, reading HTDP and learning Racket as a foundation. I\u0026amp;rsquo;m only on chapter 5 of HTDP, but decided to jump the gun a bit and attempt to write a Telegram bot with Racket and raw HTTP requests. Look ma, no library!\nPlease excuse my inelegance in Racket. It\u0026amp;rsquo;ll come with time.\nThe program below simply echoes back comments to trusted users, and tells untrusted users to talk to the admin.\nTelegram bots …","created":"Apr 21 2022","last-modified":"Aug 29 2022"},{"title":"Only I Will Remain","url":"https://ryanfleck.ca/2022/only-i-will-remain/","content":" \u0026amp;ldquo;I must not fear. Fear is the mind-killer. Fear is the little-death that brings total obliteration. I will face my fear. I will permit it to pass over me and through me. And when it has gone past, I will turn the inner eye to see its path. Where the fear has gone there will be nothing. Only I will remain.\u0026amp;rdquo;\nThe Litany Against Fear, Frank Hebert\nThe last few months have been very taxing on my mental and physical health. As gyms closed, and mandates reared their heads, friends took …","created":"Mar 31 2022","last-modified":"Feb 17 2026"},{"title":"Democracy Needs a V2: Send Feedback!","url":"https://ryanfleck.ca/2022/democracy-needs-a-v2/","content":"To my delight, the Democracy platform continues to be used by ESS and the IEEE Student Branch at uOttawa.\nThough, I\u0026amp;rsquo;d like to challenge myself and take what I\u0026amp;rsquo;ve learned from writing the application and create a monetized V2 product using only functional languages for both the backend and frontend.\nI\u0026amp;rsquo;ll likely post about that in the months to come, just as soon as my work situation stabilizes.\nIf you\u0026amp;rsquo;ve enjoyed Democracy (or have serious gripes with the user experience) …","created":"Mar 25 2022","last-modified":"Aug 30 2024"},{"title":"A Quarter Century","url":"https://ryanfleck.ca/2022/a-quarter-century/","content":"I\u0026amp;rsquo;m now 25 years old.\nNow that I\u0026amp;rsquo;ve spent a quarter century roaming the earth, making friends and mistakes, I\u0026amp;rsquo;d like to take a moment to reflect on the past, present, and future with these three questions:\nWhat are the best lessons I\u0026amp;rsquo;ve learned so far? Who am I now? Where to go from here? It\u0026amp;rsquo;s doubtless that, even reading my posts from 2018 and 2019, I have slowly learned to communicate better, cherishing brevity, honesty, and accuracy. If I could time travel back …","created":"Jan 27 2022","last-modified":"Jan 27 2022"},{"title":"A Year at Wise Assistant","url":"https://ryanfleck.ca/2021/a-year-at-wise-assistant/","content":"Here I\u0026amp;rsquo;ll discuss a few notable things I learned (that you will probably find useful or relevant to your own career development,) during the year I spent working for Ryan Brandt and Michael Diego on Wise software projects.\nAs with any opportunity in life, you get out what you put in, and I was lucky to have such a singly-motivated team to work and grow with.\nTable of Contents How I Got the Job Get a Mentor Enjoy a Parallel Universe or Two Beware Knowledge Silos Working with Opinionated …","created":"Jun 18 2021","last-modified":"Aug 30 2024"},{"title":"Generating Article Thumbnails","url":"https://ryanfleck.ca/2021/generating-article-thumbnails/","content":"I\u0026amp;rsquo;ve always wanted to, rather than provide the same boring \u0026amp;lsquo;article\u0026amp;rsquo; or \u0026amp;rsquo;node\u0026amp;rsquo; thumbnails, write a script to crawl my content and generate unique thumbnails for each article. This morning, that\u0026amp;rsquo;s exactly what I did. The current script can be viewed at /generate_thumbnails.py generate_thumbnails, for every page with a markdown file, will generate and save a picture that looks like this:\nSample thumbnail This is fairly easy to integrate into the header of each …","created":"Jun 17 2021","last-modified":"Jun 19 2021"},{"title":"Building the Democracy Web App \u0026 Student Elections 2021","url":"https://ryanfleck.ca/2021/uottawa-student-elections-2021/","content":"When given the task of standing up an election system for the IEEE uOttawa student chapter, I was faced with a choice: improve the old solution, find another existing solution, or write a new solution from scratch.\nThough it came at the cost of dramatically more work, I chose the green-field project; who wouldn\u0026amp;rsquo;t leap at the chance to design a new and improved solution for a clear and defined use case with at least one guaranteed customer?\nWithin this article, I explain the decisions, …","created":"Mar 20 2021","last-modified":"Feb 08 2025"},{"title":"Replit View Counter","url":"https://ryanfleck.ca/2021/replit-view-counter/","content":"As a casual browser of this site, you may have noticed the section at the bottom of each page showing a word count, estimated reading time, and view counter.\nview counter The word count and reading time are generated by Hugo, but Hugo can\u0026amp;rsquo;t track view counts by nature; it\u0026amp;rsquo;s a static site generator, only able to smash bits of HTML together at lightspeed.\nI had to implement a backend to handle this dynamic page data.\nAt first, I had great ambitions for a set of services to connect all …","created":"Mar 20 2021","last-modified":"Mar 23 2021"},{"title":"Tone Analysis Workshop","url":"https://ryanfleck.ca/2021/tone-workshop/","content":"I had the privilege of running a workshop at uOttaHack 4 in February of 2021; the video will be edited and uploaded eventually, but for now, I\u0026amp;rsquo;m publishing this set of notes that I used to guide students through the creation of a small, emotionally sensitive online journal.\nTo inform attendees of my impending workshop, I posted this:\nHey, I\u0026amp;rsquo;m Ryan,\nTonight (9PM!) I\u0026amp;rsquo;ll be teaching y\u0026amp;rsquo;all how to read the thoughts of your [users] to detect emotion in the content that they …","created":"Feb 05 2021","last-modified":"Feb 11 2026"},{"title":"Semantic Release","url":"https://ryanfleck.ca/2020/semantic-release/","content":"Tagged releases with attached builds are great; especially when you don\u0026amp;rsquo;t need to tag, build, upload, and release it yourself. Enter Semantic Release, an \u0026amp;lsquo;aromantic\u0026amp;rsquo; automated release system.\nWorking in the tech industry, you\u0026amp;rsquo;ve probably heard of semantic versioning: the practice of marking releases with three numbers, separated by periods, denoting the major, minor, and patch version. The \u0026amp;lsquo;official\u0026amp;rsquo; semver website has a detailed explanation, which relies on …","created":"Nov 07 2020","last-modified":"Jan 16 2025"},{"title":"Userscripts","url":"https://ryanfleck.ca/2020/pr-userscript/","content":"Had my first foray into the wonderful world of userscripts today.\nAfter pushing the Show More button on a Github pull request one too many times, knowing about userscripts, I decided to install TamperMonkey and get to work.\nHere\u0026amp;rsquo;s the script I wrote to click the Show More button until all comments were visible and could be properly audited:\n// ==UserScript== // @name PR ExpandR // @namespace http://ryanfleck.ca/ // @version 1.0 // @description Expand all GitHub PR conversations. // @author …","created":"Aug 05 2020","last-modified":"Mar 23 2021"},{"title":"Paper over Keyboard","url":"https://ryanfleck.ca/2020/dumb-hackerrank-problem/","content":"So, I completed a HackerRank problem this morning to work my brain back into shape for upcoming interviews. The problem is titled The Minion Game, and the lesson I learned while completing this problem was measure twice, cut once, aka I didn\u0026amp;rsquo;t spend enough time thinking about the problem before programming.\nWorking out a programming problem on paper first will help you solve it most of the time.\nhackerrank.com/challenges/the-minion-game/problem Question¶ Kevin and Stuart want to play the …","created":"Jan 14 2020","last-modified":"Mar 23 2021"},{"title":"MSP430 Timer Module","url":"https://ryanfleck.ca/2020/msp430-timer/","content":" MSP430F5529LP?¶ Texas Instruments\u0026amp;rsquo; Launchpad Microcontrollers are used in UOE Racing\u0026amp;rsquo;s electric car projects. UOE\u0026amp;rsquo;s entry for the Shell Eco-Marathon competition relies on an MSP430 Launchpad board to control a DRV8323, which controls a brushless DC (BLDC) motor. As part of a small team, I am responsible for improving the code to control the DRV8323, and by extension, the BLDC.\nA timer, the CPU peripheral that ticks down to zero then interrupts the CPU, is a very practical tool …","created":"Jan 11 2020","last-modified":"May 20 2026"},{"title":"Notes on VHDL","url":"https://ryanfleck.ca/2019/vhdl/","content":" Preamble¶ VHDL stands for Very High Speed Integrated Circuit Hardware Design Language. No, I\u0026amp;rsquo;m not kidding. Despite being a mouthful, the language is used by engineers to prototype and describe industrial digital logic.\nThis document started as a copy of living notes for the CEG3155 course I was taking, Digital Systems II. It lives on as I implement MIPS processors in CEG3156, Computer System Design.\nThe two primary types of VHDL logic the course deals with (and I deal with within this …","created":"Oct 13 2019","last-modified":"Mar 23 2021"},{"title":"Passing Structs in C++","url":"https://ryanfleck.ca/2019/cpp-struct-passing/","content":"After a conversation with a friend revolving around passing structures to functions, I decided to write a short tutorial on passing structures to functions in three different ways! I am not a very experienced C++ programmer, but hopefully these examples will illustrate to a beginner the medley of ways that data can be passed into functions, and the pros \u0026amp;amp; cons of each method. Skip to the end if you learn better by reading code. We will pass the structure below by:\nValue Pointer Reference // …","created":"Oct 11 2019","last-modified":"Mar 23 2021"},{"title":"Notes on HC12 Assembly","url":"https://ryanfleck.ca/2019/hc12-asm/","content":" Introduction¶ The HC12 CPU is used to teach the CEG3136 class at the University of Ottawa. This document is a living personal reference to the CPU12 CISC instruction set. WIP!\nLet\u0026amp;rsquo;s get started with a practical example. Calculate:\nz = a + b - c A function written in C:\nvoid addstuff() { int z; int a=5, b=6, c=8; z = a + b - c; } Now in HC12 ASM, using sections for organization:\nconsts: SECTION var_a DC.W 5 var_b DC.W 6 var_c DC.W 8 data: SECTION z DS.W 1 code: SECTION addstuff: LDAA var_a …","created":"Oct 09 2019","last-modified":"Mar 23 2021"},{"title":"IBM Extreme Blue","url":"https://ryanfleck.ca/2019/ibm-extreme-blue/","content":"IBM shipped all of the North American Extreme Blue interns out to New York City for a few days to present our projects to a panel of executives, to which we had dedicated a summer and no small quantity of blood and sweat. I write this on my flight home from Newark, NJ to Billy Bishop in Toronto.\nTable of Contents Extreme Blue? What Did I Do? Oh, a Team of Four? Do I Recommend Extreme Blue? Do I Recommend a Regular Internship? The Best Parts Glamping New York City The Executive Presence Workshops …","created":"Aug 11 2019","last-modified":"Jul 06 2026"},{"title":"The 2018 MacBook Pro Keyboard","url":"https://ryanfleck.ca/2019/the-macbook-pro-2018-keyboard-sucks/","content":"As an intern at IBM, I was assigned an incredibly high-quality machine: A 2018, 15-inch MacBook Pro with 16 Gigs of DDR4 and the infamous touchbar. To buy this thing new, for personal use, it\u0026amp;rsquo;d cost me over $3500 of the near-worthless cash we Canadians call Dollars. Certainly a pricey machine, and it isn\u0026amp;rsquo;t for naught: The screen is excellent. I\u0026amp;rsquo;m sure that people have suffered for screens like this; surreal clarity, even lighting, vivid colors, a pixel density that\u0026amp;rsquo;ll let …","created":"Jul 10 2019","last-modified":"Feb 08 2025"},{"title":"The Zen of Vim","url":"https://ryanfleck.ca/2019/the-zen-of-vim/","content":"When is a tool more than a tool?\nWhen does a hammer transcend its ability simply to hammer nails, but becomes an extension of the workman\u0026amp;rsquo;s body, a physical manifestation of his will?\nWhen does the swordsman\u0026amp;rsquo;s sword feel, sense and touch as the swordsman\u0026amp;rsquo;s own hands would? To taste the drip of hot blood and the texture of the fabric it cuts?\nFor the computer programmer, there is a point where he will become entwined with his tool of choice for manipulating the text of programs. …","created":"Jul 10 2019","last-modified":"Jul 06 2026"},{"title":"Film Review: Equilibrium","url":"https://ryanfleck.ca/2019/equilibrium/","content":"As anybody who has ever spoken to me will know, I hold the writing of authors Aldous Huxley and George Orwell in very high regard. Equilibrium, while it didn\u0026amp;rsquo;t perform well in the Box Office, was thoroughly enjoyable and did a fantastic job of mixing together elements from two of the greatest dystopian novels ever written: Brave New World, and 1984. Additionally, a friend pointed out it also has firemen from Ray Bradbury\u0026amp;rsquo;s Fahrenheit 451, another great dystopian novel.\nThe film …","created":"Jul 08 2019","last-modified":"Mar 23 2021"},{"title":"The Case for Digital Minimalism","url":"https://ryanfleck.ca/2019/digital-minimalism/","content":"Exhausted. At the end of our workdays, Gen Zs all end up drained and numb, even if we don\u0026amp;rsquo;t seem to actually accomplish anything. Older adults puzzle over why, exactly, we all appear to be dead and passionless.\nCertainly, part of my personal issue was my attatchment to the new drug, digital media. I\u0026amp;rsquo;m certain my personal issues are also present in most members of my generation. Primar\nIt takes a fierce grip, tempting the mind with an open firehose of facts and events, keeping us …","created":"Jul 08 2019","last-modified":"Mar 23 2021"},{"title":"My Personal Journaling System","url":"https://ryanfleck.ca/2019/2019-05-20-journaling/","content":"Perhaps the most valuable thing I\u0026amp;rsquo;ve done for myself in recent months is beginning to write daily, about my life and my thoughts, in a critical and introspective way. This post is about the tools I have developed to make journaling quick and accessible from any machine.\nEditing a journal entry with Vim Above is the latest iteration of the je tool, which is now public and open source. . Since I\u0026amp;rsquo;m always near a command line, I decided to build tools that allowed me to quickly add …","created":"May 20 2019","last-modified":"May 20 2026"},{"title":"Accessing Git Repos with SSH","url":"https://ryanfleck.ca/2018/2018-12-27-git-ssh/","content":"SSH keys provide a convenient way to authenticate and interact securely with a git server. GitHub strongly recommends using SSH, and so do I.\nTo generate a key, you\u0026amp;rsquo;ll need to open a console window. If using Windows, you\u0026amp;rsquo;ll need to utilize the PuTTY tool to generate a key pair. If using a good operating system, enter the following, replacing the generic email with your own:\nssh-keygen -t rsa -b 4096 -C \u0026amp;#34;email@email.com\u0026amp;#34; Running this will prompt you to enter a password. Save …","created":"Dec 27 2018","last-modified":"Jul 04 2026"},{"title":"Last Week at MNP","url":"https://ryanfleck.ca/2018/2018-12-13-last-week-at-mnp/","content":"Twelve months. Twelve months I\u0026amp;rsquo;ve spent with two teams, four projects, heaps of technology, friends, mentors, deadlines, crunch time, rewards, comradery and clients. The kid who shakily agreed to a tech consulting internship a year ago might not recognize me today; the chip buffed out of my shoulder, gaze steady, speech thoughtful and clear. I\u0026amp;rsquo;ve been given direction and seen progress. I have my fantastic colleagues and managers to thank for this.\nSo, what exactly did I do this year? …","created":"Dec 23 2018","last-modified":"May 19 2026"},{"title":"Xalgorithms Development on GNU/Linux","url":"https://ryanfleck.ca/2018/2018-07-21-xalgorithm-development-on-fedora/","content":" Xalgorithms¶ The Xalgorthms platform has been designed to support the collaborative maintainance of a global body of rules for trade, commerce and taxes. A rule specification, compute method and authoring tools have been designed to enable organizations to use and manage this external body of shared algorithms.\nWhat follows s a short guide on how to set up the compiler and interpreter for prototype Xalgorithm Rules. Instructions for Fedora 28 are provided, but a similar process could be …","created":"Jul 21 2018","last-modified":"Jul 04 2026"},{"title":"Calligraphy with Inkscape","url":"https://ryanfleck.ca/2018/2018-07-07-calligraphy/","content":"With the goal of replacing my questionably-proprietary R, I decided to scrawl a fresh svg in InkScape. After an embarrassing number of revisions and rework, gravitating further away then back towards the original design, here is the final product.\nThe final \u0026amp;ldquo;R\u0026amp;rdquo; design I wanted the new image to meet the following criteria:\nMust look good in a circular or square format. Should be highly scalable and look good when tiny/huge. Mono/Dichromatic color scheme, for visual simplicity. Needs …","created":"Jul 07 2018","last-modified":"Jul 04 2026"},{"title":"Windows Mixed Reality","url":"https://ryanfleck.ca/2018/2018-06-24-wmr-june-2018/","content":" Preamble¶ As the Virtual Reality scene continues to improve, the aging first-gen conceptual headsets are becoming less expensive. The HTC Vive initially retailed at CAD $1200, and now sells for $700, whereas the Oculus Rift dropped from $800 for the standalone headset to $530 including motion controllers. Windows Mixed Reality headsets are the consumer offspring of all the R\u0026amp;amp;D that occurred for the HoloLens, namely inside-out tracking, and positioned themselves as the budget alternative to …","created":"Jun 24 2018","last-modified":"Jul 04 2026"},{"title":"Chinese Food with Richard Stallman","url":"https://ryanfleck.ca/2018/2018-05-15-lunchwithrms/","content":"\u0026amp;ldquo;Happy Hacking\u0026amp;rdquo;, he said with a smile. Written here is a short account of the meal I shared with the venerable Richard Stallman (rms ), father of the Free Software movement, a community whose ethos has evolved into the better half of the modern computing world (where people and quality come first!) I have no photos, autographs or records of the event (I wanted to respect rms\u0026amp;rsquo;s privacy,) but have come away with a medley of interesting contacts and experiences.\nA summary of the …","created":"May 15 2018","last-modified":"Jul 04 2026"},{"title":"Hard Knocks - My MNP Co-Op Experience","url":"https://ryanfleck.ca/2018/2018-04-28-worktermone/","content":"My last 4 months were spent with MNP LLP , a financial firm and technology consultancy. I\u0026amp;rsquo;ve learned a great deal from playing a small but essential role on the Digital Integration team. Becoming close with team members, coordinating development efforts, and discovering the strengths and weaknesses of my coworkers (along with my own,) has been a particularly rewarding experience. All this was not earned without hard work; I\u0026amp;rsquo;ve made a great deal of mistakes, stepped on a few toes, and …","created":"Apr 28 2018","last-modified":"Jul 04 2026"},{"title":"Build a Personal Website in an Afternoon","url":"https://ryanfleck.ca/2018/2018-03-30-jekylltutorial/","content":" Tutorial Overview¶ If you\u0026amp;rsquo;ve ever wanted a personal website; a place to showcase your experiments and opinions, away from pre-configured themes and terribly named domain postfixes, Jekyll , Kramdown , SASS , and Github Pages may be just the tools for you. The following post will present, in a thoughtful and concise manner, the material needed to get a website up and running at yourname.github.io.\nBy following this tutorial, you will learn how to use git and github to manage your code, …","created":"Mar 30 2018","last-modified":"Jul 04 2026"},{"title":"Attending UOttaHack 2018","url":"https://ryanfleck.ca/2018/2018-02-19-hackathon/","content":" Preamble¶ This past weekend, I attended uOttawa\u0026amp;rsquo;s first MLH1 Hackathon. After a long work week, I was prepared to show up and enjoy the event, but not to directly participate or join a team. Skipping the overnighter was, at the beginning of the event, a sad but necessary plan.\nAll thoughts of having a relaxing weekend were thrown out the window as I was unsuspectingly amalgamated into a very interesting group of people:\nD, a drifting developer with a colorful past involving surfing …","created":"Feb 19 2018","last-modified":"Jul 04 2026"},{"title":"VIM For The Just-In-Time Crowd","url":"https://ryanfleck.ca/2017/2017-12-29-vimforjits/","content":"VIM is the best programming tool, full stop. This short guide will take the average JIT1 student from \u0026amp;ldquo;why would I use this silly terminal thing\u0026amp;rdquo; to \u0026amp;ldquo;ohmygod where has this amazing tool been all my life?\u0026amp;rdquo; in 5 minutes, plus an hour or so of experimentation and adapting to the keybindings.\n1. What is VIM?¶ VIM is a text editor with infinite reprogrammability, time-traveling and full-line undo, and a seemingly endless list of very useful functionality. There is no end to …","created":"Dec 29 2017","last-modified":"Jan 12 2025"},{"title":"Midterms and Dorm Life","url":"https://ryanfleck.ca/2015/2015-10-23-midterms-and-dorm-life/","content":"October 23, 2015\nI had my last really difficult midterm yesterday- Engineering Mechanics. It went well, but the funny thing is, it was interrupted. We, the students, were all filing into the lecture hall, preparing to write the test. Our prof hands out stacks of tests, and says begin. Standard stuff.\nBefore anyone can even start to draw a free body diagram, EEHHRRRR!!!!!! The fire alarm, which sounds like a low, long, harsh beep, fills the room and shatters our concentration like a locomotive …","created":"Oct 23 2015","last-modified":"Jul 06 2026"},{"title":"Engineering 101 Week","url":"https://ryanfleck.ca/2015/2015-09-19-engineering-101-week/","content":"September 9th, 2015\nA lone guide yells, “Engineers! What is your profession?”\nThe 200+ new engineers roar back: “TO DRINK BEER!”\n“What kind of beer?”\n“COLD, FREE BEER!”\n“Why?”\n“TO GET DRUNK!”\n“Why?”\n“TO GET HAMMERED!”\n“Why?”\n“WE DON’T KNOW!”\n“Why?”\n“WE’RE ENGINEERS!!!”\nI’m going to take a few steps back and start my story from the beginning. I’m just writing this in the mess hall now, and have a lecture in half an hour, so let’s see how much I can finish. Chances are I’ll need more time.\nMy …","created":"Sep 19 2015","last-modified":"Jul 06 2026"}]