Java Testing with Spock: A good (and sometimes Groovy) guide to using this powerful testing framework – #programming #java

Java Testing with Spock

Konstantinos Kapelonis

Manning, paperback


Spock, the author states, is “a comprehensive testing framework for Java (and Groovy) code that can help you automate the boring, repetitive, and manual process of testing a software application. Spock is comprehensive because it’s a union of existing testing libraries”—specifically JUnit, Mockito and JBehave. It also is influenced by several others.

What is Spock’s main advantage in test scenarios? “When things go wrong,” Konstantinos Kapelonis notes, “Spock gives as much detail as possible on the inner workings of the code at the time of the failure.”

Spock is written in Groovy, and just mentioning that language, as well as the Gradle build tool, may give a little heartburn to hardcore Java developers who don’t want to learn them. But others find Groovy refreshingly efficient and Gradle easy to use. In any case, using Groovy (and Gradle) with this book is “optional,” the author emphasizes. As noted in Appendix A, “It’s perfectly possible to use Spock in your Java project without installing Groovy itself.”

To emphasize that point, Kapelonis shows how to use Spock with the Maven build tool first, before he delves into how to use Spock with the Gradle build tool.

The book is divided into three major parts: (1) Foundations and brief tour of Spock; (2) Structuring Spock tests; and (3) Spock in the Enterprise.

Two appendices deal with installing and using Spock, plus getting your IDE set up, and using the book’s example files.

Java Testing with Spock is a comprehensive guide to learning how to do Java (and Groovy) testing with Spock, and it is generally well written and adequately illustrated.

I chose to try the Groovy-Gradle approach, with Eclipse as my IDE. And I did run into some awkward moments trying to get Eclipse Mars.2 to play correctly. The Groovy-Gradle plug-in from the Eclipse Marketplace was for earlier versions of Eclipse, and so was the Spock plug-in. After some tinkering and reconfiguring, I was able to get things working together and do some Java and Groovy tests. To be fair, I was doing this on a kludged-together Windows 10 machine that definitely is no development powerhouse. And I did not have time to try out the Maven approach, but I have used Maven in the past, and the author’s instructions and examples for Maven look solid.

Java Testing with Spock is a good, helpful how-to book for anyone who wants to know more about putting the Spock testing framework to good use at all levels of Java development.

Si Dunn

Ionic in Action – A solid guide to building hybrid mobile apps with Ionic and AngularJS – #programming #bookreview

Ionic in Action

Hybrid Mobile Apps with Ionic and AngularJS

Jeremy Wilken

(Manning, paperback)

Ionic in Action is a very good introduction to the Ionic framework, which the author describes as “a combination of tools and utilities….” These tools and utilities enable developers “to quickly build hybrid mobile apps using the same technology used to build websites and web applications, primarily HTML, CSS (Cascading Style Sheets) and JavaScript.” Using Ionic, you build “hybrid mobile apps,” which employ a browser window to display the user interface.

Ionic in Action shows how build three different mobile web apps. And, while working on those apps, you encounter virtually every feature that Ionic offers. I recently started learning Ionic, so I am pleased with how this book is organized and impressed that it has some important blessings from Adam Bradley, a co-creator of the Ionic framework.

Ionic is built on top of AngularJS, and it interacts with Cordova. The author of Ionic in Action, Jeremy Wilken, promises that being familiar with AngularJS is “helpful but not required.” However, as someone who has wrestled with AngularJS (and been slammed to the scope mat more than once), I am pleased that this book includes a chapter titled “What you need to know about AngularJS.” And, as in the rest of the book, you learn by doing, not just by reading explanations and looking at illustrations.

In the Angular chapter, you build a basic web application using AngularJS. Of course, one chapter does not take the place of a good AngularJS tutorial. But it provides a useful starting point.

Whether you are working to become a mobile app developer or seeking to improve and widen some existing skills, this is a good book both to learn from and keep handy in your reference library.

Si Dunn

Unity in Action: A top-notch how-to guide for game developers – #gamedev #programming

Unity in Action

Joseph Hocking

Manning – paperback

Unity, the cross-platform game development environment, is easy to download and get running. But it definitely is not easy to learn without some help.

Fortunately, Joe Hocking’s Unity in Action makes it reasonably straightforward to learn how to develop games in 3D, as well as with Unity’s new 2D capabilities. The book takes the reader from “Hello, World” all the way to “Putting the parts together into a complete game” and then “Deploying your game to players’ devices.”

