Book Review: Becoming a Better Programmer

Becoming a Better Programmer: A Handbook for People Who Care About Code Book Cover Becoming a Better Programmer: A Handbook for People Who Care About Code
Pete Goodliffe

This book may serve as your mentor in case you do not have a large network of successful and experienced ones.

It covers most of the topics you will experience in life of a professional software engineer: programming, testing, practicing, working with people and being more efficient at your job. I've found Part III Getting Personal and first chapter of Part IV Getting Things Done useful, but it just me. Your mileage may very - depending on your experience and time spent in the software industry,

Few important things are missing from this book: politics of large and small organizations, climbing corporate ladder & truly achieving amazing results as a software engineer.

But to get you started, this book will be good enough.

Book Review: “Learning to Program”

Learning to Program Book Cover Learning to Program
Steven Foote

I don't even know where to start, but let me try.

With the growth of the web and an influx of neophytes from all walks of life there is an infinite demand for books to get you off the ground and start "coding." These are the books better known as "Learn X in 24 hours" and "Y for dummies". This work continues the proud tradition started during the glorious plastic-pants CEO days of Dot-com bubble of the late 1990s.

Of course, it starts with "Hello World" to get you going fast. It also talks about how "your computer is stupid" and talks about "short-term" and "long-term memory". Unsurprisingly, it uses JavaScript as a programming language and fails to explain "how software works", even though the full chapter 2 is dedicated to this topic. On page 31 the author explicitly states that "you don't need to know the details of how your code becomes binary (sic!), but you do need to know that it happens".

Do I need to mention that the term "Algorithm" is absent from table of contents?

I guess this book can get  you going with basic web development, but the amount of bad patterns & misconceptions that need to be corrected years into career are making it a poor choice.

There is really no shortcut to learn programming, take CS50 from Harvard instead, it is free and teaches things in a proper way without omitting fundamentals. Oh yeah, and professor Malan is amazing.

Book Review Rating Guide

Here are the definitions for star ratings for my book reviews:

***** An original work, masterpiece, must-read book.

**** Very good book with a lot of interesting insight, useful & enriching experience. This is the book you just can’t put down.

*** Satisfactory experience, several good ideas and not too many cliches, worth reading if you have a lot of free time.

** Either poorly written book or an obvious copy-paste full of common knowledge for the area.

* Very poorly written book, complete waste of time. Something that I normally wouldn’t review as just skimming through the book reveals that.



Failed to connect to a Windows service

Recently I was testing real-world performance of TP-LINK Archer T9E AC1900 wireless adapter. The experiment was quite unsuccessful and I didn’t experience any reasonable improvement. Quite the opposite: speeds did not improve but the connection was mush less stable.

After uninstalling TP-Link driver/utility package I’ve noticed that it left my Windows 10 installation quite messed up:


Really TP-Link? I was not able to use my old USB Wireless Adapter and the list of wireless networks simply wouldn’t show up. Quick Internet search helped solve the problem, resetting Winsock Catalog fixed it:

netsh winsock reset

In addition, I suspected that Windows system files might be corrupted so I decided to check:

C:\WINDOWS\system32\sfc /scannow

Beginning system scan. This process will take some time.

Beginning verification phase of system scan.
Verification 100% complete.

Windows Resource Protection found corrupt files and successfully repaired
them. Details are included in the CBS.Log windir\Logs\CBS\CBS.log. For
example C:\Windows\Logs\CBS\CBS.log. Note that logging is currently not
supported in offline servicing scenarios.

All fixed, back to more productive activities.


A Case for Mechanical Keyboards


After many years of using various ergonomic keyboards both at work as well as home I finally had had enough. It was time to go back to good old mechanical switches. Having some free time and enough courage I researched and finally bought old-school mechanical keyboard.

The first step was to order a Cherry MX Switch Tester from WASD Keyboards.

6 Cherry MX Switches

The tester comes with 6 switches of which 4 are smooth (clear, red, black and brown) and 2 are actually clicky (blue, green). I didn’t like any of the smooth switches as they were all reminding me of a regular keyboard except a little more precise as each key has an individual switch (duh!).

I ended up liking Cherry MX Green best as it is more clicky and resitant than Cherry MX Blue. When you compare these two the difference is very clear: the green ones just feel more precise and even sturdy.

The Keyboard I chose

