{"generator":"Jekyll","link":[{"@attributes":{"href":"https:\/\/news.learnenough.com\/feed.xml","rel":"self","type":"application\/atom+xml"}},{"@attributes":{"href":"https:\/\/news.learnenough.com\/","rel":"alternate","type":"text\/html"}}],"updated":"2023-08-21T20:56:56+00:00","id":"https:\/\/news.learnenough.com\/feed.xml","title":"Learn Enough News &amp; Blog","subtitle":"News &amp; blog about Learn Enough (including the Ruby on Rails Tutorial)","entry":[{"title":"Learn Enough Python to Be Dangerous","link":{"@attributes":{"href":"https:\/\/news.learnenough.com\/learn-enough-python-to-be-dangerous","rel":"alternate","type":"text\/html","title":"Learn Enough Python to Be Dangerous"}},"published":"2022-12-15T00:00:00+00:00","updated":"2022-12-15T00:00:00+00:00","id":"https:\/\/news.learnenough.com\/learn-enough-python-to-be-dangerous","content":"<p><a href=\"https:\/\/www.michaelhartl.com\/\" target=\"_blank\" rel=\"noopener\">Michael Hartl<\/a> here from the <a href=\"https:\/\/www.railstutorial.org\/\" target=\"_blank\" rel=\"noopener\">Rails Tutorial<\/a> and <a href=\"https:\/\/www.learnenough.com\/\" target=\"_blank\" rel=\"noopener\">Learn Enough<\/a>.<\/p>\n<p>I\u2019m pleased to announce that <a href=\"https:\/\/www.learnenough.com\/python\" target=\"_blank\" rel=\"noopener\"><em>Learn Enough Python to Be Dangerous<\/em><\/a> is now available!<span class=\"intersentencespace\"><\/span> As usual, the <a href=\"https:\/\/www.learnenough.com\/all-access\" target=\"_blank\" rel=\"noopener\">online course<\/a> features both book-length text (approximately 450 pages print-equivalent) and embedded streaming videos (nearly 9 hours\u2019 worth), as well as integrated progress tracking and over 100 exercises.<span class=\"intersentencespace\"><\/span> It is also available as a <a href=\"https:\/\/www.informit.com\/store\/learn-enough-python-to-be-dangerous-software-development-9780138050955\" target=\"_blank\" rel=\"noopener\">print edition and ebook<\/a> and as a <a href=\"https:\/\/www.informit.com\/store\/learn-enough-python-to-be-dangerous-livelessons-software-9780138050733\" target=\"_blank\" rel=\"noopener\">standalone video bundle<\/a>.<span class=\"intersentencespace\"><\/span> The only prerequisites for <em>Learn Enough Python to Be Dangerous<\/em> are the developer tools covered by the Learn Enough Command Line, Text Editor, and Git tutorials.<\/p>\n<div class=\"section-star\" id=\"a_meaningful_moment\"><h2><a href=\"#a_meaningful_moment\" class=\"heading\">A meaningful moment<\/a><\/h2>\n<p>The release of <em>Learn Enough Python to Be Dangerous<\/em> is especially meaningful to me for two reasons.<span class=\"intersentencespace\"><\/span> First, although nowadays I\u2019m probably better known for my work in the Ruby community (especially the <em>Ruby on Rails Tutorial<\/em>), Python is the first programming language I really loved.<span class=\"intersentencespace\"><\/span> I used Python heavily both in graduate school and in my first startup (where I wrote my own half-baked web framework in Python since Django hadn\u2019t been developed yet).<span class=\"intersentencespace\"><\/span> With Python\u2019s combination of power and intuitive design, I felt like I could use it to solve practically any problem I encountered.<\/p>\n<p>Second, this is a poignant moment because <em>Learn Enough Python to Be Dangerous<\/em> is my final Learn Enough tutorial.<span class=\"intersentencespace\"><\/span> As noted in the <a href=\"\/big-news-about-learn-enough\" target=\"_blank\" rel=\"noopener\">acquisition announcement<\/a>, Learn Enough was acquired earlier this year by a tech private equity group.<span class=\"intersentencespace\"><\/span> Although completing <em>Learn Enough Python to Be Dangerous<\/em> was not a requirement of the acquisition, I started work on it last year and was eager to see the project to its completion.<span class=\"intersentencespace\"><\/span> Also, did I mention that Python is the first programming language I really loved?<\/p>\n<\/div>\n<div class=\"section-star\" id=\"a_multitude_of_topics\"><h2><a href=\"#a_multitude_of_topics\" class=\"heading\">A multitude of topics<\/a><\/h2>\n<p>Students of <em>Learn Enough JavaScript to Be Dangerous<\/em> and <em>Learn Enough Ruby to Be Dangerous<\/em> will find a lot of material they are already familiar with.<span class=\"intersentencespace\"><\/span> Indeed, this is very much by design\u2014seeing the same basic problems solved in multiple languages is a great way to learn.<span class=\"intersentencespace\"><\/span> The topics thus include things like:<\/p>\n<ul>\n<li>\u201cHello, world!\u201d in the Python interpreter, as a standalone program, as a shell script, and as a web app\n<\/li>\n<li>Objects like lists (similar to arrays), dictionaries (also called associative arrays or hashes), times and datetimes, and regular expressions\n<\/li>\n<li>Functions and functional programming, including list, dictionary, set, and generator comprehensions\n<\/li>\n<li>Objects and classes\n<\/li>\n<li>Testing and test-driven development (TDD)\n<\/li>\n<li>Publishing a Python package\n<\/li>\n<li>Using Python for shell scripts\n<\/li>\n<li>Writing and deploying a Python web application with Flask (Python\u2019s equivalent of Ruby\u2019s Sinatra)\n<\/li><\/ul>\n<p>You can get a good sense of what the tutorial covers by taking a look at the table of contents and the three free sample chapters in the <a href=\"https:\/\/www.learnenough.com\/python-tutorial\" target=\"_blank\" rel=\"noopener\">online book<\/a>.<\/p>\n<\/div>\n<div class=\"section-star\" id=\"a_datascience_monster\"><h2><a href=\"#a_datascience_monster\" class=\"heading\">A data-science monster<\/a><\/h2>\n<p>In addition to the topics mentioned above, <em>Learn Enough Python to Be Dangerous<\/em> includes a monster chapter (approximately 100 pages) on a topic not covered at all in the JavaScript or Ruby tutorials but one that\u2019s a big deal in the Python world\u2014namely, Python tools for data science:<\/p>\n<ul>\n<li>Jupyter for interactive calculations\n<\/li>\n<li>NumPy for numerical computations\n<\/li>\n<li>Matplotlib for data visualization\n<\/li>\n<li>pandas for data analysis\n<\/li>\n<li>scikit-learn for machine learning\n<\/li><\/ul>\n<p class=\"noindent\">Preparing the data-science chapter required a tremendous amount of effort, drawing heavily on my background in scientific computing and including generous assistance from a couple of highly qualified friends (a professional data scientist and an economics professor who teaches a university course on\u2014wait for it\u2014data science with Python).<\/p>\n<p>This one chapter alone added several months to the project (both text and videos), but I\u2019m thrilled with the result.<span class=\"intersentencespace\"><\/span> <em>Learn Enough Python to Be Dangerous<\/em> not only gives you a solid overall foundation in Python, it also gives you a great head start on using Python for data science.<\/p>\n<\/div>\n<div class=\"section-star\" id=\"how_to_get_it\"><h2><a href=\"#how_to_get_it\" class=\"heading\">How to get it<\/a><\/h2>\n<p>Although available as a standalone course, the best way to get <em>Learn Enough Python to Be Dangerous<\/em> is with the <a href=\"https:\/\/www.learnenough.com\/all-access\" target=\"_blank\" rel=\"noopener\">All Access subscription<\/a>, which includes all of its prerequisites as well as the full <em>Ruby on Rails Tutorial<\/em>.<span class=\"intersentencespace\"><\/span> The print edition and ebook are also available directly from the publisher at <a href=\"https:\/\/www.informit.com\/store\/learn-enough-python-to-be-dangerous-software-development-9780138050955\" target=\"_blank\" rel=\"noopener\">InformIT<\/a>.<\/p>\n<ul>\n<li><a href=\"https:\/\/www.learnenough.com\/all-access\" target=\"_blank\" rel=\"noopener\">Learn Enough All Access<\/a>: The All Access subscription includes <em>all<\/em> of the Learn Enough tutorials, including Developer Tools, HTML &amp; CSS, JavaScript, Ruby, Ruby on Rails, and (of course) Python.<span class=\"intersentencespace\"><\/span>\n<\/li>\n<li>InformIT from Pearson Education: The <a href=\"https:\/\/www.informit.com\/store\/learn-enough-python-to-be-dangerous-software-development-9780138050955\" target=\"_blank\" rel=\"noopener\">print edition and ebook<\/a> and a <a href=\"https:\/\/www.informit.com\/store\/learn-enough-python-to-be-dangerous-livelessons-software-9780138050733\" target=\"_blank\" rel=\"noopener\">standalone video bundle<\/a> are available for purchase directly from the publisher\u2019s website.<span class=\"intersentencespace\"><\/span>\n<\/li><\/ul>\n<p>Finishing <em>Learn Enough Python to Be Dangerous<\/em> has been deeply satisfying and gives me a real sense of closure.<span class=\"intersentencespace\"><\/span> I really wanted to share my take on this wonderful language with the world, and I\u2019m glad I had the opportunity to do so.<\/p>\n<p>I hope you enjoy it!<\/p>\n<p class=\"noindent\">Best wishes, <span class=\"break\"><\/span><\/p>\n<p class=\"noindent\"><a href=\"https:\/\/www.michaelhartl.com\/\" target=\"_blank\" rel=\"noopener\">Michael Hartl<\/a> <br>\nFounder and principal author <br>\nLearn Enough<\/p>\n<p>P.S.<span class=\"intersentencespace\"><\/span> If you\u2019d like to keep in touch, you can subscribe to my <a href=\"https:\/\/substack.michaelhartl.com\/\" target=\"_blank\" rel=\"noopener\">personal mailing list<\/a> and <a href=\"https:\/\/twitter.com\/mhartl\" target=\"_blank\" rel=\"noopener\">follow me on Twitter<\/a>.\n<\/p><\/div>","author":{"name":{}},"category":[{"@attributes":{"term":"learnenough-news"}},{"@attributes":{"term":"tutorials"}},{"@attributes":{"term":"python"}}],"summary":"Michael Hartl here from the Rails Tutorial and Learn Enough."},{"title":"Print versions of Learn Enough HTML, CSS and Layout and Learn Enough JavaScript","link":{"@attributes":{"href":"https:\/\/news.learnenough.com\/html-css-layout-javascript-print-versions","rel":"alternate","type":"text\/html","title":"Print versions of Learn Enough HTML, CSS and Layout and Learn Enough JavaScript"}},"published":"2022-09-02T00:00:00+00:00","updated":"2022-09-02T00:00:00+00:00","id":"https:\/\/news.learnenough.com\/html-css-layout-javascript-print-versions","content":"<p><a href=\"https:\/\/www.michaelhartl.com\/\" target=\"_blank\" rel=\"noopener\">Michael Hartl<\/a> here from the <a href=\"https:\/\/www.railstutorial.org\/\" target=\"_blank\" rel=\"noopener\">Rails Tutorial<\/a> and <a href=\"https:\/\/www.learnenough.com\/\" target=\"_blank\" rel=\"noopener\">Learn Enough<\/a>.<\/p>\n<p>In a <a href=\"\/learn-enough-developer-tools-to-be-dangerous-print-edition\" target=\"_blank\" rel=\"noopener\">previous post<\/a>, we told you about the print version of <a href=\"https:\/\/www.informit.com\/store\/learn-enough-developer-tools-to-be-dangerous-command-9780137843459\" target=\"_blank\" rel=\"noopener\"><em>Learn Enough Developer Tools to Be Dangerous<\/em><\/a> (in partnership with Pearson Education), which combines the material in the Learn Enough ebooks on <a href=\"https:\/\/www.learnenough.com\/command-line\" target=\"_blank\" rel=\"noopener\">Command Line<\/a>, <a href=\"https:\/\/www.learnenough.com\/text-editor\" target=\"_blank\" rel=\"noopener\">Text Editor<\/a>, and <a href=\"https:\/\/www.learnenough.com\/git\" target=\"_blank\" rel=\"noopener\">Git<\/a>.<\/p>\n<p>I\u2019m now pleased to announce the availability of two more volumes, one combining the material from the Learn Enough tutorials on <a href=\"https:\/\/www.learnenough.com\/html\" target=\"_blank\" rel=\"noopener\">HTML<\/a> and <a href=\"https:\/\/www.learnenough.com\/css-and-layout\" target=\"_blank\" rel=\"noopener\">CSS &amp; Layout<\/a> and another with the contents of our <a href=\"https:\/\/www.learnenough.com\/javascript\" target=\"_blank\" rel=\"noopener\">JavaScript tutorial<\/a>.<span class=\"intersentencespace\"><\/span> That brings the number of print versions to three (the links are to InformIT, Pearson\u2019s direct-sales website):<sup id=\"cha-0_footnote-ref-1\" class=\"footnote\"><a href=\"#cha-0_footnote-1\">1<\/a><\/sup><\/p>\n<ol>\n<li><a href=\"https:\/\/www.informit.com\/store\/learn-enough-developer-tools-to-be-dangerous-command-9780137843459\" target=\"_blank\" rel=\"noopener\"><em>Learn Enough Developer Tools to Be Dangerous<\/em><\/a> by Michael Hartl\n<\/li>\n<li><a href=\"https:\/\/www.informit.com\/store\/learn-enough-html-css-and-layout-to-be-dangerous-an-9780137843107\" target=\"_blank\" rel=\"noopener\"><em>Learn Enough HTML, CSS and Layout to Be Dangerous<\/em><\/a> by Lee Donahoe and Michael Hartl\n<\/li>\n<li><a href=\"https:\/\/www.informit.com\/store\/learn-enough-javascript-to-be-dangerous-write-programs-9780137843749\" target=\"_blank\" rel=\"noopener\"><em>Learn Enough JavaScript to Be Dangerous<\/em><\/a> by Michael Hartl\n<\/li><\/ol>\n<p class=\"noindent\">(Note that the contents of both the print versions and Pearson\u2019s eBook versions are virtually identical to the materials available at the <a href=\"https:\/\/www.learnenough.com\/\" target=\"_blank\" rel=\"noopener\">Learn Enough website<\/a>, but this is a great option for anyone who prefers print editions.)<\/p>\n<p>For a limited time, you can also get 45% off using the discount code <strong>BACKTOLEARN<\/strong> during checkout (<a href=\"#fig-backtolearn\" class=\"hyperref\">Figure\u00a0<span class=\"ref\">1<\/span><\/a>).<span class=\"intersentencespace\"><\/span> (A couple of Learn Enough titles even made the front page of the Back to Learn promotion page <a href=\"#fig-backtolearn_promotion_page\" class=\"hyperref\">Figure\u00a0<span class=\"ref\">2<\/span><\/a>)!)<span class=\"intersentencespace\"><\/span> After September 14, 2022, you can still use the code <strong>LEARNENOUGH<\/strong> to get 35% off (<a href=\"#fig-learn_enough_discount_code\" class=\"hyperref\">Figure\u00a0<span class=\"ref\">3<\/span><\/a>).<\/p>\n<p>Enjoy!<\/p>\n<div class=\"center figure\" id=\"fig-backtolearn\" data-tralics-id=\"uid5\" data-number=\"1\">\n<div class=\"graphics image\"><img src=\"images\/figures\/backtolearn.png\" alt=\"images\/figures\/backtolearn\" \/><\/div><div class=\"caption\"><span class=\"header\">Figure 1: <\/span><span class=\"description\">Entering the <strong>BACKTOLEARN<\/strong> discount code.\n<\/span><\/div><\/div>\n<div class=\"center figure\" id=\"fig-backtolearn_promotion_page\" data-tralics-id=\"uid6\" data-number=\"2\">\n<div class=\"graphics image\"><img src=\"images\/figures\/backtolearn_promotion_page.png\" alt=\"images\/figures\/backtolearn_promotion_page\" \/><\/div><div class=\"caption\"><span class=\"header\">Figure 2: <\/span><span class=\"description\">Learn Enough on the Back to Learn promotion page!\n<\/span><\/div><\/div>\n<div class=\"center figure\" id=\"fig-learn_enough_discount_code\" data-tralics-id=\"uid7\" data-number=\"3\">\n<div class=\"graphics image\"><img src=\"images\/figures\/learn_enough_discount_code.png\" alt=\"images\/figures\/learn_enough_discount_code\" \/><\/div><div class=\"caption\"><span class=\"header\">Figure 3: <\/span><span class=\"description\">Entering the <strong>LEARNENOUGH<\/strong> discount code.\n<\/span><\/div><\/div>\n<div id=\"cha-0_footnotes\">\n  <div class=\"footnotes\">\n    <div id=\"cha-0_footnote-1\" class=\"footnote\"><a class=\"footnote-link\" href=\"#cha-0_footnote-ref-1\">1.<\/a> <a href=\"https:\/\/www.informit.com\/store\/learn-enough-ruby-to-be-dangerous-write-programs-publish-9780137844135\" target=\"_blank\" rel=\"noopener\"><em>Learn Enough Ruby to Be Dangerous<\/em><\/a> is also available at InformIT, but only as an eBook.<\/div>\n  <\/div>\n<\/div>","author":{"name":{}},"category":[{"@attributes":{"term":"learnenough-news"}},{"@attributes":{"term":"tutorials"}},{"@attributes":{"term":"print-versions"}}],"summary":"Michael Hartl here from the Rails Tutorial and Learn Enough."},{"title":"Learn Enough and the Rails Tutorial have been acquired","link":{"@attributes":{"href":"https:\/\/news.learnenough.com\/big-news-about-learn-enough","rel":"alternate","type":"text\/html","title":"Learn Enough and the Rails Tutorial have been acquired"}},"published":"2022-08-11T00:00:00+00:00","updated":"2022-08-11T00:00:00+00:00","id":"https:\/\/news.learnenough.com\/big-news-about-learn-enough","content":"<p><a href=\"https:\/\/www.michaelhartl.com\/\">Michael Hartl<\/a> here from <a href=\"https:\/\/www.learnenough.com\">Learn Enough<\/a> and the <a href=\"https:\/\/www.railstutorial.org\/\">Rails Tutorial<\/a>.<\/p>\n\n<p>I\u2019m excited to share the news that Learn Enough recently accepted an acquisition offer from a private equity firm run by entrepreneur and longtime Ruby on Rails community member Jonathan Siegel. As part of this, Learn Enough is teaming up to offer an accredited degree in computer science through recently founded <a href=\"https:\/\/www.hammingcollege.com\/\">Hamming College<\/a>, for which I am serving as an advisor.<\/p>\n\n<p>Although the other Learn Enough founders and I have handed over day-to-day operations of Learn Enough and the Rails Tutorial to Jonathan and his team, we have continued producing new tutorial materials, including the <a href=\"\/launch-of-the-ruby-on-rails-tutorial-7th-edition\">7th edition of the <em>Ruby on Rails Tutorial<\/em><\/a> and a major new <a href=\"\/css-grid\">chapter + video on CSS grid<\/a>. We have also signed a deal to publish our tutorials through Pearson Education, including print versions and videos through its online portal. Finally, I am currently working on <em>Learn Enough Python to Be Dangerous<\/em> and hope to release the book and accompanying videos later this year. <em>Update<\/em>: <a href=\"\/learn-enough-python-to-be-dangerous\"><em>Learn Enough Python to Be Dangerous<\/em> has been released!<\/a><\/p>\n\n<h2 id=\"a-surprise-inquiry\">A surprise inquiry<\/h2>\n\n<p>Jonathan Siegel and I have known each other for over 15 years. We first met in 2006 at one of the first Ruby on Rails training courses, taught by Mike Clark and <em>Programming Ruby<\/em> author Dave Thomas. Jonathan went on to found a series of successful Rails-based companies, while I ended up coauthoring a Rails tutorial called <em>RailsSpace<\/em> and then produced seven editions of the <em>Ruby on Rails Tutorial<\/em>. Jonathan and I kept in touch over the years, so when I heard from him a few months ago I wasn\u2019t all that surprised. I <em>was<\/em> surprised, however, at the subject of his inquiry, which was to explore a possible acquisition.<\/p>\n\n<p>My first step was to discuss the possibility with the other Learn Enough founders, Lee Donahoe and Nick Merwin. With the publication of the Learn Enough tutorials on <em>CSS &amp; Layout<\/em>, JavaScript, and Ruby, and the publication deal with Pearson, we agreed that we\u2019d reached a natural stopping point and were open to moving on to other things.<\/p>\n\n<p>Our top priority was to make sure any potential acquirer really understood our business and was committed to doing right by our learners. In conversation with Jonathan and his team, we discovered that they were actually long-time learners at Learn Enough themselves, so they certainly understood what we are all about! Jonathan also has a passion for creating compelling educational opportunities, and we quickly determined that there was a good fit in terms of philosophy and values.<\/p>\n\n<p>Having agreed that it made sense to move forward, we signed a Letter of Intent (LOI) and started the due-diligence process. It was a lot of work, but I\u2019m pleased to report that it went about as smoothly as could reasonably be expected under the circumstances.<\/p>\n\n<h2 id=\"hamming-college\">Hamming College<\/h2>\n\n<p>Part of Jonathan\u2019s vision for Learn Enough and the Rails Tutorial was to take things to the next level by using the Learn Enough curriculum as part of the foundation for an accredited Bachelor of Science (B.Sc.) degree in Computer Science. The result is <a href=\"https:\/\/www.hammingcollege.com\/\">Hamming College<\/a>, named after pioneering mathematician and computer scientist <a href=\"https:\/\/en.wikipedia.org\/wiki\/Richard_Hamming\">Richard Hamming<\/a>, inventor of <a href=\"https:\/\/en.wikipedia.org\/wiki\/Hamming_code\">Hamming codes<\/a> and winner of the Turing Award in 1968.<\/p>\n\n<p>Here\u2019s Jonathan\u2019s account of how Hamming College was conceived:<\/p>\n\n<blockquote>\n  <p>Three years ago I joined the first ABA-accredited \u201cinteractive\u201d law degree program\u2014offered by Syracuse University. The students in the parallel residential program were unhappy with the idea that my cohort was avoiding \u201cthe Socratic method\u201d and the somewhat cliche pressure-cooker environment of law school. When I started the mainly-online program, I was required to do the same reading, lecture hours and engagement that the on-campus students experienced\u2014and to me, I was experiencing the pressure-cooker.<\/p>\n\n  <p>Fast forward 18 months\u2014in the midst of COVID\u2014and the entire campus went online. Those residential students and their instructors became fully online alongside our cohort. What I found was that my classes built for online were actually far better than the residential classes brought online. My lectures were built in bite-sized chunks, reasonably scripted and had frequent, calculated breaks to check my progress and encourage recall. My instructor class time was on Zoom, but jumped right into interactive discussion and every student had to be ready to be on call. Although the on-call feel was similar between both styles of instruction, the traditional lectures were just that\u2014one-to-two hour long stream-of-consciousness with few interruptions. These were less enjoyable and less effective for learning\u2014and I realized that maybe the residential students had it backwards\u2014online learning done right can be far superior to campus learning.<\/p>\n\n  <p>With this in mind, we set out to build an online computer science program that combined the rigor of a traditional university (what I experienced in my undergraduate CompSci degree and a few years as a CompSci Ph.D.) with the joy of well-presented online material (like Learn Enough).<\/p>\n<\/blockquote>\n\n<p>With the Learn Enough curriculum as a foundation, Hamming College is now offering an accredited degree in Computer Science, and is also working to offer independent college credit for Learn Enough courses.<\/p>\n\n<h2 id=\"softcover\">Softcover<\/h2>\n\n<p>As some of you may know, Learn Enough is actually part of <a href=\"https:\/\/www.softcover.io\/\">Softcover<\/a>, a publishing platform for technical authors. There are no plans to change how Softcover operates, so authors of current Softcover books don\u2019t have to do anything at this point.<\/p>\n\n<p>If the Softcover service is ever going to be shut down, there will be ample warning and a generous sunset period. In addition, Softcover has no lock-in, so authors will always have the option to publish their works elsewhere.<\/p>\n\n<p>I\u2019ll continue to oversee the Softcover <a href=\"https:\/\/github.com\/softcover\/softcover\">open-source project<\/a>, which has a mature feature set and doesn\u2019t require much in the way of further development.<\/p>\n\n<h2 id=\"what-the-future-holds\">What the future holds<\/h2>\n\n<p>Lee, Nick, and I are all staying around during a transitional period while I finish up the Python tutorial. I\u2019ll also continue to serve as an advisor to Hamming College even after phasing out my day-to-day involvement in Learn Enough and the Rails Tutorial.<\/p>\n\n<p>I have lots of ideas for projects going forward, including languages, philosophy, and reconnecting with my math and physics roots. Although I expect to take a little time off to recuperate from the push to finish <em>Learn Enough Python<\/em>, it\u2019s likely I\u2019ll have things to share publicly at some point. Please subscribe to my <a href=\"https:\/\/substack.michaelhartl.com\/\">personal mailing list<\/a> or <a href=\"https:\/\/twitter.com\/mhartl\">follow me on Twitter<\/a> if you\u2019d like to keep in touch.<\/p>\n\n<h2 id=\"acknowledgments\">Acknowledgments<\/h2>\n\n<p>Thanks to Jonathan Siegel, John Cross, and all the other folks we worked with during this process. Everything at every stage was handled in good faith and with good cheer. A big thank-you to Josh Pigford for his generous advice and for an introduction to Joey Tran and Colby Gartin of Acceleron Law, who did a fantastic job on the legal side of the deal.<\/p>\n\n<p>Of course, a huge thanks to my cofounders, Lee Donahoe and Nick Merwin. Finding good cofounders is extremely hard, and I got lucky. I remember thinking, shortly after I met them in 2007, \u201cI could definitely work with these guys.\u201d It took a few years for that to happen, but I\u2019m glad it eventually did.<\/p>\n\n<p>Finally, thanks to all our great learners, who have been a source of so much positive energy and inspiration over the years. Learn Enough is in great hands, and I\u2019m confident there are good things ahead.<\/p>","author":{"name":{}},"category":{"@attributes":{"term":"learnenough-news"}},"summary":"Michael Hartl here from Learn Enough and the Rails Tutorial."},{"title":"CSS Grid","link":{"@attributes":{"href":"https:\/\/news.learnenough.com\/css-grid","rel":"alternate","type":"text\/html","title":"CSS Grid"}},"published":"2022-06-21T00:00:00+00:00","updated":"2022-06-21T00:00:00+00:00","id":"https:\/\/news.learnenough.com\/css-grid","content":"<p>Michael Hartl here from the <a href=\"https:\/\/www.railstutorial.org\/\" target=\"_blank\" rel=\"noopener\">Rails Tutorial<\/a> and <a href=\"https:\/\/www.learnenough.com\/\" target=\"_blank\" rel=\"noopener\">Learn Enough<\/a>.<\/p>\n<p>I\u2019ve got an exciting announcement about <a href=\"https:\/\/www.learnenough.com\/css-and-layout\" target=\"_blank\" rel=\"noopener\"><em>Learn Enough CSS &amp; Layout to Be Dangerous<\/em><\/a> (part of a <a href=\"\/full-draft-of-the-ruby-on-rails-tutorial-7th-edition\" target=\"_blank\" rel=\"noopener\">bunch of announcements<\/a> alluded to in a previous post): We just released a special bonus chapter on a more recent and advanced layout technique known as <em>CSS grid<\/em>.<\/p>\n<p>CSS grid is a system for making\u2014you guessed it!\u2014grids.<span class=\"intersentencespace\"><\/span> The newly released grid chapter is over 100 pages long, bringing the full tutorial to over 600 pages of CSS &amp; Layout goodness.<span class=\"intersentencespace\"><\/span> The companion grid videos come in at nearly two hours (bringing the total for the CSS &amp; Layout videos to almost 16 hours), and feature coauthor Lee Donahoe walking an occasionally clueless CSS newbie (me) through the many intricacies of grid.<\/p>\n<div class=\"center figure\" id=\"fig-grid-diag-complex\" data-tralics-id=\"uid1\" data-number=\"1\">\n<div class=\"graphics image\"><img src=\"images\/figures\/grid-diag-complex.png\" alt=\"images\/figures\/grid-diag-complex\" \/><\/div><div class=\"caption\"><span class=\"header\">Figure 1: <\/span><span class=\"description\">Two types of layout covered by the chapter on grid.\n<\/span><\/div><\/div>\n<p>This release is a free upgrade for previous purchasers of the CSS &amp; Layout tutorial.<span class=\"intersentencespace\"><\/span> Just go to your <a href=\"https:\/\/www.learnenough.com\/courses\/downloads\" target=\"_blank\" rel=\"noopener\">Downloads<\/a> page to get the latest copy of the book or videos.<span class=\"intersentencespace\"><\/span> It is also automatically available to All Access and CSS &amp; Layout course subscribers on the <a href=\"https:\/\/www.learnenough.com\/your-courses\" target=\"_blank\" rel=\"noopener\">Your Courses<\/a> page.<\/p>\n<p>For everyone else, there are two main ways to get the new material on CSS grid:<\/p>\n<ul>\n<li><a href=\"https:\/\/www.learnenough.com\/css-and-layout#landing-pricing\" target=\"_blank\" rel=\"noopener\">CSS course subscription<\/a>: The new chapter on CSS grid will be included in the individual course subscription.<span class=\"intersentencespace\"><\/span>\n<\/li>\n<li><a href=\"https:\/\/www.learnenough.com\/all-access\" target=\"_blank\" rel=\"noopener\">All Access subscription<\/a>: The new chapter on CSS grid and the material from <em>all<\/em> the Learn Enough tutorials (including the <em>Ruby on Rails Tutorial<\/em>) are included in the <a href=\"https:\/\/www.learnenough.com\/all-access\" target=\"_blank\" rel=\"noopener\">Learn Enough All Access<\/a> subscription.<span class=\"intersentencespace\"><\/span> This option includes online text, streaming videos, progress tracking, exercise answers, and access to a private Slack chat group.<span class=\"intersentencespace\"><\/span>\n<\/li><\/ul>\n<div class=\"center figure\" id=\"fig-grid2-opts-examp\" data-tralics-id=\"uid4\" data-number=\"2\">\n<div class=\"graphics image\"><img src=\"images\/figures\/grid2-opts-examp.png\" alt=\"images\/figures\/grid2-opts-examp\" \/><\/div><div class=\"caption\"><span class=\"header\">Figure 2: <\/span><span class=\"description\">The culmination of the new chapter on grid.\n<\/span><\/div><\/div>\n<p>No matter which option you select, we hope you enjoy the new material on CSS grid!<span class=\"intersentencespace\"><\/span> <a href=\"https:\/\/www.learnenough.com\/css-and-layout\" target=\"_blank\" rel=\"noopener\"><em>Learn Enough CSS &amp; Layout to Be Dangerous<\/em><\/a> has always been designed to teach you how to build real-world, professional-grade websites, focusing on the most important techniques of CSS and page layout.<span class=\"intersentencespace\"><\/span> With this new chapter on grid, it will continue to serve that purpose for many years to come.\n<\/p>","author":{"name":{}},"category":[{"@attributes":{"term":"learnenough-news"}},{"@attributes":{"term":"tutorials"}}]},{"title":"Launch of the Ruby on Rails Tutorial 7th Edition","link":{"@attributes":{"href":"https:\/\/news.learnenough.com\/launch-of-the-ruby-on-rails-tutorial-7th-edition","rel":"alternate","type":"text\/html","title":"Launch of the Ruby on Rails Tutorial 7th Edition"}},"published":"2022-05-31T00:00:00+00:00","updated":"2022-05-31T00:00:00+00:00","id":"https:\/\/news.learnenough.com\/launch-of-the-ruby-on-rails-tutorial-7th-edition","content":"<p>Michael Hartl here from <a href=\"https:\/\/www.learnenough.com\/\" target=\"_blank\" rel=\"noopener\">Learn Enough<\/a>.<span class=\"intersentencespace\"><\/span> I\u2019m pleased to announce the launch of the <a href=\"https:\/\/www.learnenough.com\/ruby-on-rails-7th-edition\" target=\"_blank\" rel=\"noopener\"><em>Ruby on Rails Tutorial<\/em><\/a> 7th edition!<span class=\"intersentencespace\"><\/span> This new edition covers professional-grade web development with Rails\u00a07.<\/p>\n<p>The <em>Ruby on Rails Tutorial<\/em> is available as an <a href=\"https:\/\/www.learnenough.com\/ruby-on-rails-7th-edition#landing-pricing\" target=\"_blank\" rel=\"noopener\">online course<\/a> and as a part of our <a href=\"https:\/\/www.learnenough.com\/all-access\" target=\"_blank\" rel=\"noopener\">All Access Subscription<\/a>.<span class=\"intersentencespace\"><\/span> Details below!<\/p>\n<div class=\"subsection-star\"><h3><a class=\"heading\">Details<\/a><\/h3>\n<p>As noted in the 7th edition <a href=\"\/full-draft-of-the-ruby-on-rails-tutorial-7th-edition\" target=\"_blank\" rel=\"noopener\">draft announcement<\/a>, the material in the <em>Ruby on Rails Tutorial<\/em> has been quite stable now for several years.<span class=\"intersentencespace\"><\/span> This is great because it means what you learn won\u2019t soon go out of date.<span class=\"intersentencespace\"><\/span> Nonetheless, there are still some great updates in the latest edition:<\/p>\n<ul>\n<li>Full compatibility with Rails 7\n<\/li>\n<li>Improved integration tests with techniques for breaking long tests into more manageable pieces\n<\/li>\n<li>Coverage of the latest (and we hope last!) way to integrate JavaScript with Rails (using Importmap, so no more NPM, Webpacker, or Yarn!)<span class=\"intersentencespace\"><\/span>\n<\/li>\n<li>How to use the new Active Storage <code>variant<\/code> method for resizing uploaded images\n<\/li>\n<li>New <code>render<\/code> status responses for compatibility with Turbo (see below)\n<\/li>\n<li>An introduction to Hotwire and Turbo for building fast and responsive sites rivaling the speed of \u201csingle-page\u201d JavaScript apps\n<\/li><\/ul>\n<p>The videos are largely the same as in previous editions (most of the videos use Rails\u00a04 yet still work fine!), but they have been carefully updated with text notes where necessary.<span class=\"intersentencespace\"><\/span> In addition, several of the screencasts have been completely redone\u2014most notably, the ones covering JavaScript in Rails, longer integration tests, and Hotwire\/Turbo.<\/p>\n<\/div>\n<div class=\"subsection-star\"><h3><a class=\"heading\">Online course<\/a><\/h3>\n<p>The <em>Ruby on Rails Tutorial<\/em> is available as a 14-chapter online course with the equivalent of 952 pages of text and 20 hours of streaming videos.<span class=\"intersentencespace\"><\/span> The course also includes exercise answers, progress tracking, and membership in a private Slack chat group.<span class=\"intersentencespace\"><\/span> There are two main ways to get it:<\/p>\n<ul>\n<li><a href=\"https:\/\/www.learnenough.com\/ruby-on-rails-7th-edition#landing-pricing\" target=\"_blank\" rel=\"noopener\">Ruby on Rails Tutorial course subscription<\/a>: $29\/month for full access to the Rails Tutorial online course\n<\/li>\n<li><a href=\"https:\/\/www.learnenough.com\/ruby-on-rails-7th-edition#landing-pricing\" target=\"_blank\" rel=\"noopener\">Learn Enough All Access subscription<\/a>: $49\/month for the Rails Tutorial course plus <em>all<\/em> the Learn Enough courses (Command Line, Text Editor, Git, HTML, CSS &amp; Layout, JavaScript, and Ruby)\n<\/li><\/ul>\n<p>If you already have an All Access subscription, you automatically have access to the new course\u2014just look for <strong>Ruby on Rails (Rails\u00a07)<\/strong> on the <a href=\"https:\/\/www.learnenough.com\/your-courses\" target=\"_blank\" rel=\"noopener\">Your Courses<\/a> page.<span class=\"intersentencespace\"><\/span> If you have a subscription to the Rails\u00a06 course, you can switch to Rails\u00a07 at any time on the same <a href=\"https:\/\/www.learnenough.com\/your-courses\" target=\"_blank\" rel=\"noopener\">Your Courses<\/a> page since the two courses have the same monthly price.<\/p>\n<\/div>\n<div class=\"subsection-star\"><h3><a class=\"heading\">Individual purchase<\/a><\/h3>\n<p>The <em>Rails Tutorial<\/em> is also available for individual purchase as an ebook or ebook\/video bundle:<\/p>\n<ul>\n<li><strong>The <\/strong><em><strong>Rails Tutorial<\/strong><\/em><strong> ebook<\/strong> (952 pages): Get the full text of the <em>Ruby on Rails Tutorial<\/em> in PDF, EPUB, MOBI, and HTML formats.<span class=\"intersentencespace\"><\/span> We\u2019re offering a launch\/upgrade discount of\n<strong>20% off<\/strong> (expires this Friday, June\u00a03).\n<\/li>\n<li><strong>The <\/strong><em><strong>Rails Tutorial<\/strong><\/em><strong> ebook\/screencast bundle<\/strong>: Get both the ebook and downloadable video screencasts for one low price.<span class=\"intersentencespace\"><\/span> We\u2019re offering a launch\/upgrade discount of\n<strong>33% off<\/strong> to make this valuable bundle more affordable (expires this Friday, June\u00a03).<span class=\"intersentencespace\"><\/span> \n<\/li><\/ul>\n<p>If you bought the 7th edition after the draft launch in April, check your Downloads page to get the video files and the latest version of the ebook.<\/p>\n<p><strong>Edit:<\/strong> As of November 2022, we no longer offer individual purchases of ebooks\/videos.<span class=\"intersentencespace\"><\/span> Please refer to our <a href=\"https:\/\/www.learnenough.com\/plans\" target=\"_blank\" rel=\"noopener\">Learn Enough<\/a> page for available purchase options.<\/p>\n<\/div>\n<div class=\"subsection-star\"><h3><a class=\"heading\">Guaranteed!<\/a><\/h3>\n<p>As always, Learn Enough offers a 60-day, 100% money-back guarantee on all purchases (including subscriptions).<span class=\"intersentencespace\"><\/span> Also, in case cost is a factor, please consider applying for a <a href=\"https:\/\/www.learnenough.com\/scholarship\" target=\"_blank\" rel=\"noopener\">Learn Enough Scholarship<\/a>.<\/p>\n<p>Enjoy!\n<\/p><\/div>","author":{"name":{}},"category":[{"@attributes":{"term":"learnenough-news"}},{"@attributes":{"term":"tutorials"}},{"@attributes":{"term":"rails"}}]},{"title":"Learn Enough Developer Tools to Be Dangerous Print Edition","link":{"@attributes":{"href":"https:\/\/news.learnenough.com\/learn-enough-developer-tools-to-be-dangerous-print-edition","rel":"alternate","type":"text\/html","title":"Learn Enough Developer Tools to Be Dangerous Print Edition"}},"published":"2022-05-02T00:00:00+00:00","updated":"2022-05-02T00:00:00+00:00","id":"https:\/\/news.learnenough.com\/learn-enough-developer-tools-to-be-dangerous-print-edition","content":"<p>Michael Hartl here from the <a href=\"https:\/\/www.railstutorial.org\/\" target=\"_blank\" rel=\"noopener\">Rails Tutorial<\/a> and <a href=\"https:\/\/www.learnenough.com\/\" target=\"_blank\" rel=\"noopener\">Learn Enough<\/a>.<\/p>\n<p>I promised in my <a href=\"\/full-draft-of-the-ruby-on-rails-tutorial-7th-edition\" target=\"_blank\" rel=\"noopener\">previous post on the <em>Rails Tutorial<\/em> 7th edition<\/a> that we have a lot of exciting announcements coming up.<span class=\"intersentencespace\"><\/span> That was the first one\u2014here\u2019s the second one: I\u2019m pleased to announce the publication of the print edition of <a href=\"https:\/\/click.linksynergy.com\/link?id=XTk759K*tTU&amp;offerid=145238.3124581&amp;type=2&amp;murl=https%3A%2F%2Fwww.informit.com%2Ftitle%2F9780137843459\" target=\"_blank\" rel=\"noopener\"><em>Learn Enough Developer Tools to Be Dangerous<\/em><\/a>, available now for Pre-Order.<span class=\"intersentencespace\"><\/span> (If you click on that book link, be sure to use the discount code <strong>LEARNENOUGH<\/strong> to get 35% off when checking out.<span class=\"intersentencespace\"><\/span> See below for details.)<\/p>\n<p><a href=\"https:\/\/click.linksynergy.com\/link?id=XTk759K*tTU&amp;offerid=145238.3124581&amp;type=2&amp;murl=https%3A%2F%2Fwww.informit.com%2Ftitle%2F9780137843459\" target=\"_blank\" rel=\"noopener\"><em>Learn Enough Developer Tools to Be Dangerous<\/em><\/a>, produced in cooperation with Pearson Education, combines the material in the Learn Enough ebooks on <a href=\"https:\/\/www.learnenough.com\/command-line\" target=\"_blank\" rel=\"noopener\">Command Line<\/a>, <a href=\"https:\/\/www.learnenough.com\/text-editor\" target=\"_blank\" rel=\"noopener\">Text Editor<\/a>, and <a href=\"https:\/\/www.learnenough.com\/git\" target=\"_blank\" rel=\"noopener\">Git<\/a> into one convenient volume.<\/p>\n<p>Learn enough about\u2026<\/p>\n<ul>\n<li>Running a terminal, entering and editing commands, and using man pages\n<\/li>\n<li>Manipulating and inspecting files: from basic copying to finding patterns\n<\/li>\n<li>Organizing files with directories\n<\/li>\n<li>Minimum Viable Vim and the Most Important Vim Command\u2122\n<\/li>\n<li>Basic and advanced editing techniques with editors like Atom and VS Code\n<\/li>\n<li>Using the human-readable Markdown language for writing quick documentation\n<\/li>\n<li>Formatting source code and writing executable scripts\n<\/li>\n<li>Getting started with Git and GitHub\n<\/li>\n<li>Using key Git workflows: commit, push, branch, merge, and more\n<\/li>\n<li>Collaborating on Git projects and resolving code conflicts\n<\/li><\/ul>\n<p>Here\u2019s how to get the print edition of <a href=\"https:\/\/click.linksynergy.com\/link?id=XTk759K*tTU&amp;offerid=145238.3124581&amp;type=2&amp;murl=https%3A%2F%2Fwww.informit.com%2Ftitle%2F9780137843459\" target=\"_blank\" rel=\"noopener\"><em>Learn Enough Developer Tools to Be Dangerous<\/em><\/a>:<\/p>\n<ol>\n<li>Visit the <a href=\"https:\/\/click.linksynergy.com\/link?id=XTk759K*tTU&amp;offerid=145238.3124581&amp;type=2&amp;murl=https%3A%2F%2Fwww.informit.com%2Ftitle%2F9780137843459\" target=\"_blank\" rel=\"noopener\"><em>Learn Enough Developer Tools<\/em> page at InformIT<\/a> (Pearson\u2019s direct-sales website).<span class=\"intersentencespace\"><\/span>\n<\/li>\n<li>Select Pre-Order for the regular Book option (<a href=\"#fig-developer_tools_book\" class=\"hyperref\">Figure\u00a0<span class=\"ref\">1<\/span><\/a>).<span class=\"intersentencespace\"><\/span> The Book + eBook Bundle is also a good deal if you don\u2019t already have the ebooks for the individual <a href=\"https:\/\/www.learnenough.com\/command-line\" target=\"_blank\" rel=\"noopener\">Command Line<\/a>, <a href=\"https:\/\/www.learnenough.com\/text-editor\" target=\"_blank\" rel=\"noopener\">Text Editor<\/a>, and <a href=\"https:\/\/www.learnenough.com\/git\" target=\"_blank\" rel=\"noopener\">Git<\/a> tutorials, but just be aware that the contents are virtually identical to the ebooks available at <a href=\"https:\/\/www.learnenough.com\" target=\"_blank\" rel=\"noopener\">learnenough.com<\/a>.<span class=\"intersentencespace\"><\/span>\n<\/li>\n<li>When checking out, type in the discount code <strong>LEARNENOUGH<\/strong> and click the <strong>Enter Code<\/strong> button to get 35% off (<a href=\"#fig-developer_tools_discount_code\" class=\"hyperref\">Figure\u00a0<span class=\"ref\">2<\/span><\/a>).<span class=\"intersentencespace\"><\/span>\n<\/li>\n<li>InformIT will automatically ship you a copy of the print edition when it comes out later this month (currently scheduled for May 26).<span class=\"intersentencespace\"><\/span> Enjoy!<span class=\"intersentencespace\"><\/span>\n<\/li><\/ol>\n<div class=\"center figure\" id=\"fig-developer_tools_book\" data-tralics-id=\"uid15\" data-number=\"1\">\n<div class=\"graphics image\"><img src=\"images\/figures\/developer_tools_book.png\" alt=\"images\/figures\/developer_tools_book\" \/><\/div><div class=\"caption\"><span class=\"header\">Figure 1: <\/span><span class=\"description\">Selecting the print book (or Book + eBook bundle) at InformIT.\n<\/span><\/div><\/div>\n<div class=\"center figure\" id=\"fig-developer_tools_discount_code\" data-tralics-id=\"uid16\" data-number=\"2\">\n<div class=\"graphics image\"><img src=\"images\/figures\/developer_tools_discount_code.png\" alt=\"images\/figures\/developer_tools_discount_code\" \/><\/div><div class=\"caption\"><span class=\"header\">Figure 2: <\/span><span class=\"description\">Entering the <strong>LEARNENOUGH<\/strong> discount code.\n<\/span><\/div><\/div>","author":{"name":{}},"category":[{"@attributes":{"term":"learnenough-news"}},{"@attributes":{"term":"tutorials"}},{"@attributes":{"term":"print-versions"}}]},{"title":"Full Draft of the Ruby on Rails Tutorial, 7th Edition","link":{"@attributes":{"href":"https:\/\/news.learnenough.com\/full-draft-of-the-ruby-on-rails-tutorial-7th-edition","rel":"alternate","type":"text\/html","title":"Full Draft of the Ruby on Rails Tutorial, 7th Edition"}},"published":"2022-04-19T00:00:00+00:00","updated":"2022-04-19T00:00:00+00:00","id":"https:\/\/news.learnenough.com\/full-draft-of-the-ruby-on-rails-tutorial-7th-edition","content":"<p>Michael Hartl here from <a href=\"https:\/\/www.learnenough.com\/\" target=\"_blank\" rel=\"noopener\">Learn Enough<\/a> and the <em>Ruby on Rails Tutorial<\/em>.<\/p>\n<p>It\u2019s been a while since I last reached out, but that\u2019s not because we\u2019ve been idle.<span class=\"intersentencespace\"><\/span> Quite the opposite\u2014we\u2019ve been incredibly busy here at Learn Enough and have a bunch of exciting announcements to make over the next few months.<\/p>\n<p>That includes my current announcement: the immediate availability of a <strong>full draft of the 7th edition of the <\/strong><em><strong>Ruby on Rails Tutorial<\/strong><\/em><strong><\/strong>.<span class=\"intersentencespace\"><\/span> For over a decade, the <em>Ruby on Rails Tutorial<\/em> has been one of the leading introductions to web development, and now it has been updated for the latest version of Rails.<\/p>\n<p>After seven editions, the <em>Rails Tutorial<\/em> is pretty stable in almost every way, but there are still some great updates in the latest edition:<\/p>\n<ul>\n<li>Full compatibility with Rails 7\n<\/li>\n<li>New <code>render<\/code> status responses for compatibility with Turbo (see below)\n<\/li>\n<li>Improved integration tests with techniques for breaking long minitest tests into smaller pieces using Ruby classes\n<\/li>\n<li>Coverage of the latest (and we hope last!) way to integrate JavaScript with Rails using Importmap (no more NPM, Webpacker, or Yarn!)<span class=\"intersentencespace\"><\/span>\n<\/li>\n<li>An introduction to Hotwire and Turbo for building fast and responsive sites rivaling \u201csingle-page\u201d JavaScript apps\n<\/li><\/ul>\n<p>The first four chapters of the draft are available for free online <a href=\"https:\/\/www.learnenough.com\/ruby-on-rails-7th-edition-tutorial\" target=\"_blank\" rel=\"noopener\">here<\/a>.<span class=\"intersentencespace\"><\/span> Ebook and video screencasts are also available for purchase:<\/p>\n<ul>\n<li><strong>The <\/strong><em><strong>Rails Tutorial<\/strong><\/em><strong> ebook<\/strong> (952 pages, PDF\/EPUB\/MOBI\/HTML): Get the full draft and a free copy of the final version when it\u2019s done.<span class=\"intersentencespace\"><\/span> We\u2019re offering a launch\/upgrade discount of\n<strong>20% off<\/strong> through the final launch (planned for next month).\n<\/li>\n<li><strong>The <\/strong><em><strong>Rails Tutorial<\/strong><\/em><strong> ebook\/screencast bundle<\/strong>: Get both the ebook and the video screencasts (currently in preparation).<span class=\"intersentencespace\"><\/span> We\u2019re offering a launch\/upgrade discount of\n<strong>33% off<\/strong> to make this valuable bundle more affordable.<span class=\"intersentencespace\"><\/span> <span class=\"break\"><\/span> <em>Note<\/em>: Because the screencasts aren\u2019t finished yet, there\u2019s just a placeholder file for now, but with your purchase you\u2019ll automatically get access to the downloadable video files when they\u2019re done (probably sometime next month).<span class=\"intersentencespace\"><\/span> \n<\/li><\/ul>\n<p><strong>Edit:<\/strong> As of November 2022, we no longer offer individual purchases of ebooks\/videos.<span class=\"intersentencespace\"><\/span> Please refer to our <a href=\"https:\/\/www.learnenough.com\/plans\" target=\"_blank\" rel=\"noopener\">Learn Enough<\/a> page for available purchase options.<\/p>\n<p>I hope you\u2019ll take a look at the draft and let me know what you think.<span class=\"intersentencespace\"><\/span> All bug and typo reports, no matter how small, are greatly appreciated.<span class=\"intersentencespace\"><\/span> You can send such reports to michael@learnenough.com.<\/p>\n<p>As always, we offer a 60-day, 100% money-back guarantee on all purchases.<\/p>\n<p>Enjoy!\n<\/p>","author":{"name":{}},"category":[{"@attributes":{"term":"learnenough-news"}},{"@attributes":{"term":"tutorials"}}]},{"title":"Heroku Errors","link":{"@attributes":{"href":"https:\/\/news.learnenough.com\/heroku-errors","rel":"alternate","type":"text\/html","title":"Heroku Errors"}},"published":"2021-08-12T00:00:00+00:00","updated":"2021-08-12T00:00:00+00:00","id":"https:\/\/news.learnenough.com\/heroku-errors","content":"<p>We\u2019re currently experiencing an outage due to errors at our hosting provider. We\u2019re working on the problem and will be back up as soon as possible.<\/p>\n\n<p><strong>Update:<\/strong> The sites are back up. The problem was a breaking change in how Heroku handles DNS routing. (We hadn\u2019t deployed a new version of our app in three days when the errors started to occur.) We have updated our configuration per a suggestion by Heroku customer support. Thanks to all our customers for their patience while this issue got resolved.<\/p>","author":{"name":{}},"category":[{"@attributes":{"term":"learnenough-news"}},{"@attributes":{"term":"site-status"}}],"summary":"We\u2019re currently experiencing an outage due to errors at our hosting provider. We\u2019re working on the problem and will be back up as soon as possible."},{"title":"Closed Captioning\/Subtitles for Learn Enough Video Courses","link":{"@attributes":{"href":"https:\/\/news.learnenough.com\/closed-captioning-subtitles-learn-enough-courses-video","rel":"alternate","type":"text\/html","title":"Closed Captioning\/Subtitles for Learn Enough Video Courses"}},"published":"2021-05-12T00:00:00+00:00","updated":"2021-05-12T00:00:00+00:00","id":"https:\/\/news.learnenough.com\/closed-captioning-subtitles-learn-enough-courses-video","content":"<p>Michael Hartl here from the <a href=\"https:\/\/www.railstutorial.org\/\" target=\"_blank\" rel=\"noopener\">Rails Tutorial<\/a> and <a href=\"https:\/\/www.learnenough.com\/\" target=\"_blank\" rel=\"noopener\">Learn Enough<\/a>.<span class=\"intersentencespace\"><\/span> This is just a quick announcement that we\u2019ve recently added closed captioning (sometimes called \u201csubtitles\u201d)<sup id=\"cha-0_footnote-ref-1\" class=\"footnote\"><a href=\"#cha-0_footnote-1\">1<\/a><\/sup> to all Learn Enough video courses (including the Ruby on Rails Tutorial).<span class=\"intersentencespace\"><\/span> The captions are available to all <a href=\"https:\/\/www.learnenough.com\/all-access\" target=\"_blank\" rel=\"noopener\">Learn Enough All Access<\/a> subscribers (as well as to subscribers to the individual courses).<\/p>\n<p>To activate closed captioning in the <a href=\"https:\/\/www.learnenough.com\/your-courses\" target=\"_blank\" rel=\"noopener\">Learn Enough courses interface<\/a>, simply go to a course video (<a href=\"#fig-course_video\" class=\"hyperref\">Figure\u00a0<span class=\"ref\">1<\/span><\/a>) and click on the CC in the video window to select \u201cenglish CC\u201d (<a href=\"#fig-english_cc\" class=\"hyperref\">Figure\u00a0<span class=\"ref\">2<\/span><\/a>), with the result as seen in <a href=\"#fig-closed_captions\" class=\"hyperref\">Figure\u00a0<span class=\"ref\">3<\/span><\/a>.<span class=\"intersentencespace\"><\/span> You can switch back by clicking \u201ccaptions off\u201d in the same place (<a href=\"#fig-captions_off\" class=\"hyperref\">Figure\u00a0<span class=\"ref\">4<\/span><\/a>).<\/p>\n<div class=\"center figure\" id=\"fig-course_video\" data-tralics-id=\"uid2\" data-number=\"1\">\n<div class=\"graphics image\"><img src=\"images\/figures\/course_video.png\" alt=\"images\/figures\/course_video\" \/><\/div><div class=\"caption\"><span class=\"header\">Figure 1: <\/span><span class=\"description\">A Learn Enough course with streaming video.\n<\/span><\/div><\/div>\n<div class=\"center figure\" id=\"fig-english_cc\" data-tralics-id=\"uid3\" data-number=\"2\">\n<div class=\"graphics image\"><img src=\"images\/figures\/english_cc.png\" alt=\"images\/figures\/english_cc\" \/><\/div><div class=\"caption\"><span class=\"header\">Figure 2: <\/span><span class=\"description\">Selecting \u201cenglish CC\u201d for closed captioning.\n<\/span><\/div><\/div>\n<div class=\"center figure\" id=\"fig-closed_captions\" data-tralics-id=\"uid4\" data-number=\"3\">\n<div class=\"graphics image\"><img src=\"images\/figures\/closed_captions.png\" alt=\"images\/figures\/closed_captions\" \/><\/div><div class=\"caption\"><span class=\"header\">Figure 3: <\/span><span class=\"description\">The caption itself.\n<\/span><\/div><\/div>\n<div class=\"center figure\" id=\"fig-captions_off\" data-tralics-id=\"uid5\" data-number=\"4\">\n<div class=\"graphics image\"><img src=\"images\/figures\/captions_off.png\" alt=\"images\/figures\/captions_off\" \/><\/div><div class=\"caption\"><span class=\"header\">Figure 4: <\/span><span class=\"description\">Turning closed captioning off.\n<\/span><\/div><\/div>\n<p>The captions are automatically generated, so there may be some minor errors compared to the audio, but they should be enough to give you the gist.<span class=\"intersentencespace\"><\/span> Combined with the text itself, the addition of closed captioning makes the <a href=\"https:\/\/www.learnenough.com\/all-access\" target=\"_blank\" rel=\"noopener\">Learn Enough courses<\/a> accessible to a much wider variety of people.<span class=\"intersentencespace\"><\/span> Enjoy!<\/p>\n<p>P.S. The captions aren\u2019t currently included with downloadable videos like the Learn Enough Everything Bundle, but <a href=\"mailto:support@learnenough.com\" target=\"_blank\" rel=\"noopener\">email us<\/a> and we\u2019ll be happy to give you copies of the generated files.\n<\/p><div id=\"cha-0_footnotes\">\n  <div class=\"footnotes\">\n    <div id=\"cha-0_footnote-1\" class=\"footnote\"><a class=\"footnote-link\" href=\"#cha-0_footnote-ref-1\">1.<\/a> <a href=\"https:\/\/m.xkcd.com\/1475\/\" target=\"_blank\" rel=\"noopener\">Technically<\/a>, subtitles <a href=\"https:\/\/en.wikipedia.org\/wiki\/Closed_captioning\" target=\"_blank\" rel=\"noopener\">refer<\/a> to the \u201ctranscription or translation of the dialogue when sound is available but not understood\u201d, whereas closed captions involve the \u201ctranscription or translation of the dialogue, sound effects, relevant musical cues, and other relevant audio information when sound is unavailable or not clearly audible\u201d.<span class=\"intersentencespace\"><\/span> This new Learn Enough feature covers both cases.<\/div>\n  <\/div>\n<\/div>","author":{"name":{}},"category":[{"@attributes":{"term":"learnenough-news"}},{"@attributes":{"term":"tutorials"}}]},{"title":"Learn Enough for Teams","link":{"@attributes":{"href":"https:\/\/news.learnenough.com\/learn-enough-for-teams","rel":"alternate","type":"text\/html","title":"Learn Enough for Teams"}},"published":"2021-04-08T00:00:00+00:00","updated":"2021-04-08T00:00:00+00:00","id":"https:\/\/news.learnenough.com\/learn-enough-for-teams","content":"<p>Michael Hartl here from the <a href=\"https:\/\/www.railstutorial.org\/\" target=\"_blank\" rel=\"noopener\">Rails Tutorial<\/a> and <a href=\"https:\/\/www.learnenough.com\/\" target=\"_blank\" rel=\"noopener\">Learn Enough<\/a>.<\/p>\n<p>Learn Enough now has teams!<span class=\"intersentencespace\"><\/span> <a href=\"https:\/\/www.learnenough.com\/for-teams\" target=\"_blank\" rel=\"noopener\">Learn Enough for Teams<\/a> lets members of your organization learn key software development skills at their own pace:<\/p>\n<ol>\n<li>Get junior developers on the way to being senior developers\n<\/li>\n<li>Train senior developers on specific technologies like Ruby and Rails\n<\/li>\n<li>Teach non-developers like designers and project managers skills useful for working with developers\n<\/li>\n<li>Get non-developers on the way to being developers\n<\/li><\/ol>\n<div id=\"sec-what_s_included\" data-tralics-id=\"cid1\" class=\"section\" data-number=\"1\"><h2><a href=\"#sec-what_s_included\" class=\"heading\"><span class=\"number\">1 <\/span>What\u2019s included<\/a><\/h2>\n<p><a href=\"https:\/\/www.learnenough.com\/for-teams\" target=\"_blank\" rel=\"noopener\">Learn Enough Team Licenses<\/a> include access to all of the Learn Enough tutorials: self-paced online courses with, streaming videos, progress tracking, exercises, and exercise answers.<span class=\"intersentencespace\"><\/span> Subjects include the Unix command line, text editors, Git, HTML, CSS  Layout, JavaScript, Ruby, and Ruby on Rails.<\/p>\n<div class=\"graphics image\"><img src=\"images\/figures\/tutorials.png\" alt=\"images\/figures\/tutorials\" \/><\/div>\n<p>Team Licenses also include full download access to all of the Learn Enough ebooks and videos (a $452 value!).<span class=\"intersentencespace\"><\/span> It\u2019s basically the Learn Enough <a href=\"https:\/\/www.learnenough.com\/all-access\" target=\"_blank\" rel=\"noopener\">All Access Subscription<\/a> with the ability to download course materials all rolled into one.<\/p>\n<p>With Learn Enough\u2019s OAuth integration, there\u2019s also zero invitation management, and you\u2019ll pay only for what you use.<\/p>\n<p class=\"noindent\"><strong>Learn Enough for Teams<\/strong><\/p>\n<ul>\n<li>Full access to all the Learn Enough courses (including the <em>Ruby on Rails Tutorial<\/em>)\n<\/li>\n<li>Full ebook and video download access for all team members (a $452 value!)<span class=\"intersentencespace\"><\/span>\n<\/li>\n<li>Using Google OAuth means you pay only for the seats you use\n<\/li><\/ul>\n<\/div>\n<div id=\"sec-using_learn_enough_for_teams\" data-tralics-id=\"cid2\" class=\"section\" data-number=\"2\"><h2><a href=\"#sec-using_learn_enough_for_teams\" class=\"heading\"><span class=\"number\">2 <\/span>Using Learn Enough for Teams<\/a><\/h2>\n<p>Getting started with Learn Enough for Teams is simple.<span class=\"intersentencespace\"><\/span> Each team has a Team Owner, who can also be a subscriber but doesn\u2019t have to be.<span class=\"intersentencespace\"><\/span> The rest of this post will assume that you\u2019re the owner in question.<\/p>\n<div id=\"sec-signing_up\" data-tralics-id=\"uid8\" class=\"subsection\" data-number=\"2.1\"><h3><a href=\"#sec-signing_up\" class=\"heading\"><span class=\"number\">2.1 <\/span>Signing up<\/a><\/h3>\n<p>To sign up for a Learn Enough Team License, start by visiting <a href=\"https:\/\/www.learnenough.com\/for-teams\" target=\"_blank\" rel=\"noopener\">Learn Enough for Teams<\/a> and then log in to your Google Workspace account (formerly G\u00a0Suite) (<a href=\"#fig-sign_up\" class=\"hyperref\">Figure\u00a0<span class=\"ref\">1<\/span><\/a>).<\/p>\n<div class=\"center figure\" id=\"fig-sign_up\" data-tralics-id=\"uid9\" data-number=\"1\">\n<div class=\"graphics image\"><img src=\"images\/figures\/sign_up.png\" alt=\"images\/figures\/sign_up\" \/><\/div><div class=\"caption\"><span class=\"header\">Figure 1: <\/span><span class=\"description\">Signing up for a Team License using Google OAuth.\n<\/span><\/div><\/div>\n<blockquote class=\"quotation\"><p class=\"quote\"><em>Note: If your organization manages authentication using a different OAuth provider, please reach out to us at teams@learnenough.com so that we can get our team licenses set up to talk to your user management system.<\/em><\/p>\n<\/blockquote><p>You will be prompted to sign in with a Google account.<span class=\"intersentencespace\"><\/span> Be sure to use the email address corresponding to your company\u2019s Google Workspace account.<span class=\"intersentencespace\"><\/span> For example, if I were starting a Team License for <a href=\"https:\/\/www.softcover.io\" target=\"_blank\" rel=\"noopener\">Softcover<\/a> (Learn Enough\u2019s parent company), I would use michael@softcover.io, as shown in <a href=\"#fig-oauth_account\" class=\"hyperref\">Figure\u00a0<span class=\"ref\">2<\/span><\/a>.<\/p>\n<div class=\"center figure\" id=\"fig-oauth_account\" data-tralics-id=\"uid10\" data-number=\"2\">\n<div class=\"graphics image\"><img src=\"images\/figures\/oauth_account.png\" alt=\"images\/figures\/oauth_account\" \/><\/div><div class=\"caption\"><span class=\"header\">Figure 2: <\/span><span class=\"description\">Selecting the account for Google OAuth.\n<\/span><\/div><\/div>\n<p>After logging in, you\u2019ll be redirected to the main Learn Enough for Teams signup page, where you should fill in your organization\u2019s name, upload an optional logo, and include the number of a company credit card (<a href=\"#fig-team_details\" class=\"hyperref\">Figure\u00a0<span class=\"ref\">3<\/span><\/a>).<\/p>\n<div class=\"center figure\" id=\"fig-team_details\" data-tralics-id=\"uid11\" data-number=\"3\">\n<div class=\"graphics image\"><img src=\"images\/figures\/team_details.png\" alt=\"images\/figures\/team_details\" \/><\/div><div class=\"caption\"><span class=\"header\">Figure 3: <\/span><span class=\"description\">Filling in team details.\n<\/span><\/div><\/div>\n<p>Once you complete your checkout (<a href=\"#fig-complete_checkout\" class=\"hyperref\">Figure\u00a0<span class=\"ref\">4<\/span><\/a>), you\u2019ll be forwarded to your team dashboard (<a href=\"#fig-team_dashboard\" class=\"hyperref\">Figure\u00a0<span class=\"ref\">5<\/span><\/a>).<span class=\"intersentencespace\"><\/span> Note that, as Team Owner, you won\u2019t be charged anything initially\u2014you pay only for the users who are invited and activated (<a href=\"#sec-inviting_users\" class=\"hyperref\">Section\u00a0<span class=\"ref\">2.2<\/span><\/a>).<span class=\"intersentencespace\"><\/span> Learn Enough for Teams bills monthly and comes with a 60-day money-back guarantee.<\/p>\n<div class=\"center figure\" id=\"fig-complete_checkout\" data-tralics-id=\"uid12\" data-number=\"4\">\n<div class=\"graphics image\"><img src=\"images\/figures\/complete_checkout.png\" alt=\"images\/figures\/complete_checkout\" \/><\/div><div class=\"caption\"><span class=\"header\">Figure 4: <\/span><span class=\"description\">Completing the Team Licenses checkout.\n<\/span><\/div><\/div>\n<div class=\"center figure\" id=\"fig-team_dashboard\" data-tralics-id=\"uid13\" data-number=\"5\">\n<div class=\"graphics image\"><img src=\"images\/figures\/team_dashboard.png\" alt=\"images\/figures\/team_dashboard\" \/><\/div><div class=\"caption\"><span class=\"header\">Figure 5: <\/span><span class=\"description\">The initial team dashboard.\n<\/span><\/div><\/div>\n<\/div>\n<div id=\"sec-inviting_users\" data-tralics-id=\"uid14\" class=\"subsection\" data-number=\"2.2\"><h3><a href=\"#sec-inviting_users\" class=\"heading\"><span class=\"number\">2.2 <\/span>Inviting users<\/a><\/h3>\n<p>As Team Owner, you can invite new users by clicking on the Invite Users tab and entering the new member\u2019s name and company email address (<a href=\"#fig-invite_user\" class=\"hyperref\">Figure\u00a0<span class=\"ref\">6<\/span><\/a>).<span class=\"intersentencespace\"><\/span> (Be sure to use an email address that\u2019s part of the same Google Workspace account as in <a href=\"#sec-signing_up\" class=\"hyperref\">Section\u00a0<span class=\"ref\">2.1<\/span><\/a>.)<\/p>\n<div class=\"center figure\" id=\"fig-invite_user\" data-tralics-id=\"uid15\" data-number=\"6\">\n<div class=\"graphics image\"><img src=\"images\/figures\/invite_user.png\" alt=\"images\/figures\/invite_user\" \/><\/div><div class=\"caption\"><span class=\"header\">Figure 6: <\/span><span class=\"description\">Inviting a user to the team.\n<\/span><\/div><\/div>\n<p>New users are added in a Pending state (<a href=\"#fig-pending_user\" class=\"hyperref\">Figure\u00a0<span class=\"ref\">7<\/span><\/a>) and are sent an invitation to sign in using Google OAuth (<a href=\"#fig-team_user_login\" class=\"hyperref\">Figure\u00a0<span class=\"ref\">8<\/span><\/a>).<\/p>\n<div class=\"center figure\" id=\"fig-pending_user\" data-tralics-id=\"uid16\" data-number=\"7\">\n<div class=\"graphics image\"><img src=\"images\/figures\/pending_user.png\" alt=\"images\/figures\/pending_user\" \/><\/div><div class=\"caption\"><span class=\"header\">Figure 7: <\/span><span class=\"description\">A pending team user.\n<\/span><\/div><\/div>\n<div class=\"center figure\" id=\"fig-team_user_login\" data-tralics-id=\"uid17\" data-number=\"8\">\n<div class=\"graphics image\"><img src=\"images\/figures\/team_user_login.png\" alt=\"images\/figures\/team_user_login\" \/><\/div><div class=\"caption\"><span class=\"header\">Figure 8: <\/span><span class=\"description\">A team user logging in with OAuth.\n<\/span><\/div><\/div>\n<p>Upon signing in, the new user\u2019s account is automatically activated and they are forwarded to their Learn Enough courses page (<a href=\"#fig-courses_page\" class=\"hyperref\">Figure\u00a0<span class=\"ref\">9<\/span><\/a>).<span class=\"intersentencespace\"><\/span> From there, they can start any course or download any book or video they like (<a href=\"#fig-your_courses\" class=\"hyperref\">Figure\u00a0<span class=\"ref\">10<\/span><\/a>)\u2014such as the first Learn Enough tutorial, <em>Learn Enough Command Line to Be Dangerous<\/em> (<a href=\"#fig-command_line_course\" class=\"hyperref\">Figure\u00a0<span class=\"ref\">11<\/span><\/a>).<\/p>\n<div class=\"center figure\" id=\"fig-courses_page\" data-tralics-id=\"uid18\" data-number=\"9\">\n<div class=\"graphics image\"><img src=\"images\/figures\/courses_page.png\" alt=\"images\/figures\/courses_page\" \/><\/div><div class=\"caption\"><span class=\"header\">Figure 9: <\/span><span class=\"description\">The Learn Enough courses page.\n<\/span><\/div><\/div>\n<div class=\"center figure\" id=\"fig-your_courses\" data-tralics-id=\"uid19\" data-number=\"10\">\n<div class=\"graphics image\"><img src=\"images\/figures\/your_courses.png\" alt=\"images\/figures\/your_courses\" \/><\/div><div class=\"caption\"><span class=\"header\">Figure 10: <\/span><span class=\"description\">Team Licenses include both courses and downloads.\n<\/span><\/div><\/div>\n<div class=\"center figure\" id=\"fig-command_line_course\" data-tralics-id=\"uid20\" data-number=\"11\">\n<div class=\"graphics image\"><img src=\"images\/figures\/command_line_course.png\" alt=\"images\/figures\/command_line_course\" \/><\/div><div class=\"caption\"><span class=\"header\">Figure 11: <\/span><span class=\"description\">The course for <em>Learn Enough Command Line to Be Dangerous<\/em>.\n<\/span><\/div><\/div>\n<p>For future logins, team members can simply use the OAuth option on the <a href=\"https:\/\/www.learnenough.com\/login\" target=\"_blank\" rel=\"noopener\">login page<\/a> (<a href=\"#fig-oauth_login\" class=\"hyperref\">Figure\u00a0<span class=\"ref\">12<\/span><\/a>).<\/p>\n<div class=\"center figure\" id=\"fig-oauth_login\" data-tralics-id=\"uid21\" data-number=\"12\">\n<div class=\"graphics image\"><img src=\"images\/figures\/oauth_login.png\" alt=\"images\/figures\/oauth_login\" \/><\/div><div class=\"caption\"><span class=\"header\">Figure 12: <\/span><span class=\"description\">The OAuth option on the login page.\n<\/span><\/div><\/div>\n<\/div>\n<div id=\"sec-that_s_it\" data-tralics-id=\"uid22\" class=\"subsection\" data-number=\"2.3\"><h3><a href=\"#sec-that_s_it\" class=\"heading\"><span class=\"number\">2.3 <\/span>That\u2019s it!<\/a><\/h3>\n<p>That\u2019s it!<span class=\"intersentencespace\"><\/span> Your team now has full access to both the Learn Enough online courses and downloads for all of the Learn Enough ebooks and videos, including the full <em>Ruby on Rails Tutorial<\/em>.<\/p>\n<p><a href=\"https:\/\/www.learnenough.com\/for-teams\" target=\"_blank\" rel=\"noopener\">Learn Enough for Teams<\/a> is a relatively new feature that is under active development.<span class=\"intersentencespace\"><\/span> If you have any feedback or suggestions, or would like an individual demo, please let us know at <a href=\"mailto:teams@learnenough.com\" target=\"_blank\" rel=\"noopener\">teams@learnenough.com<\/a>.<span class=\"intersentencespace\"><\/span> Thanks!<\/p>\n<p><small><em><a href=\"https:\/\/www.flickr.com\/photos\/yodelanecdotal\/3927004398\" target=\"_blank\" rel=\"noopener\">Team image<\/a> used under the terms of the Creative Commons <a href=\"https:\/\/creativecommons.org\/licenses\/by\/2.0\/\" target=\"_blank\" rel=\"noopener\">Attribution Generic\u00a02.0<\/a> license<\/em><\/small><small>.\n<\/small><\/p><\/div><\/div>","author":{"name":{}},"category":[{"@attributes":{"term":"learnenough-news"}},{"@attributes":{"term":"tutorials"}},{"@attributes":{"term":"teams"}}]}]}