technology, photography Prasanna Kumar technology, photography Prasanna Kumar

Color Image into Grayscale using Python Image Processing Libraries | An Exploration

Exploring monochrome image processing using various Python image processing libraries

Processing Libraries used:

Libraries for image data wrangling:

From SciPy:

To get started, lets access the image file and bring it inside our script. Let us use the python os module to access and read the file into the script

We will also be importing "Image" module from Pillow(PIL) library

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
'''Exploring grayscale with Python using PIL, Skimage, NumPy and Matplotlib Libraries'''

import os
from PIL import Image, ImageColor, ImageOps
from skimage import color
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.style as style
import matplotlib.image as mpimg
from exception import IOError

'''Opening an image using Python's os module'''

path = os.path.join(os.path.expanduser('~'), 'Desktop','color','img-4.jpg')
img = Image.open(path)
img.show()

Lets read the image properties using PIL.image functions. To check if the right image is read, let's open it in the default image previewer of your OS.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
img = Image.open(path)
img.show() #preview the image in the default image editor of your OS

'''Image Properties'''
print("filename:",img.filename)
print("format:", img.format)
print("mode:", img.mode)
print("size:", img.size)
print("width*height", img.width, "*", img.height)
print("palette:", img.palette)
print("Image Info:", img.info)

The image properties

  • filename: /home/pk/Desktop/color/img-4.jpg
  • format: JPEG * mode: RGB
  • size: (900, 601)
  • width*height: 900 * 601
  • palette: None
  • imgInfo: dict_keys(['exif', 'dpi', 'photoshop', 'adobe', 'adobe_transform', 'icc_profile'])

Converting to Grayscale

Method 1: Averaging the R,G,B values.(non-linear)

