<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Ruby Tuesday</title>
    <description></description>
    <link>https://rubytuesday.katafrakt.me/</link>
    <atom:link href="https://rubytuesday.katafrakt.me/feed.xml" rel="self" type="application/rss+xml"/>
    <pubDate>Tue, 28 Jan 2020 21:23:33 +0100</pubDate>
    <lastBuildDate>Tue, 28 Jan 2020 21:23:33 +0100</lastBuildDate>
    <generator>Jekyll v4.0.0.pre.alpha1</generator>
    
      <item>
        <title>Issue #19</title>
        <description>&lt;ul&gt;
  &lt;li&gt;Remember &lt;a href=&quot;https://sorbet.org/&quot;&gt;Sorbet&lt;/a&gt;? It gained a lot of attention last year, but was kind of forgotten quickly. Especially now that built-in type ckecking for Ruby is promised in 3.0, its future is unknown. However, if you’d like to know more about the meat, read an article explaining &lt;a href=&quot;https://blog.nelhage.com/post/why-sorbet-is-fast/&quot;&gt;why Sorbet typechecking is fast&lt;/a&gt;. It’s a good technical read.&lt;/li&gt;
  &lt;li&gt;For those who like very technical articles, here’s a piece about Ruby’s JIT and how it can be better/different. It’s called &lt;a href=&quot;https://developers.redhat.com/blog/2020/01/20/mir-a-lightweight-jit-compiler-project/&quot;&gt;MIR: A lightweight JIT compiler project&lt;/a&gt; and contains quite a lot of knowledge about language design and implementation.&lt;/li&gt;
  &lt;li&gt;Another one in language implementation department is about &lt;a href=&quot;https://ilyabylich.svbtle.com/evaluating-ruby-in-ruby&quot;&gt;Evaluating Ruby in Ruby&lt;/a&gt; by Ilya Bylich.&lt;/li&gt;
  &lt;li&gt;Machine learning and related topics are dominated by Python, C++ and Java. But it does not mean that we can’t have it in Ruby too! Andrew Kane spent a lot 5 months making 16 ML tools available for Ruby. They are usually just wrappers on C/C++ libraries, but the possibility to use them right from your ruby code is pretty cool. &lt;a href=&quot;https://ankane.org/new-ml-gems&quot;&gt;Read more here&lt;/a&gt;.&lt;/li&gt;
  &lt;li&gt;Here’s one from 2010, but still very interesting: &lt;a href=&quot;http://weblog.jamisbuck.org/2010/12/29/maze-generation-eller-s-algorithm&quot;&gt;Maze Generation: Eller’s Algorithm&lt;/a&gt;. You’d probably hate me but… it’s about generating mazes using Eller’s algorithm ¯_(ツ)_/¯ And the code is in Ruby, so it should be easier to wrap your head around it (it was for me).&lt;/li&gt;
  &lt;li&gt;And a news from today: if you care about code coverage, you have probably heard about SimpleCov. With its &lt;a href=&quot;https://github.com/colszowka/simplecov/releases/tag/v0.18.0&quot;&gt;latest realease&lt;/a&gt; it adds branch coverage. So you will no longer easily get away with &lt;code class=&quot;highlighter-rouge&quot;&gt;false ? 1 : 0&lt;/code&gt;-like code.&lt;/li&gt;