Even with this fine book, however, game development can be hard and complicated work. There are many different elements to consider, such as “Adding enemies and projectiles to the 3D game”, “Developing graphics for your game”, “Adding interactive devices and items within the game,” and putting sound effects and music into your game. Hocking’s book does a good job of showing how to handle these tasks, plus many more.

You may have heard Unity described as a game development environment where you don’t have to know how to program. Yes, you might be able to create some games without programming skills. But, “to produce commercial titles” using Unity, you definitely need some programming experience, Hocking emphasizes. In this case, you should have some knowledge of C#, but a background in some other object-oriented (OO) programming language will be helpful if you are new to C#, he adds.

Hocking’s book has many examples, illustrations, headings and subheadings. But step-by-step listings are sparse. Therefore, be prepared to read the text closely and, if necessary, develop lists of steps yourself. There is nothing wrong with this approach, and it is not really a criticism of the book. Game development, after all, is not something that you can, nor should, just dive into and speed through, step by step. It requires a lot of careful planning and thought before you start.

Unity in Action wastes no time. It gets right to the essential stuff you need to know. And it can get you into action reasonably fast as a game developer. But “reasonably fast” in this case must be defined by how quickly you personally can learn to handle Unity, plus the myriad tasks of planning, creating, testing, revising and distributing a game.

Si Dunn


Elixir in Action: A good guide to the ‘alternative language for the Erlang virtual machine’ – #programming #bookreview



Elixir in Action

Saša Jurić

Manning – paperback

“Elixir,”  Saša Jurić writes, “is a modern functional programming language for building large-scale, distributed, fault-tolerant systems for the Erlang virtual machine.”

What Elixir really is, of course, is a breath of fresh air for software developers who find it hard or confusing to work with Erlang’s sometimes complicated syntax and conventions.

Erlang has long been almost off the chart–the bottom of the chart–when computer languages are stacked up by popularity.  It began its oddball life in the 1980s as a programming language for the computers in telephone switching systems, specifically Swedish-made, Ericsson telephone switching systems.

Indeed, I first encountered Erlang in the  late 1980s while trying to help Ericsson sell Swedish-made computers to American banks. Back then, I counted my lucky stars that I didn’t have to learn it, because I was a tech writer, not a software developer.

Today, however, Erlang and its Open Telecom Platform (OTP) libraries are gaining new converts among serious practitioners of functional programming. Many of them likewise are drawn to Erlang’s built-in support for concurrency, distribution and fault tolerance.

The digital Swedish meatball known as Erlang turns out to be a powerful choice for providing high reliability and scalability to networked and distributed systems with multi-core processors. Telephone networks require high reliability and flexible scalability. And Erlang was designed to help provide both — without limiting itself to telecom systems.

Some of Erlang’s lack of popularity can be blamed on the language’s somewhat difficult learning curve. But it also has not been heavily promoted to software developers. That has been changing recently as companies and developers learn more about Erlang’s good track record, Saša Jurić points out.

“It powers various large systems and has been doing so for more than two decades, such as the WhatsApp messaging application, the Riak distributed database, the Heroku cloud, the Chef deployment automation system, the RabbitMQ message queue, financial systems, and multiplayer backends. It’s truly a proven technology.”

In Elixir in Action,  Saša Jurić nicely meets his goal of writing a book that brings “programmers new to Elixir and Erlang to the point where they can develop complex systems on their own.” Elixir provides an alternative language based on several other languages, including Ruby and Clojure, as well as Erlang.

Jurić’s how-to guide requires no prior experience with either Erlang or Elixir, but you should be familiar with at least one other programming language, such as JavaScript, C# or Ruby.

His book is divided into three parts:

  • Part 1, “The Language,” offers a high-level overview of Erlang and Elixir. Then it delves into Elixir’s basic building blocks and details common functional programming idioms.
  • Part 2, “The Platform,” focuses on primary aspects of BEAM, the Erlang virtual machine, as well as “how concurrency works and how it can help you build reliable systems.” Indeed, “[c]oncurrency is at the heart and soul of Erlang systems,” Jurić writes. “Almost every nontrivial Erlang-based production system is highly concurrent. Even the programming language is sometimes called a concurrency-oriented language.”
  • Part 3, “Production,”discusses “production aspects of BEAM-powered systems,” as well as “how to package components, reuse third-party libraries, and build a simple web server,” and “how to build a deployable standalone release and how to interact with the running system.”