This is the most basic of all grayscale conversion method. We take the average of R,G,B values of each pixel to arrive at a single value(ranging from 0 (black) to 255 (white).

As quoted here :

Some computer systems have computed brightness using (R+G+B)/3. This is at odds with the properties of human vision


Method 1: Averaging - R,G,B values 

Y = (R+G+B)/3

1
2
3
4
5
6
7
8
9
"""Method 1 - Averaging - R,G,B values """ 

#Python's Lambda(anonymous) expression. Apply simple math and convert to a list(of pixles)

AllPixels = list(map(lambda x: int((x[0] + x[1] + x[2])/3), list(img.getdata()))) 
GreyscaleImg1 = Image.new("L", (img.size[0], img.size[1]), 255)   #instantiate an image
GreyscaleImg1.putdata(AllPixels)   #Copies pixel list to this image
GreyscaleImg1.show()               #preview image
plotHist(GreyscaleImg1,"Averaging")  #plot a histogram

The human eye always interprets different colors in a different way. The weights ranging in the order of Green, Red and Blue.

Taking into consideration the color perception, we have methods 2 and 3 below.

Method 2: LUMA-REC-601(non-linear)

Again quoting Charles Poynton,

If three sources appear red, green and blue, and have the same radiance in the visible spectrum, then the green will appear the brightest of the three because the luminous efficiency function peaks in the green region of the spectrum. The red will appear less bright, and the blue will be the darkest of the three. As a consequence of the luminous efficiency function, all saturated blue colors are quite dark and all saturated yellows are quite light. If luminance is computed from red, green and blue, the coefficients will be a function of the particular red, green and blue spectral weighting functions employed, but the green coefficient will be quite large, the red will have an intermediate value, and the blue coefficient will be the smallest of the three.


Method 2 - LUMA-REC-601

Y = ( R * 299/1000 + G * 587/1000 + B * 114/1000 )

1
2
3
4
5
6
7
8
9
""""""Method 2 - LUMA-REC-601"""  """ 

#Python's Lambda(anonymous) expression. Apply simple math and convert to a list(of pixles)

AllPixels = list(map(lambda x: int(x[0]*(299/1000) + x[1]*(587/1000) + x[2]*(114/1000)), list(img.getdata())))
GreyscaleImg2 = Image.new("L", (img.size[0], img.size[1]), 255)   #instantiate an image
GreyscaleImg2.putdata(AllPixels)   #Copies pixel list to this image
GreyscaleImg2.show()               #preview image
plotHist(GreyscaleImg2,"REC-601")  #plot a histogram

The PIL image module has a convert function that helps to convert an image from one mode to another. To convert to grayscale, pass in "L" (luminance) as a mode parameter. When translating a color image to black and white (mode “L”), the library uses the ITU-R 601-2 luma transform

1
2
3
4
#When translating a color image to black and white (mode “L”), the library uses the ITU-R 601-2 luma transform:

grayImg = img.convert('L')
grayImg.show()

Learn more about LUMA REC.601 here.

Method 3 - LUMA-REC.709(non-linear)

Both REC.601 and REC.709 considers the difference in color perception( and hence different coefficients for R,G, B). But the major difference is as follows:

Quoting Charles Poynton, with respect to REC.60:

The coefficients 0.299, 0.587 and 0.114 properly computed luminance for monitors having phosphors that were contemporary at the introduction of NTSC television in 1953. However, these coefficients do not accurately compute luminance for contemporary monitors

Where as REC.709:

Contemporary CRT phosphors are standardized in Rec. 709 [9], to be described in section 17. The weights to compute true CIE luminance from linear red, green and blue (indicated without prime symbols), for the Rec. 709, are these:



Method 2 - LUMA-REC.709

Y = 0.2125 * R + 0.7154 * G + 0.0721 * B

1
2
3
4
5
6
7
8
9
""""""Method 3 - LUMA-REC-709"""  """ 

#Python's Lambda(anonymous) expression. Apply simple math and convert to a list(of pixles)

AllPixels = list(map(lambda x: int(x[0]*(212/1000) + x[1]*(715/1000) + x[2]*(72/1000)), list(img.getdata())))
GreyscaleImg3 = Image.new("L", (img.size[0], img.size[1]), 255)   #instantiate an image
GreyscaleImg3.putdata(AllPixels)   #Copies pixel list to this image
GreyscaleImg3.show()               #preview image
plotHist(GreyscaleImg3,"REC-709")  #plot a histogram

Let’s dig down to see, how the math works at the pixel level:

grayscale-pixels-python-REC-709.png

The results from the grayscale conversion methods:


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
def plotHist(grayImg, title):
   ImagingCore= grayImg.getdata()
   print(ImagingCore)  #<ImagingCore object at 0x7f952e28aa10>
   print(type(ImagingCore))   #<class 'ImagingCore'>
   print(grayImg.getextrema())    #(0, 255)
   
   #Follwing returns a flat list of pixel values(ranging from 0-255). We'll convert these values into an array down below
   GrayPixels=list(grayImg.getdata()) 
   print(type(GrayPixels))    #<class 'list'>
   
   # convert the list into an array. Matplotlib accepts array as a parameter to plot histogram
   GrayPixelsArray = np.array(GrayPixels) 
   
   print (GrayPixelsArray.size) #540900 i.e width*height: 900 * 601
   print (GrayPixelsArray.shape) #(540900,)
   print (GrayPixelsArray.dtype) #int64
   print (GrayPixelsArray.ndim) #1-D array
   print(np.mean(GrayPixelsArray), 
         np.median(GrayPixelsArray),
         np.std(GrayPixelsArray),
         np.max(GrayPixelsArray), 
         np.min(GrayPixelsArray))    #64.90450730264374 66.0 31.959808127905852 255 0
   plt.style.use('Solarize_Light2')      
   plt.hist(GrayPixelsArray, bins = 255)
   plt.title(title) 
   plt.show()

Image Statistics:
+------------+---------+---------+--------+------+-----+
| Grayscale  |  Mean   | Median  |  Std   | Max  | Min |
+------------+---------+---------+--------+------+-----+
+------------+---------+---------+--------+------+-----+
| Averaging  | 64.90   |  66.0   | 31.95  | 255  |  0  |
+------------+---------+---------+--------+------+-----+
|  REC-601   | 77.76   |  76.0   | 41.38  | 255  |  0  |
+------------+---------+---------+--------+------+-----+
|  REC-709   | 86.23   |  82.0   | 47.94  | 254  |  0  |
+------------+---------+---------+--------+------+-----+

Grayscale conversion using Scikit-image processing library

We will process the images using NumPy. NumPy is fast and easy while working with multi-dimensional arrays.

For instance an RGB image of dimensions M X N with their R,G,B channels are represented as a 3-D array(M,N,3). Similarly a grayscale image is represented as 2-D array(M,N). NumPy is fast and easy when it comes to doing calculations on big arrays(large images).

We’ll use plotting functions from Matplotlib to plot and view the processed image.

To convert to grayscale(non-linear):

  1. We’ll be using the inbuilt rgb2gray from the color module. rgb2gray uses REC.709. for the conversion

  2. We’ll also manually do the REC.709 conversion calculation by working on the numpy.ndarray objects

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
import os
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
from skimage import color, io, data
from skimage.viewer import ImageViewer
from PyQt5 import QtCore, QtGui, QtWidgets

img = io.imread('/home/pk/Desktop/color/img-4.jpg')  #Fetch the image into the script

"""Reading the properties of the image"""

#plt.imshow(img)
#plt.show()
#print(img)    #Prints RGB values of each pixel across W*H as a 3D matrix(M,N,3)
#print(type(img))    #<class 'numpy.ndarray'>
#print(img.shape)    #(601, 900, 3)


"""Splitting the image into R,G,B Channels"""

R = img[:, :, 0]
G = img[:, :, 1]
B = img[:, :, 2]
Gray = color.rgb2gray(img) # REC.709 | Y = 0.2125 R + 0.7154 G + 0.0721 B 
#Gray = (R*0.212)+(G*0.715)+(B*0.072) # or do the conversion math across 3 channels

## we shall use matplotlib to display the channels

fig, ((ax1, ax2), (ax3,ax4)) = plt.subplots(nrows=2, ncols=2, figsize=(20,10))

ax1.imshow(R,cmap=plt.cm.Reds)
ax1.set_title("RED Channel")

ax2.imshow(G,cmap=plt.cm.Greens)
ax2.set_title("GREEN Channel")

ax3.imshow(B,cmap=plt.cm.Blues)
ax3.set_title("BLUE Channel")

ax4.imshow(Gray, cmap="gray")
ax4.set_title("GRAYSCALE: rgb2gray(uses REC.709) ")

plt.show()
RGB image numpy.ndarray representation.

RGB image numpy.ndarray representation.

Plot of red, green, blue, and gray conversions.

scikit-RGB-Grayscale-output1.jpeg

Converting to GrayScale: The right way by linearization of sRGB by applying inverse gamma function.

All RGB images are gamma encoded.

Gamma encoding of images is used to optimize the usage of bits when encoding an image, or bandwidth used to transport an image, by taking advantage of the non-linear manner in which humans perceive light and color.

Where as Luminance is:

Luminance is a spectrally weighted but otherwise linear measure of light. The spectral weighting is based on how human trichromatic vision perceives different wavelengths of light.

The correct luminance value is calculated(by linearization using inverse gamma function) using the following steps:

linearization-of-RGB-inverse-gamma.png
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
""" Applying Linearisation on a gamma encoded sRGB Image.
    In vChannel, Channel is color channel as in vR, VG, vB
"""
def linearize(vChannel):
    vChannelFlat = vChannel.ravel()  #flatten 2-D array into 1-D array
    vChannelLinear= []
    for i in vChannelFlat:
        if i <= 0.040:
            i = (i/12.92)
            vChannelLinear.append(i)
        else:
            i = pow((i+0.055)/(1.055),2.4)
            vChannelLinear.append(i)
    return np.asarray(vChannelLinear).reshape(601,900)

R = img[:, :, 0]
G = img[:, :, 1]
B = img[:, :, 2]

vR, vG, vB = R/255, G/255, B/255

"Calculating Relative Luminance"

Ylin = (0.216* linearize(vR)) + (0.715* linearize(vG)) + (0.072* linearize(vB)) 
YlinFlat = Ylin.ravel()  #converting into 1-D array to plot histogram
Gray = color.rgb2gray(img)  #scikit rgb2gray function(non-linearized)
Grayflat = Gray.ravel()

fig, ((ax1,ax2),(ax3,ax4)) = plt.subplots(2,2,figsize=(5,5))
ax1.imshow(Ylin, cmap="gray")
ax1.set_title("Linear")
ax2.imshow(Gray,cmap ="gray")
ax2.set_title("Non-linear")
ax3.hist(YlinFlat, bins = 255)  #compare the histograms of linearized & non-linearized
ax4.hist(Grayflat, bins = 255)
plt.show()

References:

  1. Some great answers from Stackoverflow: here, here and here.
  2. A great post on gamma correction.
  3. Another great source on linear transformation.

Read More
design Prasanna Kumar design Prasanna Kumar

The FontBook: The Last printed edition.

The last printed FontBook. 1700 pages, never to be reprinted. Get the few remaining copies here, at a fraction of its original price

It has arrived and it is gorgeous.

In the online experience, you search for a font and check it out, there is no exploration as such, and hence no serendipitous stumbling, books are great for that, is it not?

Here are some of the pictures.

fontbook-erik-spiekermann-2.jpg
fontbook-erik-spiekermann-1.jpg
fontbook-erik-spiekermann-3.jpg
fontbook-erik-spiekermann-4.jpg
Read More
work, applications, technology Prasanna Kumar work, applications, technology Prasanna Kumar

VIM

It takes a decade to master VIM they say. Mine is just beginning. I've seen how powerful the tool could be. It's like having a nitro boosters on fingers.

vim.png

It takes a decade to master VIM they say. Mine is just beginning. I've seen how powerful the tool could be. It's like having a nitro boosters on fingers.

Starting to get used to "navigating/moving around" the text.

h,j, k, l

Ww, Bb

gg, G

3gg, 10gg

ctrl f, ctrl b

shift $, shift ^

Read More
Prasanna Kumar Prasanna Kumar

Learning Programming(Python) again.

To learn to code is a valuable life skill. Just like any other skill, it is in the wielders hands. The possibilities are immense.

It's been more than 8 years since I've written code.

It was during the time I was employed as a PHP developer at a design service company.

I've never studied computer science formally; not in school nor at college.

In fact I wrote my first code during the 4 week training program that the company offered for beginners.

It was all overwhelming for me then. The work started off with understanding MVC(model, view and controller), SVN(repository management) and frameworks.

I was always playing the catchup game, figuring out things as and when needed. In retrospect, I understood nothing.

After a year or so, the company had business problems and every one was stressed out at work in delivering the project. Not a good experience for a beginner.

The company shut down and I joined another firm that offered me offer in Digital marketing(I had prior experience) and I just took it with both hands.

In the past 8 years, i've worked in two SaaS product companies, and sort of understood the context and the importance of learing to code.

Learning to code, not for making me look more qualified on the Resume.

To learn to code is a valuable life skill. Just like any other skill, it is in the wielders hands. The possibilities are immense.

Starting(again) with Python.

This time around I want to get the basics correct. Work on small projects on building tools that I could use. Beginning with these books that came highly recommended on HN(hackernews) Wish me luck!

python-books.jpg
unix-programming-book.jpg
Read More
life, technology Prasanna Kumar life, technology Prasanna Kumar

Hello World from LINUX

My linux system is so humble and simple in its config.

I got a refurbished DELL Optiplex 9010, stripped all its fancy parts, loaded a 2010, Intel Pentium G2010 Dual Core processors with 128 GB SSD and runs on Ubuntu 18.04.3 LTS.

My current Macbook pro(2017) is taking a heavy pounding. Keyboard issues, slow processing speed, strange reboots with scary kernal warning messages.

May be I'm like too much of a task master.

So decided to shift the load.

  1. Personal and coding related work to linux.
  2. Professional work - Photography, design and video editing on the MacBook. I can't live without the Adobe Suite and FCPX

My linux system is so humble and simple in its config. I got a refurbished DELL Optiplex 9010, stripped all its fancy parts, loaded a 2010, Intel Pentium G2010 Dual Core processors with 128 GB SSD and runs on Ubuntu 18.04.3 LTS.

My desktop and some of the apps i’m getting used to.

My desktop and some of the apps i’m getting used to.

my-work-station.jpg
Read More
life Prasanna Kumar life Prasanna Kumar

Running: The book, the beginning and the life it changed.

Most of what I learnt and found about running comes from one source: A book by Haruki Murakami. His first non-fiction work. What I Talk About When I Talk About Running

what-i-talk-about-when-i-talk-about-running.jpg

I started running 6 years ago; that would be 2014. I've completed 3 full marathons and more than 25 half marathons.

I want to write some of my thoughts about running and its meaning. I hope this will help anyone who is just starting out.

For a beginner, running is always about performance. More interested in the physics of it: Speed, distance, time, and after finishing the first marathon it is PR(personal record) The attitude of competition sort of stresses you out both mentally and physically(not to mention the injuries) The attrtion rate of running is so high after 3 years. By attrition rate I mean runners droping off from running all together.

Competition helps, competition drives, but there is more to the running equation.

Running could be a way where you find your "self".

Listen to your body and respect it. Don't push too much(based on performance metrics). Start small, observe how you feel, push a little next day, a little the next day, and one day you'll know that you are running at the perfromace level you wanted to achieve. So listen, respect, push incrementally.

I don't know how to remove the irony for what comes next.

Don't think about running while running. I know this is difficult to put it words, difficult to grasp, and difficult to undestand and internalize. But lets see if reiterating it helps: Don't think about running while running.

This doesn't mean listen to music or podcasts during the excercise.

What I mean is, Meditate, OK, don't want to loose you there, lets say: Think deeply about what ever you want to think.

Your to-do list for the day. Solving a problem. Your work, family, politics, economics.

What ever, doesn't matter.

Personally — and my secondary motivation for running is – in the midst of the busy day, running is the only time when I could think and focus on one thought and most of the time I end up getting clarity or find a solution to a problem. It just helps.

Most of what I learnt and found about running comes from one source: A book by Haruki Murakami. His first non-fiction work. What I Talk About When I Talk About Running

It is a small book, like the one you can finsih it on a train journey. I make it a point to read it every year. Like an annual ritual. Helps me to be on track.

I've noted down some of the parts that I really loved. Some deep thoughts that any one who is starting to run must ponder.

Download Book Notes
From a conversation with a friend about running.

From a conversation with a friend about running.

what-i-talk-about-when-i-talk-about-running-2.jpg
what-i-talk-about-when-i-talk-about-running-1.jpg
what-i-talk-about-when-i-talk-about-running-4.jpg
 
Read More
life Prasanna Kumar life Prasanna Kumar

Reason to visiting a book shop

[Observation] Now a days every time I visit a book shop, I end up picking records than books.

[Observation] Now a days every time I visit a book shop, I end up picking records than books.

vinyl-5.jpg
vinyl-1.jpg

Why not? I wonder; They sound too good.

Read More
photography Prasanna Kumar photography Prasanna Kumar

Photographers & Movies in Susan Sontag’s On Photography

Photographers & Movies in Susan Sontag’s On Photography

On Photography is a collection of 6 essays written by Susan Sontag published in the year 1973.

Ever since its publication, it remains a must read for any one who is into the practice of photography — both professional and hobbyist.

The book — apart from its detailed assessment of the craft and art of photography — has a treasure trove of references to movies, books and a whole lot of photographers. This makes the book a great starting point for study and research.

Collected below are the list of movies and photographers discussed by the author in this book.

susan-sontag-on-photography.jpg
 
susan-sontag-on-photography-1.jpg
 

Photographers:

  1. David Octavius Hill(1802 – 1870)
  2. Oscar Gustave Rejlander (1813 – 1875)
  3. Julia Margaret Cameron(1815 – 1879)
  4. Nadar(1820 – 1910)
  5. Mathew B. Brady(1822 – 1896)
  6. Maxime Du Camp(1822 – 1894)
  7. Henry Peach Robinson(1830 – 1901)
  8. Thomas Eakins(1844 – 1916)
  9. Jacob August Riis(1849 – 1914)
  10. Adam Clark Vroman(1856 – 1916)
  11. Eugène Atget(1857 – 1927)
  12. Robert Demachy(1859 – 1936)
  13. Alfred Stieglitz(1864 – 1946)
  14. Paul Martin(1864 – 1944)
  15. Arnold Genthe(1869 – 1942)
  16. Helmar Lerski(1871 – 1956 )
  17. Lewis Hine(1874 – 1940)
  18. August Sander(1876 – 1964)
  19. Edward Jean Steichen(1879 – 1973)
  20. Charles Van Schaick(1885 – 1940)
  21. Paul Strand(1890 – 1976)
  22. Man Ray(1890 – 1976)
  23. John Heartfield(1891 – 1968)
  24. Aleksander Mikhailovich Rodchenko(1891 – 1956)
  25. Jacques Henri Lartigue(1894 – 1986)
  26. André Kertész (1894 – 1985)
  27. Dorothea Lange(1895 – 1965)
  28. László Moholy-Nagy(1895 – 1946)
  29. Albert Renger-Patzsch(1897 – 1966)
  30. Brassaï(Gyula Halász)(1899 – 1984)
  31. Weegee(1899 – 1968)
  32. Ghitta Carel(1899 – 1972)
  33. Walker Evans(1903 – 1975)
  34. Russell Lee(1903 – 1986)
  35. Aaron Siskind(1903 – 1991)
  36. Harold Eugene Edgerton(1903 – 1990)
  37. Bill Brandt(1904 – 1983)
  38. Andreas Feininger(1906 – 1999)
  39. Henri Cartier-Bresson(1908 – 2004)
  40. Felix Greene(1909 – 1985)
  41. Werner Bischof(1916 – 1954)
  42. Todd Walker(1917 – 1998)
  43. William Eugene Smith(1918 – 1978)
  44. Lennart Nilsson(1922 – 2017)
  45. Diane Arbus(1923 – 1971)
  46. Marc Riboud(1923 – 2016)
  47. Richard Avedon(1923 – 2004)
  48. Robert Frank(1924 –)
  49. Andy Warhol(1928 – 1987)
  50. Duane Michals(1932)
  51. Bruce Landon Davidson(1933 –)
  52. Sir Donald McCullin(1935 –)

Read More
books, applications Prasanna Kumar books, applications Prasanna Kumar

Reading Infinite Jest

One more try. My third attempt, not to try and finish but to get started.

To read Infinite Jest by David Foster Wallace.

As I’m typing this, I’m feeling that I’ve accomplished something; I’ve Just crossed page number 100. Still 950 pages more.

One more try. My third attempt, not to try and finish but to get started.

To read Infinite Jest by David Foster Wallace.

As I’m typing this, I’m feeling that I’ve accomplished something; I’ve just crossed page number 100. Still 950 pages more.

infinite-jest-david-foster-wallace-book.jpg
On the other hand, there are those who feel that fiction can be challenging, generally and thematically, and even on a sentence-by-sentence basis — that it’s okay if a person needs to work a bit while reading, for the rewards can be that much greater when one’s mind has been exercised and thus (presumably) expanded
— Dave Eggers, On a foreword to the latest edition of Infinite Jest

But how? What has changed from the previous attempts?

I tried to introduce myself to David Foster Wallace (DFW) through Infinite Jest (IJ). Turned out to be a bad idea. So I read a couple of his other works; got myself used to his style, humor, rhythms, and his genius.

To scale the book: discipline, dedicated time and undivided attention is a must.

I created a goal of reading 10 pages of the book every day on Beeminder. It’s been two weeks and I’ve crossed 100 pages.


“10 pages a day” isn’t that less? Be my guest! Everything about the book is different and new.

The entire plot is a non-linear narrative, happening at multiple timelines, across different characters, across various sub-plots all built on a hidden theme(which according to the author is subjective). The book has 200-page footnotes at the end — on one occasion a footnote is 30 odd pages long — which is so crucial to the plot, so one cannot skip them as we normally do. In short, it is like the movie Inception on steroids.

But this is not possible with Infinite Jest. This book is like a spaceship with no recognizable components, no rivets or bolts, no entry points, no way to take it apart. It is very shiny, and it has no discernible flaws. If you could somehow smash it into smaller pieces, there would certainly be no way to put it back together again. It simply is. Page by page, line by line, it is probably the strangest, most distinctive, and most involved work of fiction by an American in the last twenty years.
— DAVE EGGERS, ON A FOREWORD TO THE LATEST EDITION OF INFINITE JEST
infinite-jest-book-footnotes.jpg

As recommended by fellow DFW fans on the internet, I also carry around a companion/study guide(520 pages) written by Greg Carlisle on my phone to refer and to make sure I’m on the right track.

infinite-jest-guide-greg-carlisle.jpg

And did I tell you that the literary style is unlike you’ve ever read. The vocabulary, sentence structure, complex phrases, strange punctuations would warrant you to have linguistic conversations with your friends.

foster-wallace-conversations-punctuations.jpg
And yet the time spent in this book, in this world of language, is absolutely rewarded. When you exit these pages after that month of reading, you are a better person. It’s insane, but also hard to deny. Your brain is stronger because it’s been given a month long workout, and more importantly, your heart is sturdier, for there has scarcely been written a more moving account of desperation, depression, addiction, generational stasis and yearning, or the obsession with human expectations, with artistic and athletic and intellectual possibility
— DAVE EGGERS, ON A FOREWORD TO THE LATEST EDITION OF INFINITE JEST

At the current page run rate, it would take another 3 months to finish the book. Hoping to finish it before the Indian summer. Will keep this entry updated.

Update: 10th Feb, Sunday.

Total Pages read = 160

The book is too heavy in its physical size, hands are getting stressed holding it for longer hours. Trying to listen to the book in its audio book version from Audible. One mustn’t read this book in the audio version; you would miss out on most of the amazing things like: Wordplay, brilliant sentences which you must read multiple times to understand and to enjoy, mysterious punctuations and not to mention footnotes.

 
infinite-jest-audible-audio-book.jpg

Update April 14th

Completed! Done! In 3 months, before summer, as desired.

A feeling of exhaustion and relief. That is how I felt after finishing the book.

“But are you sure?”

mmmm.. no not really, I’m confused. I’ve technically finished reading all the pages, but did the novel really end?

I think that is how the author wants us to feel. He has in-fact confided a similar sentiment on the lines of: every reader will have a different interpretation of the ending, and each one will have a different opinion on their consequent rereads.

Here is my take on the book:

1) A brilliant piece of literature. The words, sentences, phrases, chapters, plots, sub-plots, rhythms, patterns, and the narrative style is unlike you’ve read before.

