<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title></title>
    <description>Just another website</description>
    <link>/</link>
    <atom:link href="/feed.xml" rel="self" type="application/rss+xml"/>
    <pubDate>Fri, 23 Feb 2024 13:30:46 -0700</pubDate>
    <lastBuildDate>Fri, 23 Feb 2024 13:30:46 -0700</lastBuildDate>
    <generator>Jekyll v4.2.0</generator>
    
      <item>
        <title>VR Dev First Steps!</title>
        <description>&lt;style&gt;
  .featured-cover {
      width: 30%; /* Adjust as needed */
      height: auto;
      float: left; /* Align the image to the left */
      margin-right: 20px; /* Adds space between the image and the text */
  }
&lt;/style&gt;

&lt;p&gt;In the not-so-distant past, I played with VR development until I made myself sick. I thought I’d never be a tough, vertigo free, VR developer. Well those days have changed.&lt;/p&gt;

&lt;p&gt;Unity has updated and released really great tools that do the heavy lifting making VR games just as easy to make as other games. So I thought I’d try again.&lt;/p&gt;

&lt;p&gt;I found a few tutorials, some sample assets, and away I went making a Super Hot Clone, Quantum Heat. What started as a leap into the unknown turned into a new journey. I’ve had a blast playing with the tools in Unity and I’ve learned a ton about VR development. I can’t wait to see what I can make next!&lt;/p&gt;

&lt;p&gt;The project uses:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Navmesh Agents&lt;/li&gt;
  &lt;li&gt;Ragdolls&lt;/li&gt;
  &lt;li&gt;XR Interaction Toolkit&lt;/li&gt;
  &lt;li&gt;OpenXR&lt;/li&gt;
  &lt;li&gt;Assets from Valem Tutorials.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/s4lt3d/QuantumHeat&quot;&gt;GitHub Project&lt;/a&gt;&lt;/p&gt;
</description>
        <pubDate>Wed, 19 Jul 2023 15:37:00 -0600</pubDate>
        <link>/2023/07/19/VR-First-Steps.html</link>
        <guid isPermaLink="true">/2023/07/19/VR-First-Steps.html</guid>
        
        
      </item>
    
      <item>
        <title>PICO-8 Shmup!</title>
        <description>&lt;style&gt;
  .featured-cover {
      width: 30%; /* Adjust as needed */
      height: auto;
      float: left; /* Align the image to the left */
      margin-right: 20px; /* Adds space between the image and the text */
  }
&lt;/style&gt;

&lt;p&gt;A shump is a Shoot Em Up game and was one of the first genres of games I remember playing in an arcade. Playing with PICO-8 takes me back to programming games in BASIC when I was a kid. It’s a great little engine with a tiny constraints. There are only 8192 lines of code allowed in total using Lua scripting, and the sprite sheet is a mear 128x128 pixels in total. PICO-8, the “fantasy console,” has a deliberately limited set of tools that mimic the hardware and software limitations similar to gameboy color, but smaller.&lt;/p&gt;

&lt;p&gt;The charm of PICO-8 lies in its restrictions: a 128x128 pixel display in 16 colors, 32 kilobytes of space for game code and data, a sprite editor, and a simple but powerful sound editor. These aren’t hindrances but rather the limitations take out the options that overwhelm creativity. They force you to think ingeniously, optimizing every line of code and pixel to bring your game to life. This limitation is the wellspring of innovation, where game design is distilled to its purest tiny form.&lt;/p&gt;

&lt;p&gt;Creating a game in PICO-8 is a super fun journey. From conceptualizing and coding to designing graphics and composing music, this little programming environment has it all. The community around PICO-8 is amazing, offering a wealth of resources, tutorials, and shared games. Games published through Pico-8 are full source code. So games like Celeste are fully available through Splore, Pico-8’s tiny game browser. This ecosystem allows for sharing and learning, making game development an accessible and fun experience.&lt;/p&gt;

&lt;h2 id=&quot;playing-the-game-below&quot;&gt;Playing the Game Below&lt;/h2&gt;
&lt;h3 id=&quot;controls&quot;&gt;Controls&lt;/h3&gt;

