Friday, June 10, 2005

Tomtoolery

The title of this post is a takeoff on the word tomfoolery which means foolish or senseless behavior.  One of the discussion topics for my Software Engineering course concerned building and using your own tools.  One of the students in the discussion, Chris Slater, offered this insight:



I am fairly new to the industry, so I have not developed a set of tools that I carry around.  However, at my new job, I have begun to develop these tools.  The funny thing about this is I created these tools in hopes of standardizing the tool set for our new project; however, once the other developers got a hold of these tools they either: (a) threw them away, or (b) rewrote them to fit their personal preference.

I then asked the class:

Did you ever ask  why they tossed or modified the tools?  This is a common experience and it would be nice to understand the, "not invented by me syndrome."  Is it lack of documentation?  Lack of Support?



I do notice that the use of tools, and reuse in general, follows an inverse square law of distance between parties.  It is much more likely that I will use tools or code from someone in an office nearby.  The probability drops off quickly the greater the distance. 

The only time I saw this not happening was during the mid years of UNIX (1970s-80s) and that was a factor (I think) of excellent documentation, UNIX manual pages, and a strong culture.



I did not expect anyone to respond, but Chris did (this is a paraphrase, it was longer):

Now, I also did some asking around and from what I can tell the two most prevalent reasons why tools such as mine get rewritten are ego or poor documentation.  I have to tell you the latter is one of the bigger problems I see.

What do you think is the reason for not using others tools?  Is it my distance inverse square law of reuse?  Is it poor documentation?  Is it ego?  Is it another reason?  I would appreciate your insight into this tomtoolery.



Thanks and later!



 



 



Tuesday, June 7, 2005

Sourcery

Julia Ryan has suggested another blog entry on source code management.  What tools do you use to manage source code and are these tools capable of providing statistics on the evolution of the source code?  If so, what sort of metrics do you typically collect and at what level (class, module, file or project)?  For example can your tool report the changed lines of source code and, if it can do you use that metric?  What other metrics do you use?



Generally we use CVS, but I am converting to Subversion, which seems a bit more straightforward.  To quote from the Subversion web site:

Subversion is meant to be a better CVS, so it has most of CVS's features.  Generally, Subversion's interface to a particular feature is similar to CVS's, except where there's a compelling reason to do otherwise.

I will report later this summer on my opinions of Subversion.  Of course if any of you have used these tools (or others), I would appreciate your comments.  Later.



Thursday, June 2, 2005

Program for Programming?

This summer part of my resolution is to clear my back log of blog posting from students (and add some of my own).  This blog is from Curtis Eckhardt from my Fall Software Engineering course at Stevens.  He poses the question: how does someone get started/accomplished in programming?  Is it solely through classes?   



What is or was your program for programming?   My program began as an undergraduate.  I had taken several classes that introduced programming concepts as part of their class (statistics and laboratory instrumentation) but I had not taken a programming course.  During the month break between the Fall and Spring semesters (1972-1973) I spent the holidays at home and then returned to school for 2+ weeks.  A professor (Don Walter) had given me a key to a room that contained a PDP-8 minicomputer that was used by the psychology lab for presenting and controlling experiments.   After those 2+ weeks I had a thorough grounding in assembler language and continued learning throughout the Spring semester.  That was my introduction to programming, which continued when I entered the graduate program at the University of Pittsburgh in Fall of 1973 and was introduced to the  PDP 15 installation at the Learning Research and Development Center



I am sure there are more current ways to learn programming.  What is your experience?  Do you  try to learn at least one new programming language a year?  I do and I encourage my students to do the same.  On to Curtis's post - later!



Here’s a question that jumped into my mind the last class:



How do you jump into programming?

Honestly? I suppose you could start by buying a few programming books… but that seems a bit overwhelming. I mean there are many areas in programming. Hell, even picking an appropriate programming language can be a pain. Of course, other questions have to be raised before this conversation can go any further. So I’ll use what I know best and setup a scenario based on me:

You’re in college and would like to learn how to program because it appeals to your sensibilities. You’ve taken two programming classes and found that it’s fairly easy to pick up on. You also have in your head all the possibilities that knowing how to program can provide, but don’t know where to start. Being that you’re a mechanical engineer already approaching your junior year, you deem it unwise to switch over to programming engineering. So what do you do?

What I did personally was join a small organization called Windows Interest Group (WIG). The reasoning was simply, “surround myself with people that know how to program and want to program and it’ll rub off on me.” WIG was for a small group of people to get together and learn how to program. The only problem was the fact that the organization was brand new! I mean I was basically one of five people that was interested enough to return consistently. I didn’t learn how to program better, but gained a few more friends.

<Afterthought 12-14-04>
WIG was actually a Microsoft sponsored program. So a lot of the meetings were PowerPoint presentations of .NET and how it’s the “wave of the future” for programming. Promoting .NET was just a ruse to get money out of Microsoft. Even though the focus had to be on .NET technology, learning how to program was still the overall goal. That was fine and dandy, but what I was looking for was to get a group of people to work on a cool programming project. Our group tried twice… since we were all too busy with school and work, nothing was accomplished. Plus, there were only 2 people in the group that could have been lead since everyone else were essentially noobs at programming. Anyway, WIG is still active. In fact, visit the (now outdated) website: http://www.asu.edu/clubs/wig/index.html
</Afterthought 12-14-04>