2) Half way through the book, after realising the complex nature of the narrative, I sort of stopped worrying about connecting the plot and started reading every chapter as an individual long form essay. Doing this, I was able to enjoy and appreciate the literature more.

3) It took 4 months to finish the book, it is a journey. As in any journey, you cannot remember every thing that happened, for that long, continuously. There are few instances where I don’t even remember reading whole chapters.

4) As in any journey, there are ups and downs; sometimes the book feels like a page turner and other times you’ll need to drag yourself out of the quagmire.

3) Needs a quick revisit(skim through key chapters) to get a grip on the plot and the ending. And a definite multiple rereads sometime in the future.


P.S - Found this great interpretation on finishing the book and interpretation of the ending by the late Aaron Swartz.



Read More
technology Prasanna Kumar technology Prasanna Kumar

Giving it back

Over the years, there have been a lot of software applications and online communities — open source to be specific — which I’ve benefited from directly by using them for work and indirectly because each one of them stood and are still standing up to something very specific — and that is wonderfully inspiring.

internet-archive-donation

Over the years, there have been a lot of software applications and online communities — open source to be specific — which I’ve benefited from directly by using them for work and indirectly because each one of them stood and are still standing up to something very specific — and that is wonderfully inspiring.

It is only after subscribing to few of the core mailing lists it dawned on me that, help, however small, can help move the movement an inch forward.

