41554 blogs · [ { "id": "01a0873d-4f81-729f-9aac-826196d3860b", "title": "File Integrity Monitoring in Python", "url": "https://benwendt.ca/articles/file-integrity-monitoring/", "published_at": "2025-09-09T00:00:00+00:00" }, { "id": "01a0873d-4f81-729f-9aac-826197aae066", "title": "Tell A Story To Write Better Code", "url": "https://benwendt.ca/articles/tell-story/", "published_at": "2025-08-30T00:00:00+00:00" }, { "id": "01a0873d-4f81-729f-9aac-8261983a3ec3", "title": "Generating fractals from Dask Distributed", "url": "https://benwendt.ca/articles/dask-distributed-fractal/", "published_at": "2025-07-09T00:00:00+00:00" }, { "id": "01a0873d-4f81-729f-9aac-826198418874", "title": "Branch Coverage, A Cautionary Tale", "url": "https://benwendt.ca/articles/branch-coverage/", "published_at": "2025-07-07T00:00:00+00:00" }, { "id": "01a0873d-4f81-729f-9aac-8261993ec3fb", "title": "Rotary MIDI", "url": "https://benwendt.ca/articles/rotary-midi/", "published_at": "2025-06-28T00:00:00+00:00" }, { "id": "01a0873d-4f81-729f-9aac-8261994db84c", "title": "Cookie Clicking", "url": "https://benwendt.ca/articles/cookie-clicking/", "published_at": "2025-04-17T00:00:00+00:00" }, { "id": "01a0873d-4f81-729f-9aac-826199857b4e", "title": "Using ollama to make an epub synopsis", "url": "https://benwendt.ca/articles/ollama-synopsis/", "published_at": "2024-05-09T00:00:00+00:00" }, { "id": "01a0873d-4f81-729f-9aac-82619a34f8f5", "title": "An Intro to Data Build Tool (dbt) With Hive", "url": "https://benwendt.ca/articles/dbt-hive/", "published_at": "2024-03-26T00:00:00+00:00" }, { "id": "01a0873d-4f81-729f-9aac-82619aabc46b", "title": "An Intro to Data Build Tool (dbt) Hooks", "url": "https://benwendt.ca/articles/dbt-hooks/", "published_at": "2024-03-20T00:00:00+00:00" }, { "id": "01a0873d-4f81-729f-9aac-82619b62f00a", "title": "An Intro to Data Build Tool (dbt)", "url": "https://benwendt.ca/articles/dbt-intro/", "published_at": "2024-03-13T00:00:00+00:00" }, { "id": "01a0873d-4f81-729f-9aac-82619c518bb5", "title": "Finding Sator Squares", "url": "https://benwendt.ca/articles/sator-square/", "published_at": "2023-11-13T00:00:00+00:00" }, { "id": "01a0873d-4f81-729f-9aac-82619d3f8fa1", "title": "An uninformative error in bigquery", "url": "https://benwendt.ca/articles/bigquery-error/", "published_at": "2023-10-25T00:00:00+00:00" }, { "id": "01a0873d-4f81-729f-9aac-82619db40cd8", "title": "Schemas and SqlTransform in Beam", "url": "https://benwendt.ca/articles/schemas-sql-beam/", "published_at": "2023-07-13T04:00:00+00:00" }, { "id": "01a0873d-4f81-729f-9aac-82619ea66033", "title": "Solving Spelling Bee and Letter Boxed", "url": "https://benwendt.ca/articles/spelling-bee-and-letter-boxed/", "published_at": "2022-11-15T00:00:00+00:00" }, { "id": "01a0873d-4f81-729f-9aac-82619eb56b9a", "title": "Safe Navigation in Python", "url": "https://benwendt.ca/articles/safe-navigate-python/", "published_at": "2022-10-13T00:00:00+00:00" }, { "id": "01a0873d-4f81-729f-9aac-82619f885de9", "title": "A Tale From Microservice Hell", "url": "https://benwendt.ca/articles/microservice-hell/", "published_at": "2022-09-21T00:00:00+00:00" }, { "id": "01a0873d-4f81-729f-9aac-82619f9e8700", "title": "Running a shell command for each entry in a PCollection", "url": "https://benwendt.ca/articles/beam-subprocess-run/", "published_at": "2022-07-17T00:00:00+00:00" }, { "id": "01a0873d-4f81-729f-9aac-8261a04ba755", "title": "Transferring Musical Likes Between Services", "url": "https://benwendt.ca/articles/youtube-music-api/", "published_at": "2022-05-22T00:00:00+00:00" }, { "id": "01a0873d-4f81-729f-9aac-8261a0cd02b9", "title": "Doing some biological modeling", "url": "https://benwendt.ca/articles/biological-modeling/", "published_at": "2022-05-03T00:00:00+00:00" }, { "id": "01a0873d-4f81-729f-9aac-8261a191b1c0", "title": "Diabolical Answers In Wordle", "url": "https://benwendt.ca/articles/worst-answers-wordle/", "published_at": "2022-04-12T00:00:00+00:00" }, { "id": "01a0873d-4f81-729f-9aac-8261a1f8ee66", "title": "Messing Around In Beam, π Day, And More Wordle", "url": "https://benwendt.ca/articles/messing-around-beam/", "published_at": "2022-03-14T00:00:00+00:00" }, { "id": "01a0873d-4f81-729f-9aac-8261a282a772", "title": "BrainF Interpreter In Scratch", "url": "https://benwendt.ca/articles/brain-f-interpreter-scratch/", "published_at": "2022-03-10T00:00:00+00:00" }, { "id": "01a0873d-4f81-729f-9aac-8261a317f36d", "title": "Automatic Word of the Day", "url": "https://benwendt.ca/articles/wotd/", "published_at": "2022-03-03T00:00:00+00:00" }, { "id": "01a0873d-4f81-729f-9aac-8261a358e5b2", "title": "What is Canada's Largest Transitless Municipality?", "url": "https://benwendt.ca/articles/canadas-biggest-transitless-muncipality/", "published_at": "2022-02-22T00:00:00+00:00" }, { "id": "01a0873d-4f81-729f-9aac-8261a3c42339", "title": "\"Infinite Word Ladder\"", "url": "https://benwendt.ca/articles/infinite-word-ladder/", "published_at": "2022-02-17T00:00:00+00:00" }, { "id": "01a0873d-4f81-729f-9aac-8261a4b46712", "title": "I Did a Deep Q Learning Course", "url": "https://benwendt.ca/articles/deep-q-learning-course/", "published_at": "2022-02-11T00:00:00+00:00" }, { "id": "01a0873d-4f82-7094-87dd-f2ad61e32bf4", "title": "3D Printed Rocket", "url": "https://benwendt.ca/articles/3d-printed-rocket/", "published_at": "2022-01-25T00:00:00+00:00" }, { "id": "01a0873d-4f82-7094-87dd-f2ad624609a6", "title": "The Best And Worst Words In Wordle", "url": "https://benwendt.ca/articles/best-and-worst-wordle/", "published_at": "2022-01-18T00:00:00+00:00" }, { "id": "01a0873d-4f82-7094-87dd-f2ad62bc5a59", "title": "Using an Artie 3000 as a Plotter", "url": "https://benwendt.ca/articles/artie-300-plotter/", "published_at": "2021-12-29T00:00:00+00:00" }, { "id": "01a0873d-4f82-7094-87dd-f2ad632691db", "title": "Finding Latent Faces-with Non-negative Matrix Factorization", "url": "https://benwendt.ca/articles/finding-latent-faces-with-nnmf/", "published_at": "2021-11-02T00:00:00+00:00" }, { "id": "01a0873d-4f82-7094-87dd-f2ad63855675", "title": "A \"100 emoji\" maker", "url": "https://benwendt.ca/articles/100-emoji-maker/", "published_at": "2021-11-01T00:00:00+00:00" }, { "id": "01a0873d-4f82-7094-87dd-f2ad63e9c80c", "title": "Fibonacci Spheres in Blender", "url": "https://benwendt.ca/articles/fibonacci-spheres-blender/", "published_at": "2020-09-01T00:00:00+00:00" }, { "id": "01a0873d-4f82-7094-87dd-f2ad64e609aa", "title": "Archiving photos from iOS to a network drive", "url": "https://benwendt.ca/articles/photo-transfer-ios/", "published_at": "2020-08-01T00:00:00+00:00" }, { "id": "01a0873d-4f82-7094-87dd-f2ad658c3f62", "title": "Uploading and sorting photos from android over sftp using termux", "url": "https://benwendt.ca/articles/android-upload/", "published_at": "2019-10-01T00:00:00+00:00" }, { "id": "01a0873d-4f82-7094-87dd-f2ad66666747", "title": "Fizzbuzz in Different Paradigms / Techniques", "url": "https://benwendt.ca/articles/fizzbuzz/", "published_at": "2019-01-01T00:00:00+00:00" }, { "id": "01a0873d-4f82-7094-87dd-f2ad673e0ff6", "title": "Deep Learning Fundamentals", "url": "https://benwendt.ca/articles/deep-learning-fundamentals/", "published_at": "2018-09-01T00:00:00+00:00" }, { "id": "01a0873d-4f82-7094-87dd-f2ad67526a1a", "title": "A Ruby Pipe", "url": "https://benwendt.ca/articles/ruby-pipe/", "published_at": "2018-02-01T00:00:00+00:00" }, { "id": "01a0873d-4f82-7094-87dd-f2ad67aa1fd8", "title": "Introduction to J", "url": "https://benwendt.ca/articles/j-intro/", "published_at": "2018-01-01T00:00:00+00:00" }, { "id": "01a0873d-4f82-7094-87dd-f2ad689fd3d1", "title": "Popping errors out from ruby threads using a Queue", "url": "https://benwendt.ca/articles/pop-exception-ruby-thread/", "published_at": "2017-05-10T00:00:00+00:00" }, { "id": "01a0873d-4f82-7094-87dd-f2ad69555327", "title": "Intro to Bayesian Classifiers", "url": "https://benwendt.ca/articles/bayes-classifier/", "published_at": "2017-05-01T00:00:00+00:00" }, { "id": "01a0873d-4f82-7094-87dd-f2ad6a1bfed0", "title": "Adding Database Constraints Using the `rein` Gem", "url": "https://benwendt.ca/articles/rein-constraints/", "published_at": "2017-03-28T00:00:00+00:00" }, { "id": "01a0873d-4f82-7094-87dd-f2ad6ab2be78", "title": "My first slack bot", "url": "https://benwendt.ca/articles/my-first-slack-bot/", "published_at": "2016-09-15T00:00:00+00:00" }, { "id": "01a0873d-4f82-7094-87dd-f2ad6b85f52c", "title": "The World's Simplest IRC Bot - Again", "url": "https://benwendt.ca/articles/the-worlds-simplest-irc-bot-again/", "published_at": "2016-09-15T00:00:00+00:00" }, { "id": "01a0873d-4f82-7094-87dd-f2ad6c7cbb52", "title": "The World's Simplest IRC Bot", "url": "https://benwendt.ca/articles/the-worlds-simplest-irc-bot/", "published_at": "2016-09-01T00:00:00+00:00" }, { "id": "01a0873d-4f82-7094-87dd-f2ad6d2e0759", "title": "Designing Models for 3D Printing in openSCAD", "url": "https://benwendt.ca/articles/3d-printing/", "published_at": "2016-04-08T00:00:00+00:00" }, { "id": "01a0873d-4f82-7094-87dd-f2ad6df1208b", "title": "Playing with Vue.js", "url": "https://benwendt.ca/articles/playing-with-vue-js/", "published_at": "2016-04-04T00:00:00+00:00" }, { "id": "01a0873d-4f87-73b2-af28-aed64a0d358f", "title": "Relevance Graphing", "url": "https://benwendt.ca/articles/relevance-graph/", "published_at": "2016-03-27T00:00:00+00:00" }, { "id": "01a0873d-4f87-73b2-af28-aed64b0c3a55", "title": "Fun with `fork`", "url": "https://benwendt.ca/articles/fun-with-fork/", "published_at": "2016-02-02T00:00:00+00:00" }, { "id": "01a0873d-4f87-73b2-af28-aed64b947cbb", "title": "Getting a sum of durations in rails", "url": "https://benwendt.ca/articles/ruby-duration-sum/", "published_at": "2016-02-01T00:00:00+00:00" }, { "id": "01a0873d-4f87-73b2-af28-aed64be19545", "title": "Brainfuck Interpreter", "url": "https://benwendt.ca/articles/brainfuck-interpreter/", "published_at": "2016-01-23T00:00:00+00:00" }, { "id": "01a0873d-4f87-73b2-af28-aed64c74bcde", "title": "Republished", "url": "https://benwendt.ca/articles/republished/", "published_at": "2015-11-28T00:00:00+00:00" }, { "id": "01a0873d-4f87-73b2-af28-aed64c7b05f1", "title": "Restricting post-deployment tasks to certain roles using capistrano", "url": "https://benwendt.ca/articles/restricting/", "published_at": "2015-11-10T00:00:00+00:00" }, { "id": "01a0873d-4f87-73b2-af28-aed64c888d03", "title": "Converting strings to bf code", "url": "https://benwendt.ca/articles/converting-to-bf/", "published_at": "2015-10-11T00:00:00+00:00" }, { "id": "01a0873d-4f87-73b2-af28-aed64d56e885", "title": "Search Index Internals", "url": "https://benwendt.ca/articles/search-internals/", "published_at": "2015-09-27T00:00:00+00:00" }, { "id": "01a0873d-4f87-73b2-af28-aed64e2302b0", "title": "A Random Password Generator", "url": "https://benwendt.ca/articles/random-password/", "published_at": "2015-09-04T00:00:00+00:00" }, { "id": "01a0873d-4f87-73b2-af28-aed64e508845", "title": "NLP Essentials", "url": "https://benwendt.ca/articles/nlp-essentials/", "published_at": "2015-07-18T00:00:00+00:00" }, { "id": "01a0873d-4f87-73b2-af28-aed64e5c6834", "title": "A Comparison of Stemmers", "url": "https://benwendt.ca/articles/a-comparison-of-stemmers/", "published_at": "2015-07-08T00:00:00+00:00" }, { "id": "01a0873d-4f87-73b2-af28-aed64f53c98e", "title": "Setting a custom response header in a Gin response", "url": "https://benwendt.ca/articles/gin-header/", "published_at": "2015-06-04T00:00:00+00:00" }, { "id": "01a0873d-4f87-73b2-af28-aed6500dbedd", "title": "An interesting example of using a closure for memoization", "url": "https://benwendt.ca/articles/an-interesting-example-of-using-a-closure-for-memoization/", "published_at": "2015-05-15T00:00:00+00:00" }, { "id": "01a0873d-4f87-73b2-af28-aed650ca334c", "title": "Using a motion detector with the espruino pico", "url": "https://benwendt.ca/articles/using-a-motion-detector-with-the-espruino-pico/", "published_at": "2015-05-07T00:00:00+00:00" }, { "id": "01a0873d-4f87-73b2-af28-aed651123c8e", "title": "Playing with my espruino pico", "url": "https://benwendt.ca/articles/playing-with-my-espruino-pico/", "published_at": "2015-05-03T00:00:00+00:00" }, { "id": "01a0873d-4f87-73b2-af28-aed651c36096", "title": "Using Angular-UI and Restangular To Interact With WordPress API", "url": "https://benwendt.ca/articles/using-angular-ui-and-restangular-to-interact-with-wordpress-api/", "published_at": "2015-04-25T00:00:00+00:00" }, { "id": "01a0873d-4f87-73b2-af28-aed651e52823", "title": "Finding Semordnilaps", "url": "https://benwendt.ca/articles/finding-semordniaps/", "published_at": "2015-04-18T00:00:00+00:00" }, { "id": "01a0873d-4f87-73b2-af28-aed65270fd86", "title": "PHP’s traits vs. ruby’s modules: Battle of the mix-ins", "url": "https://benwendt.ca/articles/phps-traits-vs-rubys-modules-battle-of-the-mix-ins/", "published_at": "2015-04-10T00:00:00+00:00" }, { "id": "01a0873d-4f87-73b2-af28-aed652d13b1e", "title": "A Whitespace + Punctuation Tokenizer", "url": "https://benwendt.ca/articles/a-whitespace-punctuation-tokenizer/", "published_at": "2015-02-14T00:00:00+00:00" }, { "id": "01a0873d-4f87-73b2-af28-aed653bd8dd8", "title": "Android Game Development", "url": "https://benwendt.ca/articles/android-game-development/", "published_at": "2015-02-14T00:00:00+00:00" }, { "id": "01a0873d-4f87-73b2-af28-aed654798b55", "title": "Basic Concepts of a Search Index", "url": "https://benwendt.ca/articles/basic-concepts-of-a-search-index/", "published_at": "2015-01-31T00:00:00+00:00" }, { "id": "01a0873d-4f87-73b2-af28-aed654ecdf72", "title": "Installing VLC on an ADT-1", "url": "https://benwendt.ca/articles/installing-vlc-on-an-adt-1/", "published_at": "2014-10-22T00:00:00+00:00" }, { "id": "01a0873d-4f87-73b2-af28-aed655e29f90", "title": "Canvas Spinny", "url": "https://benwendt.ca/articles/canvas-spinny/", "published_at": "2014-09-05T00:00:00+00:00" }, { "id": "01a0873d-4f87-73b2-af28-aed656700cf1", "title": "Emulating the Javascript With Statement in PHP", "url": "https://benwendt.ca/articles/emulating-the-javascript-with-statement-in-php/", "published_at": "2014-07-02T00:00:00+00:00" }, { "id": "01a0873d-4f87-73b2-af28-aed6575021e8", "title": "Migrating SQLite for PHP 5.2 to PHP 5.4 on Ubuntu", "url": "https://benwendt.ca/articles/migrating-sqlite-for-php-5-2-to-php-5-4-on-ubuntu/", "published_at": "2014-06-14T00:00:00+00:00" }, { "id": "01a0873d-4f87-73b2-af28-aed6577e9e7a", "title": "A Lottery Model", "url": "https://benwendt.ca/articles/a-lottery-model/", "published_at": "2014-06-12T00:00:00+00:00" }, { "id": "01a0873d-4f87-73b2-af28-aed658629c82", "title": "Counting sort", "url": "https://benwendt.ca/articles/counting-sort/", "published_at": "2014-05-09T00:00:00+00:00" }, { "id": "01a0873d-4f87-73b2-af28-aed65910b14f", "title": "Using the HSL colour space on Android", "url": "https://benwendt.ca/articles/using-the-hsl-colour-space-in-java/", "published_at": "2014-04-23T00:00:00+00:00" }, { "id": "01a0873d-4f87-73b2-af28-aed659d0d4e9", "title": "Using Underscore.PHP and Newton's Method to approximate pi", "url": "https://benwendt.ca/articles/using-underscore-php-and-newtons-method-to-approximate-pi/", "published_at": "2014-04-16T00:00:00+00:00" }, { "id": "01a0873d-4f87-73b2-af28-aed65aa9461d", "title": "Setting up a simple blog using laravel", "url": "https://benwendt.ca/articles/setting-up-a-simple-blog-using-laravel/", "published_at": "2014-04-09T00:00:00+00:00" }, { "id": "01a0873d-4f87-73b2-af28-aed65b0f1b1b", "title": "Check out my FirefoxOS game Protect Your Thing!", "url": "https://benwendt.ca/articles/check-out-my-firefoxos-game-protect-your-thing/", "published_at": "2014-03-24T00:00:00+00:00" }, { "id": "01a0873d-4f87-73b2-af28-aed65b984062", "title": "A key-value store that forgets", "url": "https://benwendt.ca/articles/a-key-value-store-that-forgets/", "published_at": "2014-02-27T00:00:00+00:00" }, { "id": "01a0873d-4f87-73b2-af28-aed65beae3e6", "title": "Getting Started With Espruino", "url": "https://benwendt.ca/articles/getting-started-with-espruino/", "published_at": "2014-02-07T00:00:00+00:00" }, { "id": "01a0873d-4f87-73b2-af28-aed65c41cdbb", "title": "Interfacing with an Espruino from c#", "url": "https://benwendt.ca/articles/interfacing-with-an-espruino-from-c/", "published_at": "2014-02-07T00:00:00+00:00" }, { "id": "01a0873d-4f87-73b2-af28-aed65c7973f6", "title": "Adding Arbitrary Code to your in Magento", "url": "https://benwendt.ca/articles/adding-arbitrary-code-to-your-in-magento/", "published_at": "2014-02-06T00:00:00+00:00" }, { "id": "01a0873d-4f87-73b2-af28-aed65cdcf2e4", "title": "An implementation of the memento pattern in PHP", "url": "https://benwendt.ca/articles/an-implementation-of-the-memento-pattern-in-php/", "published_at": "2013-12-09T00:00:00+00:00" }, { "id": "01a0873d-4f87-73b2-af28-aed65d4acce2", "title": "Weighted merging of multiple Markov Chains", "url": "https://benwendt.ca/articles/weighted-merging-of-multiple-markov-chains/", "published_at": "2013-12-04T00:00:00+00:00" }, { "id": "01a0873d-4f87-73b2-af28-aed65de3eb42", "title": "Registry Pattern", "url": "https://benwendt.ca/articles/registry-pattern/", "published_at": "2013-11-18T00:00:00+00:00" }, { "id": "01a0873d-4f87-73b2-af28-aed65ed74e5d", "title": "Generating the vertices and edges of an n-cube in javascript", "url": "https://benwendt.ca/articles/generating-the-vertices-and-edges-of-an-n-cube-in-javascript/", "published_at": "2013-10-26T00:00:00+00:00" }, { "id": "01a0873d-4f87-73b2-af28-aed65ef855f9", "title": "A PHP spell checker", "url": "https://benwendt.ca/articles/a-php-spell-checker/", "published_at": "2013-10-21T00:00:00+00:00" }, { "id": "01a0873d-4f87-73b2-af28-aed65fd3f311", "title": "A Lattice class", "url": "https://benwendt.ca/articles/a-lattice-class/", "published_at": "2013-10-09T00:00:00+00:00" }, { "id": "01a0873d-4f87-73b2-af28-aed660bb42c2", "title": "Using Shared Strings to Reduce Memory Usage", "url": "https://benwendt.ca/articles/using-shared-strings-to-reduce-memory-usage/", "published_at": "2013-09-27T00:00:00+00:00" }, { "id": "01a0873d-4f87-73b2-af28-aed660d79f27", "title": "The Knuth-Morris-Pratt algorithm implemented in JavaScript", "url": "https://benwendt.ca/articles/the-knuth-morris-pratt-algorithm-implemented-in-javascript/", "published_at": "2013-09-20T00:00:00+00:00" }, { "id": "01a0873d-4f87-73b2-af28-aed6611416be", "title": "Replacing Removed Whitespace to Restore Words From a Dictionary", "url": "https://benwendt.ca/articles/fixing-strings-with-whitespace-removal/", "published_at": "2013-09-12T00:00:00+00:00" }, { "id": "01a0873d-4f87-73b2-af28-aed66133db0c", "title": "A timer class", "url": "https://benwendt.ca/articles/a-timer-class/", "published_at": "2013-09-09T00:00:00+00:00" }, { "id": "01a0873d-4f87-73b2-af28-aed66221a734", "title": "A NavigableMap inspired class for PHP", "url": "https://benwendt.ca/articles/a-navigablemap-inspired-class-for-php/", "published_at": "2013-08-26T00:00:00+00:00" }, { "id": "01a0873d-4f87-73b2-af28-aed6624bb94f", "title": "A Bloom Filter in c#", "url": "https://benwendt.ca/articles/a-bloom-filter-in-c/", "published_at": "2013-08-16T00:00:00+00:00" }, { "id": "01a0873d-4f87-73b2-af28-aed6634acea8", "title": "Skip List Implementation in PHP", "url": "https://benwendt.ca/articles/skip-list-implementation-in-php/", "published_at": "2013-08-13T00:00:00+00:00" }, { "id": "01a0873d-4f87-73b2-af28-aed66351464d", "title": "Finding near-solutions to Fermat’s Last Theorem in C#", "url": "https://benwendt.ca/articles/finding-near-solutions-to-fermats-last-theorem-in-c/", "published_at": "2013-07-26T00:00:00+00:00" }, { "id": "01a0873d-4f87-73b2-af28-aed66434ec1a", "title": "A demonstration of the usefulness of Memoization in Lua", "url": "https://benwendt.ca/articles/a-demonstration-of-the-usefulness-of-memoization-in-lua/", "published_at": "2013-07-24T00:00:00+00:00" }, { "id": "01a0873d-4f87-73b2-af28-aed6646fea46", "title": "Parsing mathematical expressions and calculating the result", "url": "https://benwendt.ca/articles/parsing-mathematical-expressions-and-calculating-the-result/", "published_at": "2013-07-19T00:00:00+00:00" }, { "id": "01a0873d-4f87-73b2-af28-aed664c8058a", "title": "Viable promises in PHP using pthreads", "url": "https://benwendt.ca/articles/viable-promises-in-php-using-pthreads/", "published_at": "2013-07-10T00:00:00+00:00" }, { "id": "01a0873d-4f87-73b2-af28-aed66532f8cd", "title": "Non-functional Sleep Sort Implemented in PHP using pthreads", "url": "https://benwendt.ca/articles/non-functional-sleep-sort-implemented-in-php-using-pthreads/", "published_at": "2013-07-08T00:00:00+00:00" }, { "id": "01a0873d-4f87-73b2-af28-aed665767895", "title": "Sleep Sort in Javascript", "url": "https://benwendt.ca/articles/sleep-sort-in-javascript/", "published_at": "2013-07-08T00:00:00+00:00" } ] posts Claim your blog
Back to benwendt.ca
Blog · corpus.blog/blogs/benwendt.ca/posts

benwendt.ca

benwendt.ca

2025

2024

2023

2022

2021

2020

2019

2018

2017

2016

2015

2014

2013