&lt;p&gt;Use the Arrow Keys and the X key to shoot.&lt;/p&gt;

&lt;p&gt;Press the play button to start the game!&lt;/p&gt;

&lt;style&gt;
  .featured-cover {
      width: 30%; /* Adjust as needed */
      height: auto;
      float: left; /* Align the image to the left */
      margin-right: 20px; /* Adds space between the image and the text */
  }
&lt;/style&gt;

&lt;div style=&quot;display: flex; justify-content: center; align-items: center; height: 100vh;&quot;&gt;
    &lt;iframe src=&quot;/assets/iframe/shmup.html&quot; width=&quot;100%&quot; height=&quot;100%&quot;&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;script src=&quot;/assets/iframe/shmup.js&quot;&gt;&lt;/script&gt;

</description>
        <pubDate>Mon, 03 Apr 2023 15:37:00 -0600</pubDate>
        <link>/2023/04/03/shmup.html</link>
        <guid isPermaLink="true">/2023/04/03/shmup.html</guid>
        
        
      </item>
    
      <item>
        <title>Spine Animation Test in Unity</title>
        <description>&lt;style&gt;
  .featured-cover {
      width: 30%; /* Adjust as needed */
      height: auto;
      float: left; /* Align the image to the left */
      margin-right: 20px; /* Adds space between the image and the text */
  }
&lt;/style&gt;

&lt;p&gt;I’m so excited to have purchased a Spine license! So I made some weird little creates to play around with in Unity.&lt;/p&gt;

&lt;p&gt;A leaf-mouse creature sits idle in the corner while a cube thing with environmental triggered emotionals jumps around. Together, these animations serve as a compelling demonstration of how Spine can be leveraged in Unity to create animations that are not only visually nice, but also easily integrated with the game’s environmental.&lt;/p&gt;

&lt;div class=&quot;video-container&quot;&gt;
  &lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/Ug6pVZniBZ8&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;
&lt;/div&gt;

</description>
        <pubDate>Mon, 06 Mar 2023 14:37:00 -0700</pubDate>
        <link>/2023/03/06/spine-test.html</link>
        <guid isPermaLink="true">/2023/03/06/spine-test.html</guid>
        
        
      </item>
    
      <item>
        <title>The Office Somehow We Manage</title>
        <description>&lt;p&gt;Tap your way to record profits at Dunder Mifflin! Get down to business with Michael Scott, Jim Halpert, Pam Beesly, Kelly Kapoor, Dwight Schrute, Stanley Hudson and your Scranton branch favorites and make some sales!&lt;/p&gt;

&lt;table&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;strong&gt;Unity&lt;/strong&gt;&lt;/td&gt;
      &lt;td&gt;&lt;a href=&quot;https://play.google.com/store/apps/details?id=com.eastsidegames.theofficeswm&amp;amp;pli=1&quot;&gt;Android&lt;/a&gt;&lt;/td&gt;
      &lt;td&gt;&lt;a href=&quot;https://apps.apple.com/ca/app/the-office-somehow-we-manage/id1585729056&quot;&gt;iOS&lt;/a&gt;&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;h2 id=&quot;achievements&quot;&gt;Achievements&lt;/h2&gt;
&lt;ul&gt;
  &lt;li&gt;Lead engineer during Feature Development, Release, and Live Ops&lt;/li&gt;
  &lt;li&gt;Over 2M+ downloads from Android and iOS&lt;/li&gt;
  &lt;li&gt;Core SDK development, Leaderboards, Addressable Content Pipelines, Stability, and many other smaller features&lt;/li&gt;
  &lt;li&gt;Feature development planning, Coordination across teams&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&quot;video-container&quot;&gt;
  &lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/4Ow0HECL4Zg&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;
&lt;/div&gt;