Elixir in Action does not cover everything. But it provides fine overviews, clear how-to instructions, and compact code examples that illustrate important points. It can get you going in good directions.

“Elixir,” the author emphasizes, “lowers the entry barrier into the Erlang world and improves developer productivity.”

 — Si Dunn


Groovy in Action, Second Edition – A hefty how-to guide newly updated for Groovy 2.4 – #programming #bookreview

Groovy in Action, Second Edition

Dierik König and Paul King, with Guillaume Laforge, Hamlet D’Arcy,
Cédric Champeau, Eric Pragt and Jon Skeet

Manning – paperback

Groovy in Action, Second Edition, is not light reading. Indeed, the printed book weighs nearly three and a half pounds and has 880 pages. But it is great reading for anyone who wants to learn, or get better at, the increasingly popular Groovy scripting language that works very smoothly with Java. Indeed, Java’s creator, James Gosling, has hailed Groovy’s “smooth and efficient” integration with Java and called Groovy “an effective implementation language in its own right.” He also has praised the Groovy in Action book as “a clear and detailed exposition of what is groovy about Groovy.”

The Second Edition‘s two main authors and five assisting authors are members of the Groovy core team. And their book spent a lot of time being reviewed and tested by readers in the Manning Early Access Program (MEAP) before it was formally released. So it likely has a better preparation record than many programming books currently on the market.

Groovy in Action‘s front flap indicates that the book covers Groovy 2.4. Groovy recently was up to version 2.4.3, but the programming language has maintained a good track record for supporting backward compatibility. Indeed, I tested random selections of the book’s code samples using version 2.2.0 and its Groovy Console, and programs compiled and ran without problem.

However, if you own the first edition of Groovy in Action, you likely will want to upgrade to the new book. It is, the authors state, “a full rewrite,” with several new chapters, plus  “a few hundred additional pages of genuinely new content.” (And yes, I am upgrading my Groovy installation from 2.2.0 to 2.4.3.)

Despite its heft, the book is nicely structured and easily approached. And its many code examples are mercifully compact, for the most part, and available online, if you prefer. (I actually enjoy keying reasonably short code examples into the Groovy Console.)

The 20 chapters are organized into three major parts:

  • The Groovy Language
  • Around the Groovy Library
  • Applied Groovy

“The Groovy Language” introduces the reader to the language’s basics: its “syntax, grammar, and typical idioms,” plus how to use dynamically typed Groovy as a static language, if desired. The “Around the Groovy Library” reference section focuses on such topics as working with builders and the Groovy Development Kit (GDK), as well as Groovy’s support for database programming and the handling of JSON and XML. And “Applied Groovy” looks at “typical uses cases for Groovy,” including “a thorough exposition of how to use Groovy for test automation,” how to put Groovy to work on multi-core machines in concurrent programming situations, and “using Groovy for domain specific languages.”

In short, there is no shortage of useful content in Groovy in Action, Second Edition.

Si Dunn

Get Groovy in Action, Second Edition here, at no extra cost.

R IN ACTION: Data Analysis and Graphics with R, 2nd Edition – #bookreview

R in Action

Data Analysis and Graphics with R

Robert I. Kabacoff

Manning – paperback

Whether data analysis is your field, your current major or your next career-change ambition, you likely should get this book. Free and open source  R is one of the world’s most popular languages for data analysis and visualization. And Robert I. Kabacoff’s updated new edition is, in my opinion, one of the top books out there for getting a handle on R. (I have used and previously reviewed several R how-to books.)

R is relatively easy to install on Windows, Mac OS X and Linux machines. But it is generally considered difficult to learn. Much of that is because of its rich abundance of features and packages, as well as its ability to create many types of graphs. “The base installation,” Kabacoff writes, “provides hundreds of data-management, statistical, and graphical functions out of the box. But some of its most powerful features come from the thousands of extensions (packages) provided by contributing authors.”

Kabacoff concedes: “It can be hard for new users to get a handle on what R is and what it can do.” And: “Even the most experienced R user is surprised to learn about features they were unaware of.”

R in Action, Second Edition, contains more than 200 pages of new material. And it is nicely structured to meet the needs of R beginners, as well as those of us who have some experience and want to gain more.