&lt;/ul&gt;
</description>
        <pubDate>Tue, 28 Jan 2020 02:00:00 +0100</pubDate>
        <link>https://rubytuesday.katafrakt.me/issues/2020/01/28/issue-19/</link>
        <guid isPermaLink="true">https://rubytuesday.katafrakt.me/issues/2020/01/28/issue-19/</guid>
        
        
        <category>issues</category>
        
      </item>
    
      <item>
        <title>Issue #18</title>
        <description>&lt;p&gt;Hey! It’s been a while, but we’re back. Here are some interesting bits that happend in off Rails world lately:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Eventide 2.0 &lt;a href=&quot;https://blog.eventide-project.org/articles/announcing-eventide-v2/&quot;&gt;has been released&lt;/a&gt;. If you haven’t heard about it yet, it’s a collection of libraries implementing event sourcing, CQRS and Pub/Sub for Ruby. It is fairly complex and documentation is still missing a straightforward tutorial, but it’s worth looking at and knowing that it’s actively developed.&lt;/li&gt;
  &lt;li&gt;If you think the world is missing yet another static website generator, you might take a look at &lt;a href=&quot;https://github.com/artagnon/clayoven&quot;&gt;Clayoven&lt;/a&gt;. It has been developed mostly by one person over the course of 7 years and presents some interesting approaches (for one, it’s much less blog-focused, which really speak to me).&lt;/li&gt;
  &lt;li&gt;Also in department of one-person-awesome-projects, there is &lt;a href=&quot;https://github.com/nornec/midinous&quot;&gt;Midinous&lt;/a&gt;. It’s interesting, because it’s a GUI project, which is quite rare in Ruby world, and it’s about generating music, which aside from &lt;a href=&quot;https://sonic-pi.net/&quot;&gt;Sonic Pi&lt;/a&gt;, is also quite unique topic.&lt;/li&gt;
  &lt;li&gt;If &lt;a href=&quot;http://katafrakt.me/2019/06/15/im-worried-about-ruby-future/&quot;&gt;you are worried about Ruby future&lt;/a&gt;, like me, you may also read a rant-ish post from Bozhidar Batsov, creator of Rubocop. He expresses his doubts in &lt;em&gt;&lt;a href=&quot;https://metaredux.com/posts/2019/12/06/ruby-where-do-we-go-now.html&quot;&gt;Ruby, Where do We Go Now?&lt;/a&gt;&lt;/em&gt;. There is also an &lt;a href=&quot;https://www.reddit.com/r/ruby/comments/e6ye3t/ruby_where_do_we_go_now/&quot;&gt;interesting discussion&lt;/a&gt; on Reddit.&lt;/li&gt;
  &lt;li&gt;If you want to impress your fellow senior Ruby developers, try those &lt;em&gt;&lt;a href=&quot;https://citizen428.net/blog/ruby_literals_you_may_not_know/&quot;&gt;Ruby Literals You May Not Know&lt;/a&gt;&lt;/em&gt; from Michael Kohl.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That’s it for today. And see you, hopefully soon!&lt;/p&gt;
</description>
        <pubDate>Tue, 17 Dec 2019 02:00:00 +0100</pubDate>
        <link>https://rubytuesday.katafrakt.me/issues/2019/12/17/issue-18/</link>
        <guid isPermaLink="true">https://rubytuesday.katafrakt.me/issues/2019/12/17/issue-18/</guid>
        
        
        <category>issues</category>
        
      </item>
    
      <item>
        <title>Issue #17</title>
        <description>&lt;ul&gt;
  &lt;li&gt;Jekyll, a blog-aware static site generator, is &lt;strong&gt;&lt;a href=&quot;https://jekyllrb.com/news/2019/03/18/jekyll-4-0-0-pre-alpha1-released/&quot;&gt;approaching version 4.0.0&lt;/a&gt;&lt;/strong&gt;. Alpha release is available now and it addresses one of the most painful part of Jekyll: slow render times with many pages. Ruby Tuesday webpage is powered by Jekyll, by the way. Jekyll 4.0.0.pre.alpha1 since today.&lt;/li&gt;
  &lt;li&gt;It’s still several months left unitl the release of Ruby 2.7, but we already have one cool feature merged: shorthand syntax for accessing parameters in block a.k.a. &lt;strong&gt;&lt;a href=&quot;https://medium.com/@baweaver/ruby-2-7-numbered-parameters-3f5c06a55fe4&quot;&gt;numbered parameters&lt;/a&gt;&lt;/strong&gt; This feels to be taken &lt;a href=&quot;https://elixirschool.com/en/lessons/basics/functions/#the--shorthand&quot;&gt;straight from Elixir&lt;/a&gt; but it works well there and I think it should work well in ruby too, unless people abuse it. So, goodbye &lt;code class=&quot;highlighter-rouge&quot;&gt;array.map { |elem| my_transformation(elem) }&lt;/code&gt;, hello &lt;code class=&quot;highlighter-rouge&quot;&gt;array.map { my_transformation(@1) }&lt;/code&gt;!&lt;/li&gt;
  &lt;li&gt;Before Amazon started supporting Ruby in its Lambda serverless framework we already had a solution for Ruby: faastRuby. It has not been formotten and is still in active development. Recently, it introduced &lt;a href=&quot;https://faastruby.io/blog/build-serverless-apps-with-faastruby-0-5/&quot;&gt;local environment to test you functions&lt;/a&gt;, which should facilitate development a lot.&lt;/li&gt;
  &lt;li&gt;If you are an “old” Ruby developer, you might remember Why The Lucky Stiff - “a Ruby artist” as some called him and author of the book “Why’s (poignant) Guide to Ruby”. He went off the grid after someone revealed his identity in 2009. Ten years later, a documentary about his legacy &lt;strong&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=64anPPVUw5U&quot;&gt;has been published&lt;/a&gt;&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