</description>
        <pubDate>Fri, 01 Apr 2022 15:37:00 -0600</pubDate>
        <link>/2022/04/01/theoffice-swm.html</link>
        <guid isPermaLink="true">/2022/04/01/theoffice-swm.html</guid>
        
        
      </item>
    
      <item>
        <title>Dragon Up</title>
        <description>&lt;p&gt;Available exclusively for Netflix members.&lt;/p&gt;

&lt;p&gt;Hatch and collect rare dragons — then help them revive their magic in this colorful and beautifully animated idle adventure game.&lt;/p&gt;

&lt;p&gt;Save the kingdom by discovering each dragon’s unique design and personality. Some dragons — like the Pug Dragon, the Queen Dragon and the Robo Dragon — offer better rewards and moneymaking abilities.&lt;/p&gt;

&lt;table&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;strong&gt;Unity&lt;/strong&gt;&lt;/td&gt;
      &lt;td&gt;&lt;a href=&quot;https://help.netflix.com/en/node/125085&quot;&gt;Dragon Up&lt;/a&gt;&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;h2 id=&quot;achievements&quot;&gt;Achievements&lt;/h2&gt;
&lt;ul&gt;
  &lt;li&gt;Senior Engineer during development and live ops&lt;/li&gt;
  &lt;li&gt;Eastside Games first Netflix Exclusive Game&lt;/li&gt;
  &lt;li&gt;Localization supporting 30+ languages!&lt;/li&gt;
  &lt;li&gt;Optimization and stabilization to meet Netflix’s highest quality standards&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&quot;video-container&quot;&gt;
  &lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/aEVKeb4O4f4&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;
&lt;/div&gt;

</description>
        <pubDate>Wed, 01 Dec 2021 14:37:00 -0700</pubDate>
        <link>/2021/12/01/dragonup.html</link>
        <guid isPermaLink="true">/2021/12/01/dragonup.html</guid>
        
        
      </item>
    
      <item>
        <title>Archer Danger Phone</title>
        <description>&lt;p&gt;In ARCHER: DANGER PHONE, the world economy has been plunged into chaos – and the only way to survive is to lead your team of hapless spies in a global cryptocurrency operation that’s just crazy enough to work!&lt;/p&gt;

&lt;table&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;strong&gt;Unity&lt;/strong&gt;&lt;/td&gt;
      &lt;td&gt;&lt;a href=&quot;https://www.archerdangerphone.com/&quot;&gt;Archer Danger Phone&lt;/a&gt;&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;h2 id=&quot;contributed&quot;&gt;Contributed&lt;/h2&gt;
&lt;ul&gt;
  &lt;li&gt;Game balance pipeline improvements&lt;/li&gt;
  &lt;li&gt;Core sdk fixes during live ops&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&quot;video-container&quot;&gt;
  &lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/V6qfcvMW8p0&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;
&lt;/div&gt;
</description>
        <pubDate>Thu, 01 Jul 2021 15:37:00 -0600</pubDate>
        <link>/2021/07/01/archerdangerphone.html</link>
        <guid isPermaLink="true">/2021/07/01/archerdangerphone.html</guid>
        
        
      </item>
    
      <item>
        <title>Mindswap Update</title>
        <description>&lt;style&gt;
  .featured-cover {
      width: 30%; /* Adjust as needed */
      height: auto;
      float: left; /* Align the image to the left */
      margin-right: 20px; /* Adds space between the image and the text */
  }
&lt;/style&gt;

&lt;p&gt;A few years ago I made a game at a game jam called Mind Swap. A simple two player game where two mice run around a maze and have half of their brains swapped. In other words, the horizontal controls for the two players change. One player controls half of the other player’s mouse. A weird concept but was pretty fun to watch people figure it out.&lt;/p&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
Here&apos;s some of the progress I made refining the game further after the jam.&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;iframe allowfullscreen=&quot;&quot; class=&quot;YOUTUBE-iframe-video&quot; data-thumbnail-src=&quot;https://img.youtube.com/vi/bkxGPcpoWZo/maxresdefault.jpg&quot; frameborder=&quot;0&quot; height=&quot;532&quot; src=&quot;https://www.youtube.com/embed/bkxGPcpoWZo?feature=player_embedded&quot; width=&quot;640&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
</description>
        <pubDate>Mon, 07 Jun 2021 15:37:00 -0600</pubDate>
        <link>/2021/06/07/mindswap-update.html</link>
        <guid isPermaLink="true">/2021/06/07/mindswap-update.html</guid>
        
        
      </item>
    
      <item>
        <title>IdleKit</title>
        <description>&lt;style&gt;
  .featured-cover {
      width: 30%; /* Adjust as needed */
      height: auto;
      float: left; /* Align the image to the left */
      margin-right: 20px; /* Adds space between the image and the text */
  }