The book (579 pages in print format) is divided into five major parts. The first part, “Getting Started,” takes the beginner from an installing and trying R to creating data sets, working with graphs, and managing data. Part 2, “Basic Methods,”focuses on graphical and statistical techniques for obtaining basic information about data.”

Part 3, “Intermediate Methods,” moves the reader well beyond “describing the relationship between two variables.” It introduces  regression, analysis of variance, power analysis, intermediate graphs, and resampling statistics and bootstrapping. Part 4 presents “Advanced Methods,” including generalized linear models, principal components and factor analysis, time series, cluster analysis, classification, and advanced methods for missing data.

Part 5, meanwhile, offers how-to information for “Expanding Your Skills.” The topics include: advanced graphics with ggplot2, advanced programming, creating a package, creating dynamic reports, and developing advanced graphics with the lattice program.

A key strength of R in Action, Second Edition is Kabacoff’s use of generally short code examples to illustrate many of the ways that data can be entered, manipulated, analyzed and displayed in graphical form.

The first thing I did, however, was start at the very back of the book, Appendix G, and upgrade my existing version of R to 3.2.1, “World-Famous Astronaut.” The upgrade instructions could have been a little bit clearer, but after hitting a couple of unmentioned prompts and changing a couple of wrong choices, the process turned out to be quick and smooth.

Then I started reading chapters and keying in some of the code examples. I had not used R much recently, so it was fun again to enter some commands and numbers and have nicely formatted graphs suddenly pop open on the screen.

Even better, it is nice to have a LOT of new things to learn, with a well-written, well-illustrated guidebook in hand.

Si Dunn


BIG DATA: A well-written look at principles & best practices of scalable real-time data systems – #bookreview



Big Data

Principles and best practices of scalable real-time data systems

Nathan Marz, with James Warren

Manning – paperback

Get this book, whether you are new to working with Big Data or now an old hand at dealing with Big Data’s seemingly never-ending (and steadily expanding) complexities.

You may not agree with all that the authors offer or contend in this well-written “theory” text. But Nathan Marz’s Lambda Architecture is well worth serious consideration, especially if you are now trying to come up with more reliable and more efficient approaches to processing and mining Big Data. The writers’ explanations of some of the power, problems, and possibilities of Big Data are among the clearest and best I have read.

“More than 30,000 gigabytes of data are generated every second, and the rate of data creation is only accelerating,” Marz and Warren point out.

Thus, previous “solutions” for working with Big Data are now getting overwhelmed, not only by the sheer volume of information pouring in but by greater system complexities and failures of overworked hardware that now plague many outmoded systems.

The authors have structured their book to show “how to approach building a solution to any Big Data problem. The principles you’ll learn hold true regardless of the tooling in the current landscape, and you can use these principles to rigorously choose what tools are appropriate for your application.” In other words, they write, you will “learn how to fish, not just how to use a particular fishing rod.”

Marz’s Lambda Architecture also is at the heart of Big Data, the book. It is, the two authors explain, “an architecture that takes advantage of clustered hardware along with new tools designed specifically to capture and analyze web-scale data. It describes a scalable, easy-to-understand approach to Big Data systems that can be built and run by a small team.”

The Lambda Architecture has three layers: the batch layer, the serving layer, and the speed layer.

Not surprisingly, the book likewise is divided into three parts, each focusing on one of the layers:

  • In Part 1, chapters 4 through 9 deal with various aspects of the batch layer, such as building a batch layer from end to end and implementing an example batch layer.
  • Part 2 has two chapters that zero in on the serving layer. “The serving layer consists of databases that index and serve the results of the batch layer,” the writers explain. “Part 2 is short because databases that don’t require random writes are extraordinarily simple.”
  • In Part 3, chapters 12 through 17 explore and explain the Lambda Architecture’s speed layer, which “compensates for the high latency of the batch layer to enable up-to-date results for queries.”

Marz and Warren contend that “[t]he benefits of data systems built using the Lambda Architecture go beyond just scaling. Because your system will be able to handle much larger amounts of data, you’ll be able to collect even more data and get more value out of it. Increasing the amount and types of data you store will lead to more opportunities to mine your data, produce analytics, and build new applications.”

This book requires no previous experience with large-scale data analysis, nor with NoSQL tools. However, it helps to be somewhat familiar with traditional databases. Nathan Marz is the creator of Apache Storm and originator of the Lambda Architecture. James Warren is an analytics architect with a background in machine learning and scientific computing.

