CINXE.COM
TryRuby's history
<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" /> <title>TryRuby's history</title> <meta name="description" content="Learn programming with Ruby" /> <link rel="preconnect" href="https://fonts.googleapis.com" /> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin /> <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Reenie+Beanie&family=Source+Code+Pro&display=swap" /> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous" /> <link href="../../stylesheets/vendor/codemirror.css" rel="stylesheet" /> <link href="../../stylesheets/vendor/codemirror-solarized.css" rel="stylesheet" /> <link href="../../stylesheets/vendor/pygment_solarized_light.css" rel="stylesheet" /> <link href="../../stylesheets/application.css" rel="stylesheet" /> <script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.10.2/dist/umd/popper.min.js" integrity="sha384-7+zCNj/IqJ95wo16oMtfsKbZ9ccEh31eOz1HGyDuCQ6wgnyJNSYdrPa03rtR1zdB" crossorigin="anonymous" ></script> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.min.js" integrity="sha384-QJHtvGhmr9XOIpI6YVutG+2QOK9T+ZnN4kzFN1RtK3zEFEIsxhlmWl5/YESvpZ13" crossorigin="anonymous" ></script> <script src="../../javascripts/vendor/codemirror-compressed-4.8.js"></script> <script src="../../javascripts/application.js"></script> </head> <body class="tryruby-page"> <nav class="tryruby-navbar navbar navbar-expand-lg navbar-light"> <div class="container justify-content-between"> <a class="tryruby-brand navbar-brand" href="/"> Try Ruby </a> <button class="navbar-toggler tryruby-navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar-links" aria-controls="navbar-links" aria-expanded="false" aria-label="Toggle navigation" > <span class="navbar-toggler-icon"></span> </button> <div class="tryruby-navbar-links collapse navbar-collapse" id="navbar-links" > <ul class="navbar-nav"> <li class="nav-item"> <a class="nav-link" href="/playground"> Playground </a> </li> <li class="nav-item"> <a class="nav-link" href="/articles"> Articles </a> </li> <li class="nav-item"> <a class="nav-link" href="/about"> About </a> </li> <li class="nav-item dropdown"> <button class="nav-link btn dropdown-toggle language-menu-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false" title="Toggle language menu" aria-label="Toggle language menu" id="language-menu-toggle" > <svg width="20" height="20" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg" > <title>Language</title> <path d="M478.33 433.6l-90-218a22 22 0 00-40.67 0l-90 218a22 22 0 1040.67 16.79L316.66 406h102.67l18.33 44.39A22 22 0 00458 464a22 22 0 0020.32-30.4zM334.83 362L368 281.65 401.17 362zM267.84 342.92a22 22 0 00-4.89-30.7c-.2-.15-15-11.13-36.49-34.73 39.65-53.68 62.11-114.75 71.27-143.49H330a22 22 0 000-44H214V70a22 22 0 00-44 0v20H54a22 22 0 000 44h197.25c-9.52 26.95-27.05 69.5-53.79 108.36-31.41-41.68-43.08-68.65-43.17-68.87a22 22 0 00-40.58 17c.58 1.38 14.55 34.23 52.86 83.93.92 1.19 1.83 2.35 2.74 3.51-39.24 44.35-77.74 71.86-93.85 80.74a22 22 0 1021.07 38.63c2.16-1.18 48.6-26.89 101.63-85.59 22.52 24.08 38 35.44 38.93 36.1a22 22 0 0030.75-4.9z" /> </svg> </button> <div class="dropdown-menu dropdown-menu-end" aria-labelledby="language-menu-toggle" > <button class="dropdown-item" data-change-lang="en" aria-controls="tryruby-content" > English </button> <button class="dropdown-item" data-change-lang="nl" aria-controls="tryruby-content" > Nederlands </button> <button class="dropdown-item" data-change-lang="es" aria-controls="tryruby-content" > Español </button> <button class="dropdown-item" data-change-lang="pt-br" aria-controls="tryruby-content" > Português do Brasil </button> <button class="dropdown-item" data-change-lang="ja" aria-controls="tryruby-content" > 日本語 </button> <button class="dropdown-item" data-change-lang="ru" aria-controls="tryruby-content" > Русский </button> <button class="dropdown-item" data-change-lang="ua" aria-controls="tryruby-content" > Українська </button> <button class="dropdown-item" data-change-lang="mk" aria-controls="tryruby-content" > Македонски </button> <button class="dropdown-item" data-change-lang="zh" aria-controls="tryruby-content" > 中文 </button> <button class="dropdown-item" data-change-lang="de" aria-controls="tryruby-content" > Deutsch </button> <button class="dropdown-item" data-change-lang="tr" aria-controls="tryruby-content" > Türkçe </button> <button class="dropdown-item" data-change-lang="fr" aria-controls="tryruby-content" > Français </button> </div> </li> </ul> </div> </div> </nav> <div class="container mt-4"> <h2>History</h2> <p>This is the fourth iteration of the TryRuby website. TryRuby was originally created by a famous Ruby enthusiast working under the nickname ‘why the lucky stiff’, a.k.a. _Why. You can read more about him on <a href="http://en.wikipedia.org/wiki/Why_the_lucky_stiff" target="_blank">Wikipedia</a>.</p> <p>_Why doesn’t exist anymore, but TryRuby lives on. It was first recreated by Andrew McElroy and David Miani. Next Eric Allam and Nick Walsh took over (Codeschool/EnvyLabs).</p> <h3>Why_</h3> <p>This fourth iteration of TryRuby was created for several reasons. </p> <ul> <li>The lesson content was getting a bit dated. For instance the stuff about reading and writing disk files does not really belong in an entry level course these days. Writing blog software is also not very appealing anymore</li> <li>Lesson content also missed some important information (like <strong>if</strong> statements)</li> <li>All previous TryRuby versions consisted of an irb interpreter with a web front-end. Even though some security measures have been taken (isolating and restricting the irb process and whitelisting input), this still sounds like a bad idea from a security perspective!<br> TryRuby<sup>R4</sup> runs inside the web browser</li> </ul> <h3>Changes</h3> <p>By changing the TryRuby mechanics from running irb on a server, to running Opal in the web browser, I had to make some alterations to the TryRuby lesson content. Also updated some outdated stuff.</p> <ul> <li>Opal uses immutable strings, so [ ] based string manipulation was replaced with gsub</li> <li>File reading and writing removed and replaced by getting a json file from the internet</li> <li>Since irb is not used anymore, it is possible (necessary) to run entire programs, not enter commands line-by-line</li> <li>Removed the pop-up stuff</li> <li>Removed mousehole stuff</li> <li>Improved the feedback given to the user based on the program’s output a bit</li> <li>Added support for lesson content in multiple languages. The Spanish, Brazilian Portuguese, Japanese, Russian, Ukrainian, Macedonian, Dutch, Turkish and French translations are available.<br> <strong>If YOU would like to add a translation to TryRuby you are most welcome !</strong></li> <li>Added explanation of if/else statements</li> <li>Changed the subject of the “Class” tutorials from building a blog (so last decade) to making an instant messaging app called: Blurbalizer<sup>TM</sup></li> <li>Used markdown with frontmatter for editing lesson content</li> <li>Used middleman as development environment</li> <li>Added some articles with more background information for aspiring software developers</li> </ul> <h3>Next</h3> <p>Where can TryRuby<sup>R4</sup> be improved ? Couple of things I’ve thought of. Your opinion is most welcome:</p> <ul> <li>Add some self evaluation questions at the end of each chapter</li> <li>Maybe remove the lessons about classes. It’s a bit advanced for an absolute beginners course</li> </ul> </div> </body> </html>