</description>
        <pubDate>Tue, 19 Mar 2019 02:00:00 +0100</pubDate>
        <link>https://rubytuesday.katafrakt.me/issues/2019/03/19/issue-17/</link>
        <guid isPermaLink="true">https://rubytuesday.katafrakt.me/issues/2019/03/19/issue-17/</guid>
        
        
        <category>issues</category>
        
      </item>
    
      <item>
        <title>Issue #16</title>
        <description>&lt;ul&gt;
  &lt;li&gt;Ruby can be weird. Don’t take my word for it. Instead, read this cool post called, well, &lt;a href=&quot;https://engineering.culturehq.com/posts/2019-02-14-weird-ruby&quot;&gt;Weird Ruby&lt;/a&gt;. A have already knew quite the few of things listed there, but still some blew my mind.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://deliveroo.engineering/2019/02/14/moving-from-ruby-to-rust.html&quot;&gt;Moving from Ruby to Rust&lt;/a&gt; is… Wait. Am I including a post about abandoning Ruby in a Ruby newsletter?! Kind of. But I prefer to see this post as an introduction to offloading your performance-critical code to a better performing language (Rust in this case) and call it from you Ruby code. Unlike many similar intruductory posts, Deliveroo actually did it in production and share their experience.&lt;/li&gt;
  &lt;li&gt;dry-validation is one of most recognizable project from dry-rb team. It is going through quite a rewrite at the moment. Another gem, &lt;a href=&quot;https://github.com/dry-rb/dry-schema&quot;&gt;dry-schema&lt;/a&gt;, has been extracted from it and new dry-validation was written on top of it. Now it’s almost ready. &lt;a href=&quot;https://github.com/dry-rb/dry-validation/releases&quot;&gt;Alpha version is released&lt;/a&gt; and you are welcome to test it.&lt;/li&gt;
&lt;/ul&gt;
</description>
        <pubDate>Tue, 05 Mar 2019 02:00:00 +0100</pubDate>
        <link>https://rubytuesday.katafrakt.me/issues/2019/03/05/issue-16/</link>
        <guid isPermaLink="true">https://rubytuesday.katafrakt.me/issues/2019/03/05/issue-16/</guid>
        
        
        <category>issues</category>
        
      </item>
    
      <item>
        <title>Issue #15</title>
        <description>&lt;ul&gt;
  &lt;li&gt;It has already been some time, but I cannot not mention it. &lt;a href=&quot;https://www.ruby-lang.org/en/news/2018/12/25/ruby-2-6-0-released/&quot;&gt;Ruby 2.6 has been released&lt;/a&gt; on Christmas. And one very serious bug with &lt;code class=&quot;highlighter-rouge&quot;&gt;Net::Protocol&lt;/code&gt; &lt;a href=&quot;https://mensfeld.pl/2019/01/exploring-a-critical-netprotocol-issue-in-ruby-2-6-0p0-and-how-it-can-lead-to-a-security-problem/&quot;&gt;has already been found&lt;/a&gt;.&lt;/li&gt;
  &lt;li&gt;Speaking of bugs, do you know how to crash Ruby 2.5 virtual machine in very few lines of code? Paweł Pacana &lt;a href=&quot;https://bugs.ruby-lang.org/issues/15385&quot;&gt;certainly knows&lt;/a&gt;. It’s as simple as those &lt;strong&gt;six&lt;/strong&gt; lines of code:&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;
def doh
  raise
ensure
  123 if false