As a first step, I’ve decided to contribute $1 every month to the following apps and communities



Please do check your computer: make a list of all the open-source applications that you are using — I emailed this question to few of my friends; On a average they use 4 applications/communities that are on open-source/public domain.

Did you find any application that you can live/work without? Go make a donation. Contribute!


Read More
applications, life, work, technology Prasanna Kumar applications, life, work, technology Prasanna Kumar

Tools of the Trade

The following are the tools and applications that helps me get the job done; both personally and professionally(photography, video and design)


The following are the tools and applications that helps me get the job done; both personally and professionally(photography, video and design)

Hardware

Workstation

  • MacBook Pro (13-inch, 2017, Two Thunderbolt 3 ports)
  • Dell 21.5 inch (54.6 cm) Ultra Thin Bezel LED Monitor
  • Bose QuietControl 30, Noise cancellation headphones

Photography

  • Godox AD600B(studio light)
  • Godox V860 N(camera flash) * 2
  • Zhiyun crane 2
  • DJI Osmo Mobile 2
  • iPad mini 2 - 20% of my reading happens here with iBooks & Kindle app for iPad.

Software:

Creative Suite:

  • Photoshop CC
  • Lightroom CC
  • GIMP - for quick, lightweight photo edits.
  • Inkscape - vector design
  • Sketch - design
  • Final cut pro
  • Handbrake video transcoder
  • Apple Keynote