As Cherry MX Green was the best choice, I wanted to purchase magnificent CODE keyboard that has the best design – clean and simple, that simply allows you to focus on work & typing. It was out of stock! What was surprising is how rare the MX Green keyboards are! Only the CODE had a decent layout (i.e. not extra buttons/knobs and other pseudo-professional bells-n-whistles), but it was not available which was a huge disappointment.

The next best option was Cherry MX Blue-based Das Keyboard Model S ordered on Amazon during their Prime Day. So far so good: satisfying typing experience, the keyboard is a heavy, sits nicely on the desk and reminds me of heavy IBM keyboards from childhood. Overall build is good, it looks like a high-quality product except for the stupid functional keys that fortunately are mixed shared with functional keys.

Mechanical keyboards may not be for everyone, but software engineers should definitely give them a try for few weeks and see if they like them.

Algorithms, Part I on Coursera

About a week ago I finished Algorithms, Part I course on Coursera. Few thoughts after completing this course:

  • good course by Robert Sedgewick and Kevin Wayne that is focused primarily on algorithms and their analysis
  • great refresher especially for those who worked in the industry for a while
  • course uses Java as programming language, but having very little Java experience wasn’t a problem, being proficient in C++ and especially C# helped a lot
  • the course focuses mostly on application of existing algorithms but does not focus on the algorithm design which is its biggest drawback
  • Dr. Java IDE that comes with the course is terrible. Instead, I used Eclipse and version of Java that the default course setup installs on your machine (see previous post on how to configure Eclipse for this course)
  • the course does not provide a verified certificate which is a bummer especially after all the hard work
  • all of the programming tasks were fun and challenging
  • lecture and slides are helpful but you obviously need to do your own learning in addition to that

In order to be successful in this class, you need to:

  • make sure you keep delivering exercises and programming assignments before the due date or at least hard deadline. For me it was a big challenge in the beginning due to packed schedule but I had supportive environment and overall experience was smooth.
  • do not study if you’re tired after work – instead, get a good night of sleep and study when your brain is fresh – sounds like a no-brainer but it’s not so obvious until you experience double load – both at work and in the class
  • do not use Dr Java – it’s almost impossible to debug your code fast, especially complex data types. Install Eclipse. Enough said.
  • try to have fun and enjoy every moment of it!

Overall, I recommend this class.

Configuring Eclipse IDE for Algorithms, Part I (Coursera)

Coursera is offering great algorithmic courses Algorithms, Part I and Part II by Robert Sedgewick. The only problem with them is Dr. Java IDE they recommend. It is free, usable but completely impractical when it comes to debugging.  I’ve configured Eclipse IDE and my productivity increased significantly, especially when it comes to debugging.

Here is how to configure Eclipse on Windows machine for Algorithms, Part I/part II:

  1. Uninstall any instances of Java from your machine
  2. Follow step 0 from to install algs4.exe
    • only follow step 0, skip the rest as we will use Eclipse instead of Dr. Java
  3. Download stdlib.jar and algs4.jar to permanent folder
  4. Download Eclipse IDE for Java Developers
    • At the time of this blog post I had Eclipse Luna SR1 4.4.1 on my machine
  5. Follow instructions in eclipse.pdf to configure Eclipse.
    • The instructions are long and little tedious but well worth it
    • Here’s how you create a User Library in Eclipse: go to Window > Preferences > Java > Build Path > User Libraries, create New library and add algs4.jar and stdlib.jar from step 3 (I called it Coursera): 0UserLibraries
    • Whenever you create a new Java project you need to add newly created user library : right click on project, Build Path > Add Libraries 1AddLibrary 2AddLibrary
    • Here’s what your Java project in Eclipse will look like after adding this library:3Project

Eclipse worked well for me and as I mentioned previously increased my productivity which made studying fun again.

Good luck and let me know if you have questions!

CS50 Lecture by Steve Ballmer

Steve Ballmer gives a great lecture at Harvard:

Update: I actually met him in ProClub locker room in Bellevue right before Christmas. It was a little surprising to see him there but I’ve heard from friends that you see him there often. So I just commented that his lecture was really good especially the aspects about luck and being hardcore. He was flattered and simply hi-fived me 🙂

Unable to open TWAIN source

This post is a deviation from my general blog theme, but I simply had to post it.

Issue: my Canon LiDE 25 scanner was working for several years on Windows 7 x64 English Pro but suddenly started to show error “Unable to open TWAIN source Please check connection Then re-start Toolbox”


Solution: add C:\Windows\twain_32\CNQL25 to PATH environment variable.  Problem solved!