Without a little direction it’s easy to get overwhelmed and lost in the sea of books and knowledge that’s out there. Where do you start and why? Are taking programming classes the only way to gain guidance? Since time is limited, how does one avoid wasting time?



Monday, April 25, 2005

What's up? Doc!

The most recent lecture in my Human Computer Interaction course included a section on Documentation.   A basis for either electronic or paper documentation is a clean, crisp writing style.  Almost anyone can achieve such a style with practice and some help.  A major resource for effective writing is Strunk and White's,  The Element's of Style.  This short book is a must in your library.  I've had a copy for years. (The cover price on mine reads $1.95, so it has been a while.)   There is a new (fourth) edition of the book with an additional author (Roger Angell) and it sales for $7.95 at Amazon. (Amazon's Better Together deal pairs William Zinsser's book, On Writing Well, which is another classic.)



Best of all, if you would like to browse before you buy, there is an on-line version of Strunk and White that is available here.  In addition, samples from Zinsser's book are available here.  If you like either or both, I would get them for your bookshelf.  Using them, while not turning you into a novelist, will definitely improve the clarity, crispness and readability of your prose.   Highly recommended.   Later!



 



 



Thursday, March 24, 2005

Commanding Topic

This week in my Human Computer Interaction class I am discussing the various interfaces:  Direct Manipulation, Menu/Form Completion/Buttons and Command Line.  I have to admit that many times I favor the command line interface above all else for many tasks.  Yes, I still use Emacs and vi and feel a bit frustrated at times over the inability to bend the menu  items of Word or Power Point to my needs.  I also have not found a direct manipulation interface the I totally like although Apple's OS X  comes close.  I really dislike X Windows, always have, even when I had a SPARC I pizza box with purple feet.



(You have to be old to understand that one.  Basically the first Sun SPARC had a large pizza box form factor and its feet, rubber squares to elevate for heating and protect the desk top, were purple.  The day they unvieled the Sparc I, which was revolutionary, all the engineers were wearing purple speakers and it wasn't until the unveiling that folks in the audience got the subtle hint.  Whew, what a digression.)



All of this reminded me of Neal Stephenson's essay, turned into book, In the Beginning was the Command Line.  Although he referred to folks using command lines as Moorlocks, a not so kind reference from H. G. Wells, Time Machine (read the book, the movie was horrible), it is a great essay/book.  Even better, a version of the essay is on line with updated comments by a fan.  You can find it here.  Although I appreciate that the fan, Garret Birkel, made it available, I would focus on the original Stephenson text and  then return and read Garret's comments.



I hope you enjoy it!  Later.



Tuesday, February 22, 2005

Is there an architect in the house?

Julia Ryan, from my Stevens Architecture and Design class, wants to know how many software system projects use architects. Do you use them in your company?  Does it matter if it is a new or existing project?  Exert some care in your answer, since there arre many companies that provide the title of architect, but use it to mean a variety of tasks.  An architect for the purposes of this discussions matches Fred Brooks notion, that there is a single architect for a project that defines and fosters the conceptual integrity of the product.  Follow the link to get more information on what Brooks means.  We would appreciate your comments.  My development groups, regardless of size use an architect.  Later!



Julia Ryan's post:



Architecture is a fuzzy subject for me.  I think that the fuzziness stems from the fact that I have not been exposed to architecture at work.  I work on large software programs so I am surprised that I haven't seen it.  I wonder if it is because I work on legacy systems?  By legacy I mean, the code was originally developed years ago, and we are currently working on software upgrades (adding/removing functionality, code improvements, etc).  Or is it because Architecture is not yet widely practiced?  I'm curious to see if other organizations employ architects and architecture development on their programs and if they do, to what extent?



Wednesday, February 9, 2005

NKS Talk Wolfram

Attached is an email I received from Wolfram Science advertising talks by Wolfram in the metro area.  If you are interested in this controversial figure it would be a good opportunity.  In an earlier posting I mentioned that you can access the entire text of his book, A New Kind of Science, online.  You can access it here.  If anyone does attend his lecture, please post your impressions as a comment to this page.



I am hopefully going to be posting more actively again.  Later!


We thought you would like to know that Stephen Wolfram will
shortly be giving public lectures in your area.



Tuesday, February 15, 2005, 6:30 p.m.
University of Pennsylvania School of Design
Philadelphia, PA
http://www.design.upenn.edu/new/about/eventsdetail.php?eid=158
Room B1 Meyerson Hall



Wednesday, February 16, 2005, 6:00 p.m.
Princeton University School of Architecture
Princeton, NJ
Jean Labatut Memorial Lecture
http://www.princeton.edu/~soa/
McCosh Hall, Room 50



Thursday, February 17, 2005, 6:00 p.m.
Pratt Institute School of Architecture
Brooklyn, NY
Spring Lecture Series
http://www.pratt.edu/arch/
Higgins Hall



Friday, February 18, 2005, 1:00 p.m.
Rutgers University / DIMACS
Piscataway, NJ
http://dimacs.rutgers.edu/Events/2005/abstracts/wolfram.html
Busch Campus Center
http://maps.rutgers.edu/building.aspx?44



Dr. Wolfram will discuss new ideas and discoveries from his book
A NEW KIND OF SCIENCE (http://www.wolframscience.com), and their
implications for science, technology, mathematics and the arts.



The lectures are free and open to the public, though space may be
limited.