end
doh
&lt;/pre&gt;
&lt;ul&gt;
  &lt;li&gt;Back to the good things. I have two concurrency-related posts for you:
    &lt;ul&gt;
      &lt;li&gt;First one is &lt;a href=&quot;https://blog.drewolson.org/concurrent-ruby-with-tasks&quot;&gt;about Task monad&lt;/a&gt;, coming from excellent &lt;code class=&quot;highlighter-rouge&quot;&gt;dry-monads&lt;/code&gt; gem. I never knew such solution existed there. A very interested read.&lt;/li&gt;
      &lt;li&gt;Second presents more traditional, yet frequently overlooked, approach: &lt;a href=&quot;https://www.codeotaku.com/journal/2018-11/fibers-are-the-right-solution/index&quot;&gt;Fibers Are the Right Solution&lt;/a&gt;.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Law of Demeter, one on the foundations of SOLID principles, is a very misunderstood one. Many people treat it just as “counting dots” in your code. And they couldn’t be more wrong. Rebased takes you &lt;a href=&quot;https://blog.rebased.pl/2018/12/18/101-law-of-demeter.html&quot;&gt;on the tour&lt;/a&gt; about LoD in Ruby, using Sinatra application as the example.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Happy coding in 2019!&lt;/p&gt;
</description>
        <pubDate>Tue, 15 Jan 2019 02:00:00 +0100</pubDate>
        <link>https://rubytuesday.katafrakt.me/issues/2019/01/15/issue-15/</link>
        <guid isPermaLink="true">https://rubytuesday.katafrakt.me/issues/2019/01/15/issue-15/</guid>
        
        
        <category>issues</category>
        
      </item>
    
      <item>
        <title>Issue #14</title>
        <description>&lt;p&gt;Welcome after the summer break!&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Good time are coming for Ruby on serverless infrastructure. In September &lt;a href=&quot;https://medium.com/openwhisk/ruby-goes-serverless-apache-openwhisk-adds-native-support-for-ruby-7134faee14e&quot;&gt;support for Ruby on Apache OpenWhisk&lt;/a&gt; was announced. But we already have another option: &lt;a href=&quot;https://faastruby.io/&quot;&gt;FaaStRuby&lt;/a&gt;. It’s a platform designed specifically for Ruby language, it’s still young, but growing fast. For example, last weekend a support for cron-like jobs was added – something that is missing in even more mature platforms, such as OpenFaaS.&lt;/li&gt;
  &lt;li&gt;If you really hate JavaScript and love Ruby, you can use the latter for writing frontend too! There is a project called &lt;a href=&quot;https://hyperstack.org/&quot;&gt;Hyperstack&lt;/a&gt; that allows you to write frontend applications using quite ugly Ruby DSL. It is then compiled via Opal to some ReactJS, powered by Webpack. The stack looks pretty good. And it’s recommended to use FaaStRuby to perform some backend tasks, having full serverless webapps written in Ruby.&lt;/li&gt;
  &lt;li&gt;However, if you are still into plain old code-writing, you can keep an eye at &lt;a href=&quot;http://rocket-science.ru/hacking/2018/10/11/dry-behaviour-better-error-handling-and-implicit-inheritance&quot;&gt;dry-behaviour&lt;/a&gt; project. It aims at bringing the power of Elixir protocols to Ruby and looks interesting. It’s not officially part of dry-rb though (don’t get mislead by its name).&lt;/li&gt;
  &lt;li&gt;Another feature pulled from other languages is destructuring. &lt;a href=&quot;https://medium.com/@baweaver/destructuring-in-ruby-9e9bd2be0360&quot;&gt;This blog post&lt;/a&gt; provides a detailed description on how to have it in Ruby and why it can be cool. Even if destructuring is not you favourite flavour, it’s worth checking out.&lt;/li&gt;
  &lt;li&gt;For a (not too) deep dive into Ruby internals, read &lt;a href=&quot;https://supergood.software/statements-and-expressions/&quot;&gt;Statements and Expressions in Ruby&lt;/a&gt; and learn what’s the difference between those two and what consequencec it has.&lt;/li&gt;