If you think the Big Data world already is too much with us, just stick around a while. Soon, it may involve almost every aspect of our lives.

Si Dunn

Programming for Musicians and Digital Artists: Creating Music with ChucK – #music #programming #bookreview



Programming for Musicians and Digital Artists

Creating Music with ChucK

Ajay Kapur, Perry Cook, Spencer Salazar and Ge Wang

Manning – paperback

Manning’s Programming for Musicians and Digital Artists is enjoyable, informative reading, particularly if you like music and programming and are motivated to combine them in some way.

The book offers plenty of clear how-to content for those who want to take their first deep dives into the techniques needed to make, modify and perform music using computers.

Indeed, this excellent guide can help take you from generating  “Hello, World” and “Twinkle, Twinkle, Little Star” to linking up with MIDI devices and creating sophisticated music and sounds that can be used in live performances and elsewhere.

Don’t be scared by the word “Programming” in the title. Yes, it can help–but it is not required–to have a little bit of programming experience. As you start working with the audio-centric programming language ChucK, you will simply type a few brief lines of code or paste them from downloaded files into a simple on-screen tool known as the “miniAudicle.” With this tool, you can then make changes and hear the results “instantly without interrupting other sounds being synthesized and heard,” the authors point out. You also can save your files, load different files and do other tasks quickly.

The free, open-source ChucK programming language, the authors’ emphasize, “is designed specifically for real-time sound synthesis and music creation.” Their book provides numerous short code examples to tinker with, as well as a few basic physics, math and music pointers that illustrate features and help support the authors’ descriptions.

Note: If your goal is to sit down at a keyboard and immediately start creating digital music, you may want to skip this book and look for other options. The authors concede that “many artists are happy with over-the-counter software systems and controllers for real-time performance work. And there are many who only want to use computers to produce static final products in the form of .wav/.mp3 files, CDs or collections of songs, sound tracks for videos, and more. A large number of those artists are happy to learn and use the packages and tools from commercial or free sources.

“But there are many, and we’re betting you’re one, who want more,” they add. “Maybe you’re coming to this book with a big idea (or many big ideas) and want the tools to help you realize it/them. Maybe you’re looking to shift directions in your art making. Or perhaps you already know how to program in a language such as Java, but you find it doesn’t do what you want.”

ChucK gives you “greater under-the-hood access” than some of the other popular music/sound languages and systems, such as Csound, SuperCollider, JSyn, Max/MSP and PD (Pure Data). And Chuck, the authors note, “is generally more succinct, requiring much less code (lines of typed text) than these other languages in order to accomplish a particular task.”

You learn how to work with many different tools, ranging from oscillators, to filters, to delay generators, reverberators and other audio effects, and MIDI (even without a MIDI interface and cable). You also learn how to generate the sounds of several different musical instruments.

ChucK has a key emphasis on ease of controlling time: for example, how long a tone or sounds occurs, how often it occurs within a set time period, and how long are the silences between tones or sounds.

I have not yet tried all of the code examples in the book, but the ones I have tried in several chapters have worked very well on a Windows laptop and are easily modified and tested in real time using the miniAudicle. (The book also shows how to install ChucK on Mac OS X and Ubuntu Linux systems).

Thus far, I have encountered only one typo in the printed book’s code examples. In Listing 1.8, “Playing notes with integer values,” there is a mistake in the line that is supposed to multiply the frequency of a tone pitch by 2. However, the line is printed “1 *=> myPitch;” — which simply repeats previous pitch. Changing the line to “2 *=> myPitch;” fixes the problem and takes only a couple of seconds to implement in the miniAudicle.

Si Dunn


SOFT SKILLS: A very useful ‘life manual’ for software developers – #programming #bookreview

Soft Skills

The Software Developer’s Life Manual

John Z. Sonmez

Manning paperback

I really wish I had had this book when I started a 14-year career in software development and testing. I was hired back in the days when you could get a software job by having a college degree (in anything), a couple of positive references and some decent writing skills. If you could also turn on a computer and bring up the DOS prompt, so much the better.

No matter how many skills you actually had, you were going to spend a couple of months learning your new environment and your new job, while also attending free, company-sponsored training classes (during working hours). Meanwhile, if you had any questions, you could just go ask the C guru down the hall or dour Mister Assembler, who lived in the big, corner cubicle and seemed to have no other life.