Writing & Research

  • Ulysses - Notemaking
  • LaTeX - for documentation
  • Brother 220 manual typewriter
  • Ember(now discontinued) - Capture screenshots, videos, and organize them under tags(visual research)
  • The Wayback machine lets you capture web pages and store it as an archive for reference and sharing.
  • Both Ember and The Wayback Machine are my humble attempt to try Zettelkasten.

Tasks

Storage:

  • Amazon drive - Backup for: personal projects, and photos on the iPhone
  • AWS S3 - Backup for professional projects

Fitness:

  • Garmin Forerunner 15 GPS watch.
  • Smashrun - Training and running intelligence integrated with Garmin Connect.

Music:

  • Apple Music
  • Panasonic Bahadur AM | FM radio - I live alone and gets too lonely in the mornings. Most of the time it is for just the white noise.
  • GPO vinyl record player

Communication:

  • Panasonic KX-TG1612 Cordless Phone - Landline for work-related communications.

Browsers:

  • Google Chrome
  • Tor - with duckduckgo; for ads-blocked privacy conscious browsing. Mostly used during focused research.

Read More
books Prasanna Kumar books Prasanna Kumar

Book Notes: Birth of a Theorem: A Mathematical Adventure

An absolutely fabulous book, that takes a leaf from Cédric Villani’s life when he was at his prime working on his magnum opus which ultimately led him to win the prestigious Fields Medal.