&lt;/ul&gt;
</description>
        <pubDate>Tue, 23 Oct 2018 03:00:00 +0200</pubDate>
        <link>https://rubytuesday.katafrakt.me/issues/2018/10/23/issue-14/</link>
        <guid isPermaLink="true">https://rubytuesday.katafrakt.me/issues/2018/10/23/issue-14/</guid>
        
        
        <category>issues</category>
        
      </item>
    
      <item>
        <title>Issue #13</title>
        <description>&lt;p&gt;This time I want to start with two posts I wrote in the meantime:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://katafrakt.me/2018/06/06/hidden-jewels-ruby-stdlib/&quot;&gt;Hidden gems of Ruby stdlib&lt;/a&gt;&lt;/strong&gt; explores less-known feature and classes Ruby is shipped with. I don’t know if you’ll ever need them, but it’s at least good to know that they are there, ready to be picked. And by the way, some people &lt;a href=&quot;https://twitter.com/maciejmensfeld/status/1015650198280900608&quot;&gt;are actually using those&lt;/a&gt;.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://katafrakt.me/2018/07/04/writing-service-objects/&quot;&gt;Notes on writing Service Objects&lt;/a&gt;&lt;/strong&gt; is a summary of practices I try to follow when writing SOs - most popular Ruby refactoring technique right now. Since there is no formal definition of them, I think it’s a good way to establish some boundaries and rules about how they should look.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But let’s not talk about me. There are other things worth noticing lately.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://twin.github.io/httprb-is-great/&quot;&gt;Http.rb is Great&lt;/a&gt;&lt;/strong&gt; might be yet another comparisoon of what you can use to perform HTTP requests in Ruby, but it’s a very good one. Even though the title contains spoiler.&lt;/li&gt;
  &lt;li&gt;Joe Leo at GORUCO conference had a very good lightning talk (?) about how to write Ruby in 2018 and why we should all be excited of what is to come. &lt;a href=&quot;https://www.youtube.com/watch?v=VjR3GU0-vpc&amp;amp;feature=youtu.be&quot;&gt;Watch it here&lt;/a&gt;.&lt;/li&gt;
  &lt;li&gt;If you still want to look into Ruby internals, check out &lt;a href=&quot;https://medium.com/@farsi_mehdi/the-forwardable-module-in-ruby-part-i-d83d9063b4f4&quot;&gt;a blog post about Forwardable module&lt;/a&gt;.&lt;/li&gt;
  &lt;li&gt;Remeber TruffleRuby? Yes, the one that promised high speed and working with all popular C extenstions. Now &lt;a href=&quot;https://github.com/oracle/truffleruby/blob/master/doc/user/ruby-managers.md#installing-truffleruby-with-rvm-ruby-build-or-ruby-install&quot;&gt;you can install it via RVM, Rbenv&lt;/a&gt; or other version managers for Ruby. So, no more excuses not to try it!&lt;/li&gt;
  &lt;li&gt;I think some of us might have seen live music coding session by Nicolas Dermine in Sonic Pi. If you haven’t - &lt;a href=&quot;https://www.youtube.com/watch?v=5cZfqXiivdA&quot;&gt;check this out&lt;/a&gt;. But if you want a gentle textual introduction to Sonic Pi, &lt;a href=&quot;https://www.twilio.com/blog/2018/05/generating-music-with-sonic-pi-and-ruby.html&quot;&gt;here’s a nice blog post&lt;/a&gt; on Twillio blog.&lt;/li&gt;
&lt;/ul&gt;
</description>
        <pubDate>Tue, 17 Jul 2018 03:00:00 +0200</pubDate>
        <link>https://rubytuesday.katafrakt.me/issues/2018/07/17/issue-13/</link>
        <guid isPermaLink="true">https://rubytuesday.katafrakt.me/issues/2018/07/17/issue-13/</guid>
        
        
        <category>issues</category>
        
      </item>
    
      <item>
        <title>Issue #12</title>
        <description>&lt;p&gt;Welcome back after a longer break! I feel like much less things were happening in Ruby in recent weeks and there was not enough material to share here. And since I don’t want to force frequent issues over the quality, I decided to wait until the content queue fills up.&lt;/p&gt;

