• The REPL: Issue 52 - November 2018

    Datomic: Event Sourcing without the hassle

    I’ve never used datomic, but I’ve seen many references to it, especially when reading about event sourcing. In this article, Val Waeselynck explains at length why Datomic is better suited to fix the pain of doing event sourcing with traditional databases. I found it very interesting, even if I am not doing any event sourcing or considering Datomic.

    Post-REST

    In this post, Tim Bray expands on what he thinks that industry is moving to, to address REST shortcopmings (e.g. latency, coupling, short life).

    • Winners: Messaging and Eventing, Orchestration, and Perssisten Connections.
    • Losers: GraphQL, and RPC.

    Building SQL expressions with Sequel

    Janko Marohnic compares the ruby libraries ActiveRecord to Sequel. They are not strictly equivalent, but I believe the comparison is fair because they both provide a way to interact with a database. I found Sequels syntax very appealing. Duly noted for future use.

    Read on →

  • Let's Encrypt and NearlyFreeSpeech.NET

    At the time of this writing, this blog is hosed on NearlyFreeSpeech.NET, and delivered securely over TLS with a certificate from Let’s Encrypt. I previously wrote about how I obtained the first certificate and how to renew it. The process is now even easier, because NearlyFreeSpeech.NET automates the setup and renewal for it’s members.

    Read on →

  • The REPL: Issue 51 - October 2018

    The Architecture No One Needs

    Greg Navis discusses why he thinks single-page applications (SPAs) are almost always worse than traditional, multi-page web application. I tend to agree: Most of the time, it adds engineering complexity for not much benefit. I think this is particularly the case when using Elixir and Phoenix, since their performance is spectacular. Phoenix Channels already provide a way for updating content on a page without reloading, and the upcoming Live View promises to make it even better.

    Elapsed time with Ruby, the right way

    This post by Luca Guidi explains with great detail how calculating elapsed time in Ruby can have it’s pitfalls. The TLDR:

    ## Don't do this:
    
    starting = Time.now
    # time consuming operation
    ending = Time.now
    elapsed = ending - starting
    elapsed # => 10.822178
    
    
    ## Do this:
    starting = Process.clock_gettime(Process::CLOCK_MONOTONIC)
    # time consuming operation
    ending = Process.clock_gettime(Process::CLOCK_MONOTONIC)
    elapsed = ending - starting
    elapsed # => 9.183449000120163
    

    Automate Repetitive Tasks with Composed Commands

    In this post, the [[Atom]] team explains how you can create composed commands from existing commands already available in your editor. This feature seems great for automating tasks. I haven’t composed any commands of my own just yet, but I think this is a great addition.

    Read on →

  • Managing Versions With asdf

    Three years ago, I switched my ruby version manager from rvm to rbenv. Since then, I’ve been using rbenv without complaint. It just works. I now find myself working on more complex projects, that needs specific version of Ruby, Elixir, Postgres, Terraform and others.

    Read on →

  • The REPL: Issue 50 - September 2018

    How to teach yourself hard things

    Julia Evans writes a great article on how to learn… to learn. In her traditional straight-forward fashion, she describes the method she has used to learn things that are difficult. She breaks the process down into approachable skills that anyone can learn (e.g ask questions, have confidence in your knowledge). I also recommend following her on twitter. She posts comics often about unix tools: I always learn something knew from them.

    Distributed Agreement on Random Order – Fun with Lamport Timestamps

    If you’ve ever done some digging into distributed computing, you will have heard of Lamport Clocks. In this post, Quentin Duval, details step by step on how to construct an application that uses Lamport’s algorithm for reaching agreement on the order of events across a distributed system.

    Upgrading GitHub from Rails 3.2 to 5.2

    Working as a Rails developer, I’ve found myself a few times in the same situation GitHub was: Relying on an old version of a framework that has now become a liability, and upgrading is anything but straight forward. In this post, Eileen Uchitelle describes the strategy that GitHub used to upgrade. I especially like the section about lessons learned: It’s one of my favorite things about the software community. The willingness to share with others allows us to learn from each other. Thanks Eileen!

    Read on →