&lt;/style&gt;

&lt;p&gt;IdleKit is a game logic framework for Unity designed to create idle games. It provides the data structures and core functionality to quickly build idle games while being easily extensible. The framework was developed with flexibility in mind and does not impose any third party technology.&lt;/p&gt;

&lt;table&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;strong&gt;Unity&lt;/strong&gt;&lt;/td&gt;
      &lt;td&gt;&lt;a href=&quot;http://docs.idlekit.io/2.1.1/&quot;&gt;IdleKit Docs&lt;/a&gt;&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;h2 id=&quot;achievements&quot;&gt;Achievements&lt;/h2&gt;
&lt;ul&gt;
  &lt;li&gt;Senior engineer during Feature Development, Release, and Live Ops&lt;/li&gt;
  &lt;li&gt;Core SDK development, Leaderboards, Addressable Content Pipelines, Payment Systems, RESTful services, and many more&lt;/li&gt;
&lt;/ul&gt;

</description>
        <pubDate>Thu, 01 Apr 2021 15:37:00 -0600</pubDate>
        <link>/2021/04/01/idlekit.html</link>
        <guid isPermaLink="true">/2021/04/01/idlekit.html</guid>
        
        
      </item>
    
      <item>
        <title>A Beginners Guide to Ruby Code Golf</title>
        <description>&lt;style&gt;
  .featured-cover {
      width: 30%; /* Adjust as needed */
      height: auto;
      float: left; /* Align the image to the left */
      margin-right: 20px; /* Adds space between the image and the text */
  }
&lt;/style&gt;

&lt;p&gt;This article, inspired by a similar tutorial about Rust, tries to go over the main features of Ruby code golf.&lt;/p&gt;

&lt;p&gt;Code Golf is a novelty to create the same functionality in a few characters as possible. This help learn the ins and outs of a language and forces you to think outside the box. It’s not very practical for production code, but it’s super fun! 
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/p&gt;
&lt;h3 id=&quot;mass-assignment&quot;&gt;Mass Assignment&lt;/h3&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;a&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;b&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;6&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id=&quot;use-less-than-instead-of-equals&quot;&gt;Use Less Than instead of Equals&lt;/h3&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;a&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;%&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;%&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h3 id=&quot;use-print-puts-or-p&quot;&gt;Use print, puts, or p&lt;/h3&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;nb&quot;&gt;print&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;puts&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;p&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id=&quot;create-arrays-using-the-shortcut-notation-w&quot;&gt;Create Arrays Using the Shortcut Notation %w&lt;/h3&gt;
&lt;p&gt;You can create arrays of strings by using the following notation:&lt;/p&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;a&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sx&quot;&gt;%w(a b c)&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;a&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;b&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;c&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id=&quot;ternary-operator-for-logic&quot;&gt;Ternary Operator for Logic&lt;/h3&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;no&quot;&gt;Statement&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;?&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;True&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;Condition&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;False&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;Condition&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Example:&lt;/p&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;a&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;10&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;?&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;big&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;small&quot;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id=&quot;scientific-notation-for-numbers&quot;&gt;Scientific Notation for Numbers&lt;/h3&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;a&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1000000&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;b&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;mf&quot;&gt;1e6&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;==&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;b&lt;/span&gt; &lt;span class=&quot;c1&quot;&gt;# true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id=&quot;tricks-with-&quot;&gt;Tricks with «&lt;/h3&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;a&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;push&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;x&lt;/span&gt;
&lt;span class=&quot;c1&quot;&gt;# becomes&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;no&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;sh&quot;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id=&quot;some-math-tricks&quot;&gt;Some math tricks&lt;/h3&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;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;i&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;
&lt;span class=&quot;c1&quot;&gt;# can be written as&lt;/span&gt;
&lt;span class=&quot;o&quot;&gt;~-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;i&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id=&quot;cloning-a-string&quot;&gt;Cloning a string&lt;/h3&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;a&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;string&quot;&lt;/span&gt;