Book Notes: Birth of a Theorem: A Mathematical Adventure

An absolutely fabulous book, that takes a leaf from Cédric Villani’s life when he was at his prime working on his magnum opus which ultimately led him to win the prestigious Fields Medal.

The book is about,

  1. How a mathematician’s daily life looks like?

  2. A look into the life of a mathematician at the prime of his life’s major work

  3. Who’s who of some great minds in mathematics.

  4. What kind of music he listens to?

  5. How mathematicians cooperate to find answers to unsolved problems?

  6. A glimpse of great strides and how it was made in the arena of contemporary mathematics.

This is definitely one of the best books i've read this year.

Download complete notes below. 👇👇

Download Notes
Read More
books Prasanna Kumar books Prasanna Kumar

Book Notes - Hit Refresh: The Quest to Rediscover Microsoft’s Soul

Business biographies are usually written only long after an event has occurred or a person has retired. On the contrary, this book’s narrative distinctively stands out because it deals with the present and future too. It is a prose of prognostication and a statement on record for the future to judge.

Hit Refresh: The Quest to Rediscover Microsoft’s Soul and Imagine a Better Future for Everyone

Business biographies are usually written only long after an event has occurred or a person has retired. On the contrary, this book’s narrative distinctively stands out because it deals with the present and future too. It is a prose of prognostication and a statement on record for the future to judge.

