<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Posts on Occasionally consistent</title><link>https://blog.pjam.me/posts/</link><description>Recent content in Posts on Occasionally consistent</description><generator>Hugo</generator><language>en</language><lastBuildDate>Mon, 20 Jan 2025 18:28:36 -0500</lastBuildDate><atom:link href="https://blog.pjam.me/posts/index.xml" rel="self" type="application/rss+xml"/><item><title>A basic terminal text editor, in Ruby</title><link>https://blog.pjam.me/posts/ruby-terminal-editor/</link><pubDate>Fri, 27 Dec 2024 00:00:00 -0500</pubDate><guid>https://blog.pjam.me/posts/ruby-terminal-editor/</guid><description>A basic terminal text editor, in Ruby, inspired by Antirez&amp;rsquo;s kilo text editor, written in C.</description></item><item><title>A toy Redis Server, in Clojure</title><link>https://blog.pjam.me/posts/toy-redis-clojure/</link><pubDate>Fri, 29 Dec 2023 18:36:30 -0500</pubDate><guid>https://blog.pjam.me/posts/toy-redis-clojure/</guid><description>A toy Redis server in Clojure, responding to a small subset of commands.</description></item><item><title>A toy Redis Server, in Go</title><link>https://blog.pjam.me/posts/toy-redis-go/</link><pubDate>Sat, 31 Dec 2022 00:00:00 +0000</pubDate><guid>https://blog.pjam.me/posts/toy-redis-go/</guid><description>A toy Redis server in Go, responding to a small subset of commands.</description></item><item><title>ActiveRecord caches generated queries for find_by queries</title><link>https://blog.pjam.me/posts/active-record-statement-cache/</link><pubDate>Sat, 11 Dec 2021 00:00:00 +0000</pubDate><guid>https://blog.pjam.me/posts/active-record-statement-cache/</guid><description>Active Record caches generated queries, when using &lt;code>find_by&lt;/code> and &lt;code>find&lt;/code></description></item><item><title>Data Structures, Abstractions, Time Complexity and Speed</title><link>https://blog.pjam.me/posts/data-structures-abstraction-time-complexity-and-speed/</link><pubDate>Tue, 13 Apr 2021 12:56:29 +0000</pubDate><guid>https://blog.pjam.me/posts/data-structures-abstraction-time-complexity-and-speed/</guid><description>A better time complexity does not mean faster. In this article we look at various abstractions such as Sets and Maps in different languages (and in Redis).</description></item><item><title>All Time Top 3 Pieces of Software</title><link>https://blog.pjam.me/posts/top-3/</link><pubDate>Mon, 25 Jan 2021 20:58:27 -0500</pubDate><guid>https://blog.pjam.me/posts/top-3/</guid><description>&lt;p>I was recently thinking about what would make my top three worst pieces of software I ever had to use.&lt;/p></description></item><item><title>Intent Pattern</title><link>https://blog.pjam.me/posts/intent-pattern/</link><pubDate>Tue, 08 Dec 2020 11:39:45 -0500</pubDate><guid>https://blog.pjam.me/posts/intent-pattern/</guid><description>A design pattern for robust handling of resource creation on a remote service.</description></item><item><title>Select Syscall in Rust</title><link>https://blog.pjam.me/posts/select-syscall-in-rust/</link><pubDate>Sun, 22 Nov 2020 17:29:10 -0500</pubDate><guid>https://blog.pjam.me/posts/select-syscall-in-rust/</guid><description>Using the select syscall from Rust, with the libc crate</description></item><item><title>Ruby Symbol to Proc explained, the short version</title><link>https://blog.pjam.me/posts/ruby-symbol-to-proc-the-short-version/</link><pubDate>Sat, 21 Nov 2020 17:05:48 -0500</pubDate><guid>https://blog.pjam.me/posts/ruby-symbol-to-proc-the-short-version/</guid><description>What does an ampersand followed by a symbol as an argument to a ruby method actually do? It creates a proc.</description></item><item><title>Parallel Validation for Railway Oriented Programming in Scala</title><link>https://blog.pjam.me/posts/railway-oriented-programming-scala-parallel/</link><pubDate>Wed, 15 Jul 2020 15:37:55 -0400</pubDate><guid>https://blog.pjam.me/posts/railway-oriented-programming-scala-parallel/</guid><description>A followup to the previous post about Railway Oriented Programming in Scala, adding support for parallel validations</description></item><item><title>Railway Oriented Programming in Scala</title><link>https://blog.pjam.me/posts/railway-oriented-programming-scala/</link><pubDate>Fri, 26 Jun 2020 16:34:55 -0400</pubDate><guid>https://blog.pjam.me/posts/railway-oriented-programming-scala/</guid><description>Playing with the Railway Oriented Programming concepts in scala. Translating them from F# and seeing how we can adapt them to Scala constructs. We will not mention Monads. I just did, but that was the only time.</description></item><item><title>TIL CLI</title><link>https://blog.pjam.me/posts/til-cli/</link><pubDate>Wed, 17 Jun 2020 00:00:00 +0000</pubDate><guid>https://blog.pjam.me/posts/til-cli/</guid><description>A small cli available as a ruby gem to maintain a repo of TILs</description></item><item><title>Error Handling in Scala</title><link>https://blog.pjam.me/posts/error-handling-in-scala/</link><pubDate>Sat, 04 Jan 2020 00:00:00 +0000</pubDate><guid>https://blog.pjam.me/posts/error-handling-in-scala/</guid><description>&lt;h5 id="previously-published-on-mediumhttpsmediumcompierre_jambeterror-handling-in-scala-1197a742d6a5">Previously published on &lt;a href="https://medium.com/@pierre_jambet/error-handling-in-scala-1197a742d6a5">Medium&lt;/a>&lt;/h5>
&lt;p>After a few years of using Scala to develop backend services at Harry’s, we developed a robust approach to error handling, leveraging its powerful type system. It takes advantage of the flexibility of Scala types and tries to avoid defensive programming such as aggressive exception catching and re-throwing.&lt;/p></description></item><item><title>Atomic Increment/Decrement operations in SQL and fun with locks</title><link>https://blog.pjam.me/posts/atomic-operations-in-sql/</link><pubDate>Tue, 27 Jun 2017 15:07:38 -0400</pubDate><guid>https://blog.pjam.me/posts/atomic-operations-in-sql/</guid><description>&lt;p>&lt;img src="https://blog.pjam.me/images/atomic.jpg" alt="A zipper with red &amp;amp; blue sides">&lt;/p>
&lt;h5 id="previously-published-on-mediumhttpsmediumcomharrys-engineeringatomic-increment-decrement-operations-in-sql-and-fun-with-locks-f7b124d37873">Previously published on &lt;a href="https://medium.com/harrys-engineering/atomic-increment-decrement-operations-in-sql-and-fun-with-locks-f7b124d37873">Medium&lt;/a>&lt;/h5>
&lt;p>We recently rewrote our inventory management system and managed to improve the performance while reducing the operational complexity by taking advantage of native SQL increment &amp;amp; decrement operations. In this post we’ll dive into the details and common gotchas of these operations and we’ll compare our new implementation with the previous one to highlight the benefits.&lt;/p></description></item><item><title>Mysql Utf8</title><link>https://blog.pjam.me/posts/mysql-utf8/</link><pubDate>Sat, 17 Aug 2013 15:07:47 -0400</pubDate><guid>https://blog.pjam.me/posts/mysql-utf8/</guid><description>The limitation of MySQL&amp;rsquo;s default utf8 encoding and how to use a better one</description></item><item><title>Direct Upload to S3 with CORS</title><link>https://blog.pjam.me/posts/direct-upload-to-s3/</link><pubDate>Fri, 21 Sep 2012 15:07:53 -0400</pubDate><guid>https://blog.pjam.me/posts/direct-upload-to-s3/</guid><description>Using CORS with AWS to upload files directly to S3 from a webpage using a Ruby on Rails server.</description></item></channel></rss>