Friday, 29 March 2013

My Reading List

Producing Open Software (2006)

A useful road map for anyone who wants to join or found a FOSS project.  It explains the social, organizational and legal issues that can arise.  Anyone needing to manage people will learn a lot from this.

Advanced Programming in the Unix environment (∞)

This is a pleasant, easy read, at least it starts that way, I'm on page 90, and it will probably get tougher.  It will teach you everything you always thought you knew about Unix, properly.  Read it all :)

The Art of Unix Programming (2003)

All about the culture, history and design philosophy of Unix, plus lots of tips and tricks. 

Object-Oriented Progamming in ANSI-C(1993)

I have to admit something.  I underestimated C.  26 keywords, I coded in C or similiar languages for years, so... what could possibly go wrong?  Then I saw OO C, and it could not be unseen.  This book helped me understand what is going on!

How to write shared Libraries (2011)

This will give you a framework and an appreciation of what you're dealing with when you play with libtool, or work with a project that uses shared libraries.

C Traps and Pitfalls (C-89)

Bugs!  You thought your bug story was bad?  Read these and learn (or just admire the problems from a safe distance...)

Unix Power Tools (2003)

This book was a life-saver so far, if you work through this, you're equipped for starting to study in earnest.  

Thursday, 28 March 2013

1, 2, many... lots...

I am absolutely amazed at the sheer number of diff programs out there -- they must be more of them than there are washing powder brands and I'm reminded of this tune:


Tuesday, 26 March 2013

If at first you don't succeed...

I tidied up the "comments" which are actually defines (what was I thinking?) in this file because, well, they looked messy :)

However, in this case, the position of the defines actually reflected the structure of the data -- something I have never seen before, but it's indeed very handy, once you know what you're looking at.

So, the patch then morphed from 'fixing' what was not broken to adding information about what is going on :)

Since we didn't want Doxygen to pick up that comment since it's only useful when you view the code, I used a /* plain comment */ here.

Friday, 22 March 2013

A Map of the Diff Problem

was gifted to me yesterday by Julian Foad, and curiously so,  it is making the difficult much easier by making it really big :)

Actually, none of those things are 'difficult' as such --- what made it hard was that I had no idea of the true dimension of the problem.  And so...:


Thursday, 21 March 2013

Diff is difficult.

After much staring, stepping and grepping, I finally produced a solution for the partial problem defined in (Issue 2074, "--extensions '' doesn't work.) which is part of (Issue 2044, Fully customizable external diff invocations).

It's not bad(it works for very small values of functional), but also not very good, since it is rather agricultural and I'm not sure how to handle deprecation, but, it's a start.

However it only deals with one part of the problem and not with the issue of giving the user a wormhole to call any diff function they want to use, however they want to.

To be continued... ;-)

Sunday, 3 March 2013

Completing the Gtest Build System OPW Assignment

Most important and useful knowledge I gained:


Explicit debugging  -- keeping a list of ideas, testing theories etc, keep your mind free of clutter for thinking and enabling you to casually return to even the most complex problem after a break without loss of continuity.

Most useful tool I learned about:


The 'remake' debugger for Makefiles, it provides a useful calling stack trace.
 

Things I relearned:


'make', how to document, shell scripting, simple C and C++.

New things I learned a little bit about: 


m4 macros, autoconf, python, configure, C++ and C compilation directives, gtest, libtool and the concept of shared libraries.
  

So what did I build for the Subversion OPW project?


Gtest Addition: 

  1.  a patch for adding gtest as an option to the build system
  2.  documentation for the gtest addition 
  3.  an example test for the gtest addition 

And since I had spent all this time trying to understand what is happening in the build system, I documented what I think is going on, with the happy result that the Subversion project gets some documentation for the build system and I get my understanding double checked:

Documentation for the Subversion Build System: 


  4. Overview
  5. 3 walkthroughs for adding various types of components
  6. list of files and their purpose for the build system
  7. Walkthrough of the main files' contents

Next up: Diff and Freeze!

PS.: I know we're 8 weeks into the OPW project, but, 2 weeks of that I was ill, and so, I'm actually really in week 6.

My mouse battery lasted exactly for the duration of the project!  (and my kitteh looks just like that guy too :) )