&lt;p&gt;Let’s start with two posts from Janko Marohnić:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;First one is quite old and it is a introductory post about &lt;strong&gt;&lt;a href=&quot;https://twin.github.io/imageprocessing-1-0-released/&quot;&gt;ImageProcessing&lt;/a&gt;&lt;/strong&gt; – his library to, well, process images. It reached 1.0 in April and Janko shares why he created it and how it’s different/better than existing solutions.&lt;/li&gt;
  &lt;li&gt;More recent post is a &lt;a href=&quot;https://twin.github.io/httprb-is-great/&quot;&gt;roundup of existing HTTP client libraries&lt;/a&gt; with some comparisons and a compelling analysis why &lt;a href=&quot;https://github.com/httprb/http&quot;&gt;http.rb&lt;/a&gt; is (maybe) the best of them.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Other things:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;You probably have heard about guilds coming in Ruby 3. Today first code was revealed in one of the forks, owned by Koichi Sasada. &lt;a href=&quot;https://github.com/ruby/ruby/compare/trunk...ko1:guild&quot;&gt;Here is a comparison&lt;/a&gt; against master. Be warned though that it’s C code and understanding it is not necessarily easy.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://medium.com/byteconf/stripe-is-building-a-ruby-typechecker-d6cd7cee6abf&quot;&gt;Stripe is building a Ruby typechecker&lt;/a&gt;. This is actually a big news as many people think that some level of typechecking is necessary in larger codebases. This solution, called Sorbet, is written in C++, is quite fast (they are talking 100k lines per second) and is something like TypeScript for JavaScript. For now you can &lt;a href=&quot;https://sorbet.run/&quot;&gt;try it out online&lt;/a&gt; but nothing more has been revealed so far.&lt;/li&gt;
  &lt;li&gt;Luca Guidi wrote a pretty cool post about &lt;a href=&quot;https://blog.dnsimple.com/2018/05/simple-async-map-reduce-queue-for-ruby/&quot;&gt;implementing async map/reduce queue in pure Ruby&lt;/a&gt;. I’m especially fond of it because I lately started to think that we rely too much on external tools (such as Sidekiq for &lt;strong&gt;any kind&lt;/strong&gt; of asynchronous things) when chances are we could easily write something better-suited ourselves.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;My small contibution:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;I reviewed &lt;a href=&quot;https://github.com/ddnexus/pagy&quot;&gt;Pagy&lt;/a&gt; – “the ultimate pagination ruby gem” – which made all the news some time ago. More precisely, I tried to &lt;a href=&quot;http://katafrakt.me/2018/06/01/integrating-pagy-with-hanami/&quot;&gt;integrate it with Hanami&lt;/a&gt; and find answer to a question: it it really as ORM-agnostic and as working-with-any-framework as advertised?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Thanks for reading!&lt;/p&gt;
</description>
        <pubDate>Tue, 05 Jun 2018 03:00:00 +0200</pubDate>
        <link>https://rubytuesday.katafrakt.me/issues/2018/06/05/issue-12/</link>
        <guid isPermaLink="true">https://rubytuesday.katafrakt.me/issues/2018/06/05/issue-12/</guid>
        
        
        <category>issues</category>
        
      </item>
    
      <item>
        <title>Issue #11</title>
        <description>&lt;ul&gt;
  &lt;li&gt;
    &lt;div class=&quot;language-ruby highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;n&quot;&gt;start&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;Time&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;now&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;heavy_operation&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;time_taken&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;Time&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;now&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;start&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;    &lt;/div&gt;
    &lt;p&gt;Have you ever written a code like that? I most certainly did. Turns out it’s all wrong. Why and how to make it better? &lt;a href=&quot;https://blog.dnsimple.com/2018/03/elapsed-time-with-ruby-the-right-way/&quot;&gt;Read and explanation&lt;/a&gt; by Luca Guidi, author of Hanami framework.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;Integer overflow is sooooo C, right? What if I told you it could affect Ruby and was fixed only recently? Read the whole story &lt;a href=&quot;https://blog.sqreen.io/buffer-under-read-ruby/&quot;&gt;here&lt;/a&gt;.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Rack::Reducer&lt;/strong&gt; is a new gem to help you write queries with filters from query params applied. Designed for ActiveRecord, it can also be user with Sequel, Hanami, ROM etc. Here’s an &lt;a href=&quot;https://dev.to/chrisfrank/dynamically-filter-data-via-url-params-with-rackreducer-9p6&quot;&gt;introductory blog post&lt;/a&gt; about it.&lt;/li&gt;
  &lt;li&gt;If you need to maintain communication between couple of microservices, chances are you’d use HTTP. And probably it’s not the best choice. There are many tools better fit for the job. One of them is gRPC from Google, based on Protocol Buffers. Here’s a &lt;a href=&quot;http://gustavocaso.github.io/2018/03/grpc-tutorial-with-ruby/&quot;&gt;tutorial&lt;/a&gt; on how to use it with Ruby.&lt;/li&gt;
  &lt;li&gt;Wanna use value objects? (They told us that it’s a very first step towards DDD.) You may want to read a &lt;a href=&quot;https://github.com/zverok/good-value-object&quot;&gt;crowdsourced list&lt;/a&gt; of best practices when doing so.&lt;/li&gt;
  &lt;li&gt;Bradley Schaefer talks about an antipatter we didn’t even know exists. But it’s there: &lt;a href=&quot;http://www.soulcutter.com/articles/local-variable-aversion-antipattern.html&quot;&gt;The Local Variable Aversion Antipattern&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
