K&R . . . check!

Study of King DavidSource Code:  Kernighan and Ritchie The C Programming Language Code Examples

I’m happy to say that I finally completed my effort to work all the exercises in the classic “The C Programming Language” book by Brian Kernigham and Dennis Ritchie (co-creator of UNIX). What started as a side effort to reinforce pointers and memory management as part of my efforts to write a Scheme interpreter supporting my efforts to work through another classic “The Structure and Interpretation of Computer Programs” turned into an eight month effort (mainly due to my lack of time for side projects).

The effort did reinforce that the C programming language is certainly the king of procedural computer languages. There is nothing a von Neumann architecture computer can do that cannot be programmed by ‘C’ and converted into machine code by a good compiler. However, this king is an old king. Yes, garbage collection, object-orientation, concurrency, and JSON encoding can all be done using ‘C’ from either scratch or via open source libraries. Yet, I’m concluding that the effort outweighs the gain when languages such as ‘Go’ and ‘Rust’ coming into their own.

I have mixed emotions. I’m overjoyed to have re-mastered this language using one of the most classic programing language books to do it. But, overall I would put this effort down as a “failed experiment” from which I have learned that I probably need to look to a more modern language (I’m going down the ‘Go’ route) to fill my needs for a “get the job done with no BS” general-purpose language.

All that said, I can confirm “The C Programming Language” is a truly great book. This single book takes the reader through all aspects of classic ‘C’ (it has not been updated to the latest language standards). In the process it also works through basic implementations of classic algorithms and data structures: arrays, queues, linked lists, hash tables, binary trees, binary search, shuffle sort, quick sort, and a simple recursive decent parser. The book also covers implementations of basic standard library functions using low-level operating system calls. By the end of the book, you will have completed a tour de force of the basics of this classic language. I still highly recommend this book to any developer serious about their craft.

Here is a link to my exercise solutions: Kernighan and Ritchie The C Programming Language Code Examples

Article Summary 2015-05-29

44 years of UNIX, Time-lapse Photo Mining, Self Healing Buildings, Free NASA Code, Realtime User Monitoring, Email for Apple Watch, Two-thirds of Europeans Have Same Fathers, New Language for FPGAs, Smartphone with Projector, and Light Bulb with Speaker.

“A Repository with 44 Years of Unix Evolution”

This is one of the coolest things I’ve seen for a nerds and geeks alike in a long time–a GitHub repository that traces 44 years of evolution in the UNIX operating system code base from 1972 to 2015–659,000 commits from 850 identified individual contributors.

“Time-lapse Mining from Internet Photos”

These guys mined 86 million public photos then collapsed ones of places into a common viewpoint. From that, they were able to develop time-lapse videos. Their detailed paper is an amazing read.

“The First Building That Can Heal Its Own Cracks With Biological Cement”

Self-healing buildings.

“It Is Rocket Science! NASA Releases Abundance of Free Code”

Open source code from NASA

“How to provide real user monitoring for single-page applications”

Discusses three challenges single-page apps (SPA) face with respect to real user monitoring (RUM) along with a solution path for Angular-based SPAs using Boomerang.

“How To Send a Hidden Version of Your Email That Only Apple Watch Will See”

Discusses how to craft email messages to specifically utilize the capabilities of the Apple Watch.

“A handful of Bronze-Age men could have fathered two thirds of Europeans”

“Genetic study reveals that two-thirds of European men can be traced back to just three individuals who lived between 3,500 and 7,300 years ago.”

Presents even more detail on the research into the Y-chromosomal most recent common ancestor (“Y-MRCA” or “Y-chromosomal Adam”) and the matrilineal most recent common ancestor (“MRCA” or “Mitochondrial Eve”). If you want to have your genetic ancestry documented, there are some services that can give you a genealogical DNA test.

“Enginursday: A New Approach to FPGAs!”

To increase the usability and approachability of Embedded Micro’s Field Programmable Gate Array (FPGA) “Mojo” development board, they have released a new language named Lucid. Lucid should make customizable hardware as approachable as the Arduino made embedded microcontrollers. Hopefully once things calm down with my bookshelf project, I can start playing with one of these fellows.

“Lenovo’s Projector Phone Beams a Touchscreen Onto Any Surface”

For at least a couple years now, after seeing the projected keyboards and miniature video projectors, I have been saying that what someone needs to do is create a phone that integrates the two. I was specifically thinking of something that could project your view onto a wall at the same time it could project a keyboard. Since this only has one projector it cannot do both yet, but it is certainly getting closer. Not available in the States.

“Sony’s LED Bulb Doubles as a Bluetooth Speaker”

Now if they could only get a variation of this out that supports changing the color like the Philips Hue, one would have the ultimate in mood lighting. But, none the less, this is pretty cool. Also not yet available in the States. (Do you sometimes feel like we’re lagging a bit these days?)