Skip to main content

Why I Read

Earlier this month, Paul Graham published an essay regarding his real reasons for reading. To summarize, he concludes that reading is not about remembering details and facts, but rather about building mental paths that you aren't even consciously aware are there. You remember structures and processes that get embedded in your mind, despite the exact details not being there. He goes on to also note that reading books again is valuable, not so much for picking up on more details, but because we notice different things and take different viewpoints based on our current life situation.

While I completely agree with everything Mr. Graham mentioned, there was a key element - at least for me - that I feel was not in the essay. That is, I read to be convinced. I too can read a whole book, then fill a mere page with what I remember about it. Sometimes even summarize the book in a paragraph, just a few sentences. So why even bother to read hundreds of pages? Again, it is the convincing. If someone were to just give me the summary paragraph, I might say something like "well, I guess that makes sense", or "I guess I understand, but I'm skeptical". However, a properly written book is capable of changing the way I think and act in the world. The combination of scientific research, real life stories and other empirical evidence is what is able to help bring me to agree with the conclusion of the book.

A rough summary - from my memory - of the book "Daring Greatly" by Brene Brown, could be summarized as such:
Shame is concluding on others or oneself that they are not good enough and not worthy to be accepted by others. A person's actions state who they are and thus they cannot change. That is shame. Guilt however is constructive, I did wrong versus I am wrong. Based on various research over the years, it has been shown that shaming people is not effective in the long run in leading a person (or oneself) to change actions. Thus, shaming is pointless and only does damage.
You may have noticed my definition of shame isn't that well articulated, maybe even confusing. Despite that, I still feel I know shame when I see it. The rest of my explanation seems rather unconvincing, even reading right here myself. I feel if someone were to give me this "summary" before I read the book, I may have sort of agreed. However, I doubt it would have altered my mind to the point of changing my actions. Since reading Daring Greatly, I feel utterly convinced that shaming is wrong, ineffective and destructive. I know I've used shame in the past and I don't want to use it in the future. This is the part where you the reader may be confused and rather unconvinced, and thus I would heavily recommend you do the reading yourself.

I want to conclude by saying that just because I read doesn't necessarily mean that I always agree with what is being said. I try to maintain a filter and be somewhat skeptical as I don't want just any series of sentences to be able to alter my world view. I largely look for overlap of themes in other books and the more I see overlapped themes, the more convinced I become of what is being discussed.

2014 was a great reading year for me, I can look back and see a lot that I have learned and changed. I'm very much looking forward to my reading ambitions for 2015.

Comments

Popular posts from this blog

Accessing other HTTP servers on Cloud 9 IDE

If you're using Cloud 9 to do development, you'll quickly realize that only ports 8080 through 8082 are available to the outside world from your development box. This is generally not an issue as you can set your application to bind to the $PORT environment variable when in development mode. However, there are sometimes other servers that we want to make use of that host on different default ports.

I recently had to setup a Neo4j server which defaults the admin interface of port 7474. Unfortunately, I could not access the admin interface even through the IDE based web browser window. So, what to do? I could change the default server settings so that it runs on a different port. However, the app I'm working on with a team has 7474 hard-coded and I currently don't feel like writing a local only work-around.

After some searching, I ran across a neat Linux tool called socat. This allows us to easily forward one port to another. After a quick install via apt-get, I ran the …

Fancy FTP Deployment with Grunt

I recently dove into Grunt.js at work for automating our build process and I haven’t looked back. It’s an awesome tool with a plug-in for just about anything. I expected the usual would be there like JavaScript minification and concatenation, but I was surprised at a few others that I found, one being for FTP file deployment. Just shows how popular and community supported Grunt is.

There are a few FTP plug-ins available for Grunt. I didn’t do an analysis of all of them but ran across grunt-ftp-push which seemed to do what I needed so I decided to try it out. A simple ftp-push setup to upload an entire project via FTP could look like this:

grunt.initConfig({ftp_push:{all:{options:{host:'example.com',port:21,dest:'/project/path/',username:'user',password:'pass'},expand:true,cwd:'dist',src:['**/*','!**/*.zip']}}});
Some details here: I opted to put the username and password in the main config rather than using an .ftpauth file. The …

Changing Password Requirements with SailsJS and Passport

Cross post from my employer's development blog: http://rootinc.github.io/2016/03/16/pass-requirements-sails/

If you perform an installation of [Passport][passport] with [SailsJS][sails] using the [Sails Passport Auth Generator][sails-generate-auth] you get several files in your app already configured for you. If you then use passport-local, you will already have a complexity requirement on the password. It defaults to requiring 8 characters minimum, letters, numbers, and symbols.

What if you want to change this requirement? In the generated model file `Passport.js`, you should see a line that says `provider   : { type: 'alphanumericdashed' },` and `password    : { type: 'string', minLength: 6 }`. The minLength is an easy and obvious change. What about the complexity requirement though? This stumped me for a bit. There doesn’t seem to be any mention of these keywords or providers on the Passport official site, nor anything in the [Passport-local repository][passport…