</description>
        <pubDate>Tue, 03 Apr 2018 03:00:00 +0200</pubDate>
        <link>https://rubytuesday.katafrakt.me/issues/2018/04/03/issue-11/</link>
        <guid isPermaLink="true">https://rubytuesday.katafrakt.me/issues/2018/04/03/issue-11/</guid>
        
        
        <category>issues</category>
        
      </item>
    
      <item>
        <title>Issue #10</title>
        <description>&lt;p&gt;Hello! This issue will be dominated by the fact that last weekend I attended awesome &lt;a href=&quot;https://wrocloverb.com&quot;&gt;wroc_love.rb&lt;/a&gt; conference. Besides listening to some really good talks, I also learned (or was reminded) about a couple of really cool gems I want to share with you:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://eventide-project.org&quot;&gt;Eventide&lt;/a&gt;&lt;/strong&gt; – it is a complete solution for Event Sourcing in Ruby, supporting Event Store and PostgreSQL as backend&lt;/li&gt;
  &lt;li&gt;We all know about ActionCable in Rails, most of us also know that &lt;a href=&quot;https://github.com/anycable/anycable&quot;&gt;AnyCable&lt;/a&gt; is soooo much better for the task. However, what I did not know that there is a compatible replacement for non-Rails Rack applications called &lt;strong&gt;&lt;a href=&quot;https://github.com/palkan/litecable&quot;&gt;LiteCable&lt;/a&gt;&lt;/strong&gt;. So, all your Hanami-, Sinatra-, dry-web- and what-not-based app can have it.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/boazsegev/plezi&quot;&gt;Plezi&lt;/a&gt;&lt;/strong&gt; is another, quite different, option for having Ruby-powered websocket-heavy application. It’s not a web framework per se, just for real time.&lt;/li&gt;
  &lt;li&gt;Plezi is based on &lt;strong&gt;&lt;a href=&quot;https://github.com/boazsegev/iodine&quot;&gt;Iodine&lt;/a&gt;&lt;/strong&gt; – a webserver for HTTP and WebSockets, heavily optimized for running on Linux.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/andrzejsliwa/oop-interface&quot;&gt;oop-interface&lt;/a&gt;&lt;/strong&gt; – interfaces were kind of a holy grail for years in Ruby world (similar to pattern matching lately). This is another attempt to make something similar. At first look I don’t like it much, but maybe someone will find it more useful.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/collectiveidea/interactor&quot;&gt;Interface&lt;/a&gt;&lt;/strong&gt; gem is not new. It has been around for some time and I knew it. However I never dug deep enough to find out that is has a thing called “Organizers” to make more complex workflows with interactors and has ability to define a rollback function for them. Sounds very cool.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/aishek/nihilist&quot;&gt;Nihilist&lt;/a&gt;&lt;/strong&gt; is a gem with convenience structure for null objects. However, it is so simple that you might be better off with just copying into your codebase, instead of including a gem.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/schneems/heapy&quot;&gt;Heapy&lt;/a&gt;&lt;/strong&gt; – a gem for inspecting Ruby heap dumps. Very useful when you’re trying to track some memory leak.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Also, not a gem, but spotted at the conference, there is a &lt;strong&gt;&lt;a href=&quot;http://gemcheck.evilmartians.io&quot;&gt;Gem Check&lt;/a&gt;&lt;/strong&gt; project, that aims at providing a checklist for gem authors on how to make your library as good as possible. This is a really good effort and in case you author some gems, you need to at least read it.&lt;/p&gt;
</description>
        <pubDate>Tue, 20 Mar 2018 02:00:00 +0100</pubDate>
        <link>https://rubytuesday.katafrakt.me/issues/2018/03/20/issue-10/</link>
        <guid isPermaLink="true">https://rubytuesday.katafrakt.me/issues/2018/03/20/issue-10/</guid>
        
        
        <category>issues</category>
        
      </item>
    
  </channel>
</rss>
