<?xml version="1.0" encoding="utf-8"?> <feed xmlns="http://www.w3.org/2005/Atom"> <generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator> <link href="https://blog.jaysinh.dev/tags/books/feed.xml" rel="self" type="application/atom+xml"/> <link href="https://blog.jaysinh.dev/" rel="alternate" type="text/html"/> <updated>2026-08-01T12:49:14+00:00</updated> <id>https://blog.jaysinh.dev/</id> <title type="html">Jaysinh’s own heed</title> <subtitle>I am a Full-stack developer by profession, Computer scientist by heart and an Actor by gene. I write mostly on programming topics. Browse through my blog posts to identify my taste of writing. </subtitle> <entry> <title type="html">Book review ‘Docker Up &amp;amp; Running’</title> <link href="https://blog.jaysinh.dev/2017/12/05/book-review-docker-up-running.html" rel="alternate" type="text/html" title="Book review &apos;Docker Up &amp; Running&apos;"/> <published>2017-12-05T05:56:32+00:00</published> <updated>2017-12-05T05:56:32+00:00</updated> <id>https://blog.jaysinh.dev/2017/12/05/book-review-docker-up-running</id> <content type="html" xml:base="https://blog.jaysinh.dev/2017/12/05/book-review-docker-up-running.html">&lt;p&gt;&lt;img src=&quot;https://blog.jaysinh.dev/assets/images/book_review_docker_up_and_running/main.jpg&quot; alt=&quot;book image docker up and running&quot; /&gt;&lt;/p&gt; &lt;p&gt;In the modern era of software engineering, terms are coined with a new wrapper. Such wrappers are required to make bread-and-butter out of it. Sometimes good marketed terms are adopted as best practices. I was having a lot of confusion about this Docker technology. Even I was unfamiliar with the concept of containers. My certain goal was to get a higher level overview first and then come to a conclusion. I started reading about the Docker from its official getting started guide. It helped me to host this blog using Docker, but I was expecting some more in-depth overview. With that reason, I decided to look for better resources. By reading some Quora posts and Goodreads reviews, I decided to read “Docker Up &amp;amp; Running by K. Matthias and S. Kane”. I am sharing my reading experience here.&lt;/p&gt; &lt;h2 id=&quot;tldr&quot;&gt;TL;DR&lt;/h2&gt; &lt;p&gt;The book provides a nice overview of Docker toolchain. It is not a reference book. Even though few options are deprecated, I will advise you to read this book and then refer the &lt;a href=&quot;https://docs.docker.com/&quot;&gt;official documentation&lt;/a&gt; to get familiar with the latest development.&lt;/p&gt; &lt;h2 id=&quot;detailed-overview&quot;&gt;Detailed overview&lt;/h2&gt; &lt;p&gt;I got a printed copy at nearly 450 INR (roughly rounding to 7 USD, where 1 USD = 65 INR) from &lt;a href=&quot;https://www.amazon.in/&quot;&gt;Amazon&lt;/a&gt;. The prize is fairly acceptable with respect to the print quality. The book begins with a little history of containers (Docker is an implementation of the container). Initial chapters give a higher level overview of Docker tools combining Docker engine, Docker image, Docker registry, Docker compose and Docker container. Authors have pointed out situations where Docker is not suitable. I insist you do not skip that topic. I skipped the dedicated chapter on installing Docker. I will advise you to skip irrelevant topics because the chapters are not interlinked. You should read chapter 5 discussing the behavior of the container. That chapter cleared many of my confusions. Somehow I got lost in between, but re-reading helped. Such chapters are enough to get a general idea about Docker containers and images. Next chapters are focused more on best practices to setup the Docker engine. Frankly, I was not aware of possible ways to debug, log or monitor containers at runtime. This book points few expected production glitches that you should keep in mind. I didn’t like the depicted testing workflow by authors. I will look for some other references which highlight more strategies to construct your test workflow. If you are aware of any, please share them with me via e-mail. I know about achieving auto-scaling using various orchestration tools. This book provides step by step guidance on configuring and using them. Mentioned tools are &lt;a href=&quot;https://github.com/docker/swarm&quot;&gt;Docker Swarm&lt;/a&gt;, &lt;a href=&quot;https://github.com/newrelic/centurion&quot;&gt;Centurion&lt;/a&gt; and &lt;a href=&quot;https://aws.amazon.com/ecs/&quot;&gt;Amazon EC2 container service&lt;/a&gt;. Unfortunately, the book is missing &lt;a href=&quot;https://kubernetes.io/&quot;&gt;Kubernets&lt;/a&gt; and &lt;a href=&quot;https://github.com/spotify/helios&quot;&gt;Helios&lt;/a&gt; here. As a part of advanced topics, you will find a comparison of various filesystems with a shallow overview of how Docker engine interacts with them. The same chapter is discussing available execution drivers and introduces &lt;a href=&quot;https://linuxcontainers.org/&quot;&gt;LXC&lt;/a&gt; as another container technology. This API option is deprecated by &lt;a href=&quot;https://github.com/moby/moby/blob/master/CHANGELOG.md#180-2015-08-11&quot;&gt;Docker version 1.8&lt;/a&gt; which makes &lt;a href=&quot;https://github.com/docker/libcontainer&quot;&gt;libcontainer&lt;/a&gt; the only dependency. I learned how Docker containers provide the virtualization layer using &lt;a href=&quot;https://en.wikipedia.org/wiki/Linux_namespaces&quot;&gt;Namespaces&lt;/a&gt;. Docker limits the execution of container using &lt;a href=&quot;https://en.wikipedia.org/wiki/Cgroups&quot;&gt;CGroups (Control Groups)&lt;/a&gt;. &lt;a href=&quot;https://en.wikipedia.org/wiki/Linux_namespaces&quot;&gt;Namespaces&lt;/a&gt; and &lt;a href=&quot;https://en.wikipedia.org/wiki/Cgroups&quot;&gt;CGroups&lt;/a&gt; are GNU/Linux level dependencies used by Docker under the hood. If you are an API developer, then you should not skip Chapter 11. This chapter discusses two well-followed patterns &lt;a href=&quot;https://12factor.net/&quot;&gt;Twelve-Factor App&lt;/a&gt; and &lt;a href=&quot;https://www.reactivemanifesto.org/&quot;&gt;The Reactive manifesto&lt;/a&gt;. These guidelines are helpful while designing the architecture of your services. The book concludes with further challenges of using Docker as a container tool.&lt;/p&gt; &lt;p&gt;One typo I found at page number 123, second last line.&lt;/p&gt; &lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;expore some of the tools... &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt; &lt;p&gt;Here, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;expore&lt;/code&gt; is a typo and it should be&lt;/p&gt; &lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;explore some of the tools... &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt; &lt;p&gt;I have submitted it to the &lt;a href=&quot;http://www.oreilly.com/catalog/errataunconfirmed.csp?isbn=0636920036142&quot;&gt;official errata&lt;/a&gt;. At the time of writing this post, it has not confirmed by authors. Hope they will confirm it soon.&lt;/p&gt; &lt;h3 id=&quot;who-should-read-this-book&quot;&gt;Who should read this book?&lt;/h3&gt; &lt;ul&gt; &lt;li&gt; &lt;p&gt;Developers who want to get an in-depth overview of the Docker technology.&lt;/p&gt; &lt;/li&gt; &lt;li&gt; &lt;p&gt;If you set up deployment clusters using Docker, then this book will help you to get an overview of Docker engine internals. You will find security and performance guidelines.&lt;/p&gt; &lt;/li&gt; &lt;li&gt; &lt;p&gt;This is not a reference book. If you are well familiar with Docker, then this book will not be useful. In that case, the Docker documentation is the best reference.&lt;/p&gt; &lt;/li&gt; &lt;li&gt; &lt;p&gt;I assume Docker was not supporting Windows platform natively when the book was written. The book focuses on GNU/Linux platform. It highlights ways to run Docker on Windows using VMs and &lt;a href=&quot;http://boot2docker.io/&quot;&gt;Boot2Docker&lt;/a&gt; for Non-Linux VM-based servers.&lt;/p&gt; &lt;/li&gt; &lt;/ul&gt; &lt;h3 id=&quot;what-to-keep-in-mind&quot;&gt;What to keep in mind?&lt;/h3&gt; &lt;ul&gt; &lt;li&gt; &lt;p&gt;Docker is changing rapidly. There will be situations where mentioned options are deprecated. In such situation, you have to browse the latest Docker documentation and try to follow them.&lt;/p&gt; &lt;/li&gt; &lt;li&gt; &lt;p&gt;You will be able to understand the official documentation better after reading this book.&lt;/p&gt; &lt;/li&gt; &lt;/ul&gt; &lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h2&gt; &lt;ul&gt; &lt;li&gt;Your GNU/Linux skills are your Docker skills. Once you understand what the Docker is, then your decisions will become more mature.&lt;/li&gt; &lt;/ul&gt; &lt;h6 id=&quot;proofreaders-dhavan-vaidya-polprog&quot;&gt;Proofreaders: &lt;a href=&quot;http://codingquark.com/&quot;&gt;Dhavan Vaidya&lt;/a&gt;, &lt;a href=&quot;https://www.youtube.com/channel/UCsxonLIUu9tB8QWNuFIXCwg/featured&quot;&gt;Polprog&lt;/a&gt;&lt;/h6&gt; &lt;h2 id=&quot;printed-copy&quot;&gt;Printed Copy&lt;/h2&gt; &lt;ul&gt; &lt;li&gt;&lt;a href=&quot;https://www.amazon.in/Docker-Up-Running-Karl-Matthias/dp/9352131320&quot;&gt;Amazon&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href=&quot;https://www.flipkart.com/docker-up-running/p/itme8n74nhfg2wnm?pid=9789352131327&quot;&gt;Flipkart&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href=&quot;http://shop.oreilly.com/product/0636920036142.do&quot;&gt;O’REILLY&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;</content> <author> <name>Jaysinh Shukla</name> </author> <category term="books"/> <category term="docker"/> <category term="linux"/> <summary type="html"></summary> </entry> <entry> <title type="html">Book review ‘Introduction to the Command Line’</title> <link href="https://blog.jaysinh.dev/book/review/2017/02/28/book-review-introduction-to-the-commandline.html" rel="alternate" type="text/html" title="Book review &apos;Introduction to the Command Line&apos;"/> <published>2017-02-28T00:00:00+00:00</published> <updated>2017-02-28T00:00:00+00:00</updated> <id>https://blog.jaysinh.dev/book/review/2017/02/28/book-review-introduction-to-the-commandline</id> <content type="html" xml:base="https://blog.jaysinh.dev/book/review/2017/02/28/book-review-introduction-to-the-commandline.html">&lt;p&gt;&lt;img src=&quot;https://blog.jaysinh.dev/assets/images/book_image_introduction_to_the_commandline.jpg&quot; alt=&quot;introduction_to_command_line&quot; /&gt;&lt;/p&gt; &lt;h2 id=&quot;tldr&quot;&gt;tl;dr&lt;/h2&gt; &lt;p&gt;Every chapter will introduce a bunch of comands and will point to its respective documentation for further learning. You should expect chapters describing from the &lt;a href=&quot;https://www.gnu.org/software/grep/manual/grep.html&quot;&gt;grep&lt;/a&gt; command to &lt;a href=&quot;https://www.gnu.org/software/octave/&quot;&gt;GNU Octave&lt;/a&gt; which is a scientific programming language. The chapters are independent of each other. The book is must read if you are new to the &lt;a href=&quot;https://en.wikipedia.org/wiki/Linux&quot;&gt;GNU/Linux&lt;/a&gt; command line. If you are at the intermediate level, then too investing time in reading this book will unveil a few surprises for you.&lt;/p&gt; &lt;h2 id=&quot;detailed-review&quot;&gt;Detailed review&lt;/h2&gt; &lt;p&gt;The book is community driven and published under &lt;a href=&quot;http://flossmanuals.net&quot;&gt;FLOSS Manual&lt;/a&gt;. It is a collaborative effort of the &lt;a href=&quot;http://www.fsf.org/&quot;&gt;FSF&lt;/a&gt; community. The fun part is you can contribute to this book by adding new chapters or by improving an existing one. I fixed one typo in this book after reading. The best introduction is crafted comparing GUI based image editing tools with the most unknown command &lt;a href=&quot;https://linux.die.net/man/1/convert&quot;&gt;convert&lt;/a&gt;. It conveys the importance of command line well to the reader. Initial chapters will present the overview of various &lt;a href=&quot;https://www.gnu.org/software/bash/&quot;&gt;GNU/bash&lt;/a&gt; commands. From my personal experience, you have to use mentioned commands in this chapter daily. The chapter of Command history shortcuts depicts geeky shell patterns. I will advise not to skip that chapter and read through once. The advanced section was not much advance for me. It demonstrates &lt;a href=&quot;https://linux.die.net/man/1/ssh&quot;&gt;ssh&lt;/a&gt; and related commands like &lt;a href=&quot;https://linux.die.net/man/1/scp&quot;&gt;scp&lt;/a&gt; and more. I appreciated the preference of using &lt;a href=&quot;https://www.gnu.org/software/screen/&quot;&gt;GNU Screen&lt;/a&gt; though I use &lt;a href=&quot;https://tmux.github.io/&quot;&gt;tmux&lt;/a&gt; over it. If you are possessed by moving around on multiple directories simultaneously, then &lt;strong&gt;directory stacks&lt;/strong&gt; under &lt;strong&gt;Moving Again&lt;/strong&gt; section is worth scanning. This functionality is saving dozens of my keystrokes now. There is one entire division dedicated to various editors. That section is not limited to &lt;a href=&quot;https://www.gnu.org/software/emacs/&quot;&gt;GNU Emacs&lt;/a&gt; or &lt;a href=&quot;http://www.vim.org/&quot;&gt;vim&lt;/a&gt;, but also briefs &lt;a href=&quot;https://www.nano-editor.org/&quot;&gt;GNU NANO&lt;/a&gt;, &lt;a href=&quot;http://www.kedit.com/&quot;&gt;Kedit&lt;/a&gt; and &lt;a href=&quot;https://wiki.gnome.org/Apps/Gedit&quot;&gt;Gedit&lt;/a&gt;. This section does not compare the pros and cons of several editors, but describes basics of each which should be counted as a good part. I skipped this part because I am comfortable with &lt;a href=&quot;http://www.vim.org/&quot;&gt;vim&lt;/a&gt; editor at present and don’t want to invest much in others.&lt;/p&gt; &lt;p&gt;The scripting section turned out to be the most interesting division for me. Though I was aware about the tools like &lt;a href=&quot;https://www.gnu.org/software/sed/manual/sed.html&quot;&gt;sed&lt;/a&gt; and language &lt;a href=&quot;https://linux.die.net/man/1/awk&quot;&gt;awk&lt;/a&gt; I was not using them often. Reading their chapters and implementing mentioned examples built little confidence in me. Now I am much comfortable in utilizing them. The irregular &lt;strong&gt;Regular expressions&lt;/strong&gt; are everywhere. You should not pass over this section and pay careful attention to various examples. It is worth to invest your time in this segment.&lt;/p&gt; &lt;p&gt;This is not the ending. This book presents a glimpse of various scripting level programming languages like &lt;a href=&quot;https://www.perl.org/&quot;&gt;Perl&lt;/a&gt;, &lt;a href=&quot;http://python.org&quot;&gt;Python&lt;/a&gt; and &lt;a href=&quot;https://www.ruby-lang.org/en/&quot;&gt;Ruby&lt;/a&gt;. Because I am a python developer for a few years and I was not much interested in other languages, I skipped this section. A shallow introduction to &lt;a href=&quot;https://www.gnu.org/software/octave/&quot;&gt;GNU Octave&lt;/a&gt; is nice to study if you are interested in knowing a little about this scientific programming language.&lt;/p&gt; &lt;h3 id=&quot;how-to-read-this-book&quot;&gt;How to read this book?&lt;/h3&gt; &lt;p&gt;Do not read to read. This book contains nice shell examples. By merely reading, you will end up without bringing about anything meaningful. I will advise you to interpret the description first, observe the examples and then implement them on your own. If you have any confusions, read the example and description again or obtain help from &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;man&lt;/code&gt; or &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;info&lt;/code&gt; are the best options. To remember, I revised the important chapters more than once in a week. It helped me to refresh what I learned before. I will attempt to re-read the important sections once again after a few days to refresh my memory.&lt;/p&gt; &lt;h3 id=&quot;what-is-missing&quot;&gt;What is missing?&lt;/h3&gt; &lt;p&gt;Considerably, the book is nicely written, equally distributed and largely acceptable, but I would prefer to have a small set exercises section at the end of each topic. Exercise might help the reader to identify their weak points early and refer on them again if they desire to.&lt;/p&gt; &lt;h3 id=&quot;typo--mistakes&quot;&gt;Typo / Mistakes&lt;/h3&gt; &lt;p&gt;I didn’t encounter any sever mistakes except one typo. The section of &lt;strong&gt;Userful customizations&lt;/strong&gt; on page number 80 of my printed version, contains following example:&lt;/p&gt; &lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;function manyargs { $arg=$1 shift ... } &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt; &lt;p&gt;Here, &lt;strong&gt;$arg&lt;/strong&gt; is a misprint. A shell variable is never assigned with &lt;strong&gt;$&lt;/strong&gt;. It should be &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;args=$1&lt;/code&gt;. I myself has corrected the typographical error in the book. This change will be published maybe in the next release of this book.&lt;/p&gt; &lt;p&gt;If you are encountering any mistakes while reading, I request you to fix the change &lt;a href=&quot;http://write.flossmanuals.net/command-line/introduction/&quot;&gt;here&lt;/a&gt;. The interface for editing the book is beginner friendly. It took less than 5 minutes to drive the change.&lt;/p&gt; &lt;h3 id=&quot;where-to-buydownload&quot;&gt;Where to buy/download?&lt;/h3&gt; &lt;ul&gt; &lt;li&gt; &lt;p&gt;&lt;a href=&quot;https://shop.fsf.org/books-docs/introduction-command-line&quot;&gt;Buy printed version&lt;/a&gt;.&lt;/p&gt; &lt;/li&gt; &lt;li&gt; &lt;p&gt;&lt;a href=&quot;http://write.flossmanuals.net/command-line/introduction/&quot;&gt;Read Online&lt;/a&gt;.&lt;/p&gt; &lt;/li&gt; &lt;li&gt; &lt;p&gt;&lt;a href=&quot;http://archive.flossmanuals.net/_booki/command-line/command-line.pdf&quot;&gt;Download PDF&lt;/a&gt;&lt;/p&gt; &lt;/li&gt; &lt;/ul&gt; &lt;h6 id=&quot;proofreader-dhavan-vaidya&quot;&gt;Proofreader: &lt;a href=&quot;http://codingquark.com/&quot;&gt;Dhavan Vaidya&lt;/a&gt;&lt;/h6&gt;</content> <author> <name>Jaysinh Shukla</name> </author> <category term="books"/> <category term="linux"/> <category term="programming"/> <summary type="html">Every chapter will introduce a bunch of comands and will point to its respective documentation for further learning. You should expect chapters describing from the grep command to GNU Octave which is a scientific programming language. The chapters are independent of each other.</summary> </entry> </feed>