Saturday, February 05, 2011

The elements of computing systems

Have started reading (and have in fact completed more than half of) The Elements of Computing Systems. The book is more about learning by doing than learning by reading. I have also been completing all of the software projects as I go through various chapters in the book. It's been a great learning experience and I wish I had something like this during my undergrad days. It's must read for all Computer Science students.

Labels: , ,

Monday, August 23, 2010

Statecharts

Most of the software development that I have been involved until now has used a non-deterministic approach of solving problems. As a results some of the details are missed and I have hit some unexpected bugs. These bugs are especially expensive and painful as we get close to the release date. I have been in unpleasant situations because of such problems.

Few weeks ago I moved to the SAN (Storage Area Networks) development team at Netapp and came across some really good engineering ideas like FSM (Finite State Machines). I had studied FSMs in school but never had an opportunity to use them in real life until now. FSMs have a property of forcing developers to think about software in a more deterministic manner and seems to result in much less buggy software. There is an initial learning curve involved but once you get a hang of it, the tool is a time saver.

However being amused with this model of software design I started reading more (research papers) about it and then stumbled upon "UML statecharts" which are basically FSMs on steroids. This design model is much more powerful and reduces design complexity by adding hierarchical layers of abstraction. Also there is a very good paper "Coverting Statecharts into Java code" which explains this concept really well in practical terms. I am hoping to get a chance to use this tool someday, however I need to reckon to use the right tool for the right job.

Labels:

Sunday, February 28, 2010

Dreaming in code....

Past two weeks have been really tough since I have been putting in almost 10 - 12 hours of work (C programming) almost every day. My project is at the stage of completion and we are currently conducting extensive reviews. As usual there are last moment issues to resolve and the time is really short....When I am not working, I am usually "dreaming in code".

Labels: , ,

Friday, January 02, 2009

The next book to buy

The next book that I really want to buy is Computer Systems: A Programmer's Perspective . Looks like a undergraduate level book, but seems to be a great reference guide.

Labels:

Saturday, November 29, 2008

Books to read

I have started reading Byte Wars

Also next books in line that I would love to read are
1) Mythical Man Month
2) Death March
3) Dreaming in Code

Fortunately all of these books are avaliable at the public library and hence I don't have to buy any one of these. Also I still haven't completed "Code Complete 2"

Labels:

Monday, November 03, 2008

Code Complete

Have started reading Code Complete, one of the best programming books I have come across. Really liked Steve Mcconnell's style of explaining things. Really liking this one, I bought another book of his, Rapid Developement . However it will be a while before I get to it.

Also for pleasure I have been reading George Soros's The New Paradigm for Financial Markets: The Credit Crisis of 2008 and What It Means. . An interesting read, has been OK so far, nothing great.

Labels: ,

Saturday, October 11, 2008

ADT in C

Abstract Data Type in C

Labels: ,

Friday, August 01, 2008

Practice of Programming

Some nice pointers from this book

1) Use active verbs for defining functions
2) When writing an expression for an if statement, spell it out loud (in your mind) and check if you can grasp the meaning of it.
3) Negations are hard to understand and hence avoid them.

Labels: ,

Programming revisted

Computer science departments in universities offer courses pertaining to discreet math, data structures, operating systems, networking etc. However most of these schools fail to teach the students the basic principles of writing a clear, consise and maintainable code. I have felt the need of this as I am currently working on a very complex project which involves changing a major functionality in the OS which has been implemented in C.

Hence to educate myself I have bought the following three books
1) Practice of Programming, Kernighan & Pike
2) Code Reading: The Open Source Perspective, Diomidis Spinellis
3) Programming Pearls, Jon Bentley

I plan to complete reading these in the above mentioned order. I think every serious software developer especially using C/C++ should read these books to improve their software engineering skills. I just wish someone had told me about these books earlier.

Labels: ,