I am retired now from the corporate world of software. And when, out of curiosity, I look at today’s help-wanted postings for developers and testers, I am stunned by how much knowledge, training and verifiable skills one person is expected to bring to the table. At least ten jobs, it seems, have been rolled into one.

For that reason and more, I highly recommend Soft Skills by John Z. Sonmez. He believes, he says, in taking “a holistic approach to software development. This means that I think that if you want to be a better software developer—a better anything, really—you need to focus on the entire person, not just one or two areas of your life.”

Sonmez offers up a wealth of how-to information and useful advice covering everything from “hacking” a job interview to developing a personal brand and staying physically fit in a job that requires long hours sitting on one’s butt. He also offers tips for learning new things quickly, staying productive (using a modified version of the Pomodoro Technique)–and investing part of your paycheck so you can retire early or at least have a comfortable cushion if you get laid off and decide to become an independent consultant.

Yes, there is a lot of common advice sense in Soft Skills–the kind of advice you likely have heard before but ignored. Still, Sonmez’s book makes clear, compelling cases for why you really do have to watch out for–and take care of–yourself these days. You seemingly can’t count on an employer to do much of anything anymore, except view you as a unit of cost to be reduced or eliminated as soon as possible.

“Most software developers starting out in their careers make a few huge mistakes,” Sonmez writes. “The biggest of those mistakes, by far, is not treating their software development career as a business. Don’t be fooled; when you set out into the world to write code for a living, you’re no different than the blacksmith of old times setting up shop in a medieval town. Times may have changed, and most of us work for a company, but our skills and our trade belong to us and we can always choose to set up shop somewhere else. This kind of mindset is crucial to managing your career, because when you start to think of yourself as a business, you start to make good business decisions.”

This is a mindset I wish I had acquired and expanded when I got my first job in software and then began to surf the periodic waves of layoffs. If you are new at working in software development or still trying to get your foot in the door, you can get some very good information and guidance from this book. The same goes if your career currently is floundering and needs a reboot. Don’t just hit CTRL-ALT-DEL and go storming out the door. Try reading some of Sonmez’s chapters first–and at least have your resume reworked by experts who can help you boost your personal “brand.”

Si Dunn


NODE.js IN PRACTICE – A well-focused guide to understanding & using this powerful web development platform – #programming #bookreview


Node.js in Practice

Alex Young and Marc Harter

Manning – paperback

I have had a long-term, love-ignore relationship with Node.js. I have taken Node classes, read Node books, and tinkered with Node programming both on Windows and Linux machines. Sometimes I have loved working with Node.js. Other times, I have ignored it for months at a stretch while I rush around trying out other choices and development distractions: Clojure, Erlang, Grails, Hadoop, and Ember.js, for example — the list goes on and on.

Node.js in Practice is aimed at intermediate Node.js programmers and even advanced Node.js programmers. There is some awareness that beginners also may be reading this book. So the authors start by explaining Node from the standpoint of “what it is, how it works, and why it’s something you can’t live without.” Then they quickly recommend that Node newcomers should stop for now and read another good, but more basic, how-to book first: Node.js in Action.

In Node.js in Practice, the learning curve can start getting steep fairly quickly, especially for those of us who have worked somewhat superficially with Node in web projects that also involve other software (such as the MEAN stack: MongoDB, Express and AngularJS, plus Node). Fortunately, the authors, Alex Young and Marc Harter, take a very focused, three-part approach that keeps Node.js centered in the spotlight and promotes deeper understanding.

Part One focuses on “Node’s core fundamentals” and “what’s possible using only Node’s core modules (no third-party modules).” Part Two moves into “real-world development recipes” and shows how to “master four highly applicable skills—testing, web development, debugging, and running Node in production.” Some third-party modules also are introduced. Part Three, meanwhile, emphasizes “creating your own Node modules in a straightforward manner that ties in all kinds of ways to use npm commands for packaging, running, testing, benchmarking, and sharing modules. It also includes helpful tips on versioning projects effectively.”

The book offers “115 techniques…each module covering a specific Node.js topic or task, and each divided into practical Problem/Solution/Discussion sections.” I really like this approach, and the illustrated discussions that accompany each short code example are especially helpful.

For me, it has been a pleasure to upgrade to the latest version of Node.js and reconnect with it using this new book. Despite my previous experience with Node.js, I see a lot to learn! My thanks to Manning for providing a review copy of Node.js in Practice.