The book is divided into the past, the present and the future. I loved the past and the present!

Key take aways are:

  1. Unlike Bill Gates, Steve Ballmer, Steve Jobs or as a matter of fact any contemporary business greats, the motivation for Satya Nadella to go out everyday is more personal and empathetic in nature. This is where the first part of the book grips the reader.

  2. An outsider’s fresh view point in the way things happen in the company

  3. Not allowing the past to haunt you in the present, which takes guts. (Apple Vs Microsoft)

  4. The philosophy of “hit-refresh” in itself will keep you busy pondering.

  5. Removing “yet another corporate propaganda” parts from the book will let you glimpse the personality of a Man who is leading a $85 billion company.

Download Notes
Read More
books Prasanna Kumar books Prasanna Kumar

Book Notes: The Pleasures of Reading in an Age of Distraction

My Jan 1st 2017 resolution is reading a 100 books this year (current count of books finished stands around 40 I guess..) The one thing that has slyly crept on to me this year is the “feeling of rush” to finish books fast. It became more of a mechanical task rather than a part intellectual and part emotional endeavour which one feels while  reading a book. 

There are books that would help you stop and change the way you are thinking/doing things. One such book that I read this year is The Pleasures of Reading in an Age of Distraction - Alan Jacobs.

My Jan 1st 2017 resolution is reading a 100 books this year (current count of books finished stands around 40 I guess..) The one thing that has slyly crept on to me this year is the “feeling of rush” to finish books fast. It became more of a mechanical task rather than a part intellectual and part emotional endeavour which one feels while  reading a book. 

