Wednesday, November 21, 2012

2012-11-21 Wednesday - Architecture Book Recommendations

Recommended Books for Architects

I realized tonight that the links to the books I recommended in this post were incorrect / broken, so I've updated them:
http://intltechventures.blogspot.com/2012/05/2012-05-17-thursday-recommened.html

...while there are a few overlapping suggestions, this earlier post may also have some suggestions that may be of interest:
http://intltechventures.blogspot.com/2008/12/2008-12-29-sunday-recommended-book-for.html

Sunday, November 18, 2012

2012-11-18 Sunday - Graphing and Plotting in Python


I'm spending some time this week researching various plotting and graphing solutions in Python.

The first package for investigation: matplotlib
http://matplotlib.org
https://github.com/matplotlib/matplotlib

My second choice for further investigation will be: MathGL
http://mathgl.sourceforge.net/

other solutions to possibly investigate later:
http://wiki.python.org/moin/NumericAndScientific/Plotting


2012-11-28 Update:
I just came across NetworkX
"Python language software package for the creation, manipulation, and study of the structure, dynamics, and functions of complex networks."
There are some additions available on the NIST Applied and Computational Mathematics Division web site [Network Modeling Software] that includes the following:

Saturday, November 17, 2012

2012-11-17 Saturday - Scott Young's MIT Challenge

Scott H. Young set a goal of 1-year to learn the entire 4-year MIT curriculum for computer science, without taking any classes.

http://www.scotthyoung.com/blog/mit-challenge/

...he completed his goal on September 26, 2012, just under 12 months after beginning October 1st, 2011.

Regardless of any question of qualitative aspects of his acquired/retained knowledge - the idea of challenging yourself to cover such a breadth of material (whether on a compressed timeline or not) - cannot help but to improve you in so many ways:

  • A forced-march refresh of material you may not have covered in a long time
  • A forced-march exposure to potentially new material that wasn't available to you before
  • A real stretch of your learning habits
  • A way to go back and fill in (or reinforce) concepts that you may not have solidly internalized before
  • A way to challenge you to achieve greater efficiency in how you acquire new knowledge / and assimilate and organize that knowledge

2012-11-17 Saturday - Software Modeling and Design

Over the last year or so I've been aggressively adding to my already extensive personal library (1200+ books) by visiting many thrift stores [frequently], and in particular, seeking out Friends of the Library type book sales.  Often adding 20-50 books in a weekend (often, for less than $20-$40 total).

For example, here's the 'treasure' from my last three book hunting expeditions:


Note: A very useful resource for finding local book sales: http://www.booksalefinder.com
[in case you may not be aware, supporting your local thrift stores is one way to directly help support local job creation in your neighborhood]

Since my reading interests are quite broad - the variety of books I've picked-up have spanned many different disciplines.  But, I'm always on the lookout for an interesting text that has some connection to my professional life as a solution architect.

A recent such acquisition: Hassan Gomaa's excellent  'Designing Concurrent, Distributed, and Real-Time Applications with UML' (published in 2000) - which I picked-up for about $1.00

NOTE:
Dr. Hassan Gomaa,
Department of Computer Science
George Mason University
http://mason.gmu.edu/~hgomaa/
http://mason.gmu.edu/~hgomaa/CourseSlides.html

I consider myself an advanced practitioner of UML - but often use a limited subset in my day-to-day architecture work.  I enjoyed the opportunity to do a refresher on some of the less-frequently-used aspects - and in particular, the concerns that are relevant to real-time modeling - by diving into Gomaa's book.

Most UML books tend to use trivial examples - and rarely spend much time on the real-time UML modeling aspects.  At 700+ pages, this is an excellent text for junior level developers to significantly deepen their UML modeling skills.

I must say that the book is well written and has weathered the passage of time quite well.





In fact, I've been so pleased with Gomaa's writing that I've added his 2011 follow-up text, 'Software Modeling and Design: UML, Use Cases, Patterns, and Software Architectures' to my future purchase list.


Sunday, November 11, 2012

My Review of Think Python


A Concise Intro to Python Programming
By IT_Voyager from Ventura, CA on 11/11/2012


4out of 5
Pros: Concise, Well-written, Helpful examples, Easy to understand, Accurate
Best Uses: Novice, Student
Describe Yourself: Solution Architect
Full Disclosure: I obtained a free copy of this book as part of the O'Reilly Blogger Review program.

Allen B. Downey's recent release (from O'Reilly) - 'Think Python' is an excellent example of how an introductory programming book should be crafted.

Clear, concise, entertaining, insightful, crisp, useful - these are some of the words that come to mind while reading this book.

There is good coverage of some of the differences between Python 2 and 3.

This is an excellent text for the novice programmer to learn Python - providing a general purpose overview of the language. The interested reader will find enough learning
traction within this book to more easily proceed to more advanced texts.

Programming concepts are gradually introduced, with successive layers of refinement adding further understanding of more complex programming concepts.

At the end of each chapter are suggested exercises to further deepen the reader's grasp of the concepts just presented.

The inclusion of links to codes samples and solutions at the http://thinkpython.com site is a nice touch.

While this book provides a very light overview of some essential software design concepts (Functions, Encapsulation, Generalization, Recursion, Inheritcance, Polymorphism), the reader of this book should plan to further enhance their understanding with supplemental books to cover deeper functional programming concepts as well as deeper understanding of class design and object oriented concepts.

It is notable that although this book certainly fits into the classification category of introductory - the coverage includes an uncommon attention to such important matters
as debugging and analysis of algorithms. As an additional bonus, Appendix C provides a discussion of Lumpy ("...to examine the state of a running program and generate object diagrams...and class diagrams) - which is included in the Swampy code discussed early in the book.