&lt;span class=&quot;n&quot;&gt;b&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;clone&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;b&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;dup&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;b&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=+-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;a&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;b&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;b&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;a&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id=&quot;read-from-dd-instead-of-gets&quot;&gt;Read from `dd` instead of gets&lt;/h3&gt;
&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;a,*d=`dd`.split.map &amp;amp;:to_i
p d.min+d.max
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id=&quot;using-eval&quot;&gt;Using eval&lt;/h3&gt;
&lt;p&gt;While array.sum is great and shorter than array.reduce(:+), there are no similar methods for the other operators *, -, / …&lt;/p&gt;

&lt;p&gt;Joining arrays and evaling them saves some space:&lt;/p&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;a&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;

&lt;span class=&quot;n&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;reduce&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(:&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;   &lt;span class=&quot;c1&quot;&gt;# =&amp;gt; 24&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;eval&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;sc&quot;&gt;?*&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;     &lt;span class=&quot;c1&quot;&gt;# =&amp;gt; 24&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;It also removes the need to map string input to numbers first:&lt;/p&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;b&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;1 2 3 4&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;split&lt;/span&gt;

&lt;span class=&quot;n&quot;&gt;b&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;map&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;:to_i&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;).&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;reduce&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(:&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;eval&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;b&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;sc&quot;&gt;?*&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id=&quot;predefined-variables&quot;&gt;Predefined Variables&lt;/h3&gt;
&lt;p&gt;There are a lot of predefined variables we can use. Here’s a few examples.&lt;/p&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;c1&quot;&gt;# While there are lines to get read the lines&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;gets&lt;/span&gt;
    &lt;span class=&quot;nb&quot;&gt;puts&lt;/span&gt; &lt;span class=&quot;vg&quot;&gt;$_&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&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;x&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;y&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;z&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;gets&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;split&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;map&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;:to_i&lt;/span&gt;
&lt;span class=&quot;c1&quot;&gt;# Or written as&lt;/span&gt;
&lt;span class=&quot;vg&quot;&gt;$/&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&apos; &apos;&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;y&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;z&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;vg&quot;&gt;$&amp;lt;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;map&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;:to_i&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&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;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;Variable&lt;/th&gt;
      &lt;th&gt;Description&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$! &lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;The last exception object raised. The exception object can also be accessed using =&amp;gt; in rescue clause.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$@ &lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;The stack backtrace for the last exception raised. The stack backtrace information can retrieved by Exception#backtrace method of the last exception.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$/ &lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;The input record separator (newline by default). gets, readline, etc., take their input record separator as optional argument.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$\ &lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;The output record separator (nil by default).&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$, &lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;The output separator between the arguments to print and Array#join (nil by default). You can specify separator explicitly to Array#join.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$;&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;The default separator for split (nil by default). You can specify separator explicitly for String#split.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$.&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;The number of the last line read from the current input file. Equivalent to ARGF.lineno.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$&amp;lt;&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;Synonym for ARGF.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$&amp;gt; &lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;Synonym for $defout.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$0&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;The name of the current Ruby program being executed.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$$&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;The process pid of the current Ruby program being executed.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$?&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;The exit status of the last process terminated.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$defout&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;The destination output for print and printf ($stdout by default).&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$F&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;Receives the output from split when -a is specified. This variable is set if the -a command-line option is specified along with the -p or -n option.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$stdin&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;Standard input (STDIN by default).&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$stdout&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;Standard output (STDOUT by default).&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$stderr&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;Standard error (STDERR by default).&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$VERBOSE&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;True if the -v, -w, or –verbose command-line option is specified.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$- x&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;The value of interpreter option -x (x=0, a, d, F, i, K, l, p, v). These options are listed below&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$-0&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;The value of interpreter option -x and alias of $/.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$-a&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;The value of interpreter option -x and true if option -a is set. Read-only.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$-d&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;The value of interpreter option -x and alias of $DEBUG&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$-F&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;The value of interpreter option -x and alias of $;.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$-i&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;The value of interpreter option -x and in in-place-edit mode, holds the extension, otherwise nil. Can enable or disable in-place-edit mode.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$-I&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;The value of interpreter option -x and alias of $:.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$-l&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;The value of interpreter option -x and true if option -lis set. Read-only.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$-p&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;The value of interpreter option -x and true if option -pis set. Read-only.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$_&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;The local variable, last string read by gets or readline in the current scope.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$~&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;The local variable, MatchData relating to the last match. Regex#match method returns the last match information.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$n&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;The string matched in the nth group of the last pattern match. Equivalent to m[n], where m is a MatchData object.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$&amp;amp;&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;The string matched in the last pattern match. Equivalent to m[0], where m is a MatchData object.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$`&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;The string preceding the match in the last pattern match. Equivalent to m.pre_match, where m is a MatchData object.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$&apos;&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;The string following the match in the last pattern match. Equivalent to m.post_match, where m is a MatchData object.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$+&lt;/code&gt;&lt;/td&gt;
      &lt;td&gt;The string corresponding to the last successfully matched group in the last pattern match.&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;p&gt;More links for code golf in ruby
&lt;a href=&quot;https://codegolf.stackexchange.com/questions/363/tips-for-golfing-in-ruby?page=2&amp;amp;tab=votes&quot;&gt;Stack Exchange&lt;/a&gt;&lt;/p&gt;
</description>
        <pubDate>Sat, 18 Jan 2020 04:44:00 -0700</pubDate>
        <link>/blog/2020/01/18/ruby-golf.html</link>
        <guid isPermaLink="true">/blog/2020/01/18/ruby-golf.html</guid>
        
        <category>code</category>
        
        
        <category>blog</category>
        
      </item>
    
      <item>
        <title>MindSwap - First place winner at MADJAM 2015 Unity Jam</title>
        <description>&lt;style&gt;
  .featured-cover {
      width: 30%; /* Adjust as needed */
      height: auto;
      float: left; /* Align the image to the left */
      margin-right: 20px; /* Adds space between the image and the text */
  }
&lt;/style&gt;

&lt;p&gt;Another MADJAM video game making event has happened and this time we’ve taken first place with the game MindSwap! This MADJAM event was sponsored by &lt;a href=&quot;http://unity3d.com/&quot;&gt;Unity&lt;/a&gt; and the theme was “A meeting of minds.”&lt;br /&gt;
&lt;br /&gt;
The game features two mice who have to work together to solve a series of puzzles. The game is played with two players who have to work together when the mice’s minds swap. The swap changes the controls and the players frantrically try to coordinate moves through the puzzles.&lt;br /&gt;
&lt;br /&gt;
Play the game online from the offical MADJAM website. &lt;br /&gt;
&lt;br /&gt;&lt;/p&gt;
&lt;strike&gt;&lt;a href=&quot;http://madjam.ca/game/26&quot;&gt;http://madjam.ca/game/26&lt;/a&gt;&amp;nbsp;&lt;/strike&gt;
&lt;p&gt;The site no longer exists.&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://blog.madsoftgames.com/post/135274031120/madjam-2015-summary&quot;&gt;http://blog.madsoftgames.com/post/135274031120/madjam-2015-summary&lt;/a&gt;&lt;/p&gt;
</description>
        <pubDate>Tue, 28 Jul 2015 20:25:00 -0600</pubDate>
        <link>/2015/07/28/mindswap-first-place-winner-at-madjam.html</link>
        <guid isPermaLink="true">/2015/07/28/mindswap-first-place-winner-at-madjam.html</guid>
        
        
      </item>
    
  </channel>
</rss>