Of all the books I’ve read this year, can I confidently say what a particular book is about? In some cases no, and in most cases I was doubtful and unsure. This has to stop! There is absolutely no point in turning pages.

So is it not possible to read a 100 books year and at the same time read deep and thorough?

This is exactly is what The Pleasures of Reading in an Age of Distraction - Alan Jacobs and How to Read a Book by Mortimer J. Adler (notes will be published later) is all about.

I read these books 3 months ago and it has completely changed the way I read and my quality of reading has improved. The very act of organising & publishing notes from my reading in a downloadable form is a result of this book’s influence. 

Download Notes
Read More
books Prasanna Kumar books Prasanna Kumar

Book Notes: The Art of Slow Writing: Reflections on Time, Craft, and Creativity - Louise DeSalvo

This book, even though, written for aspiring authors who are beginning to learn the art of writing, I felt it would be immensely helpful for any one who writes - be it, news reporting, blog, research paper, business pitch or even professional emails.

Book Notes: The Art of Slow Writing: Reflections on Time, Craft, and Creativity - Louise DeSalvo

This book, even though, written for aspiring authors who are beginning to learn the art of writing, I felt it would be immensely helpful for any one who writes - be it, news reporting, blog, research paper, business pitch or even professional emails.

Writing, like poetry and music, must adhere to an underlying rhythm.  As writers one must always be consciously aware of the playing the right notes(words) always.

The book,

  1. Demystifies, with examples, some well established myths about writing.

  2. Provides actionable takeaways and pro-tips from the experience of great writers.

  3. Asserts the importance of slowing down, patience & persistence.

  4. Guides us on how to read a book.

Download Notes
Read More
books Prasanna Kumar books Prasanna Kumar

Book Notes: Absolutely on Music: Conversations with Seiji Ozawa

Two reasons why I instantly loved this book:

  1. A fan of Murakami’s writings.

  2. A student of music.

The book is a collection of transcribed conversations between writer Haruki Murakami and conductor Seiji Ozawa.

Book Notes: Absolutely on Music: Conversations with Seiji Ozawa

Two reasons why I instantly loved this book:

  1. A fan of Murakami’s writings.

  2. A student of music.

The book is a collection of transcribed conversations between writer Haruki Murakami and conductor Seiji Ozawa.

The book is replete with nuggets of wisdom on topics like,

  1. What is it like to be a musician?

  2. How to be a life long student of music or any art form?

  3. Practice, discipline and focus.

  4. How to listen to music? The lost art of active listening to music.(as opposed to passive listening in the “instant”, “same-day-delivery” and busy world we are a part of.)

  5. A great introduction to classical music for beginners.

  6. Anecdotes of eccentricities.

  7. Brilliance of Murakami and Seiji Ozawa.

Download Notes
Read More
life, thoughts Prasanna Kumar life, thoughts Prasanna Kumar

Unbrand yourself

Was there a turning point?
The turning point after two years of anonymity, I think, was Killer Joe.
I didn’t rebrand, I unbranded. I stepped off into the shadows, went back and started a family down in Texas. Mind you, I got nervous during that time. I got anxious.

There was this Maxim interview on Matthew McConaughey on being a "McConnaissance" phenomenon.  Half way down the interview there is a question about his bouncing back to super stardom after a 2 year hiatus/becoming nobody/shelved off.

Was there a turning point?
The turning point after two years of anonymity, I think, was Killer Joe.
I didn’t rebrand, I unbranded. I stepped off into the shadows, went back and started a family down in Texas. Mind you, I got nervous during that time. I got anxious. I had some sleepless nights, wondering when the levee was going to break, or if it was even going to break at all. And then I started getting calls from directors. It was like a two-year boomerang that finally came back. All of a sudden William Friedkin calls, Steven Soderbergh calls, Lee Daniels calls, Rick [Richard Linklater] calls.  

The thought of Unbranding oneself is so powerful. This conscious attitude,

  1. Helps you to take a break, amass ample time and think about what you are so passionate about.

  2. The very act of coming out of the comfort zone and thereby violating the established social norm creates a sense of fear and embarrassment that induces you to both intro and retrospect. I think therefore I am.

  3. Unbranding must not be compared with setting up of short and long term goals in life or even your daily meditation schedule, Unbranding is much deeper than that, it's like chiseling yourself (both mind and action) off the unwanted for betterment. It is deeply ingrained and there is no relapse.

Read the whole interview here.

Read More