Monday, April 18, 2011

FTP is 40 years old this week

The idea of transferring files between computers has been around since networking began, but this protocol is the one that has survived the longest.

Thursday, April 14, 2011

Have Fun Learing!

Did you ever want to spend team time to learn a new skill or hone an existing one? Here is a site that lists lots of games to play that are centered on software development teams. http://tastycupcakes.org/ Enjoy!

Sunday, April 10, 2011

Just missed TEDxOKC - Doh!

Someone just told me that a TED conference was going to be held in OKC and when I looked it up, I found I just missed it! Ack.

You can go to their website and sign up for their newsletter, twitter feed and facebook page to keep in touch.


Friday, April 08, 2011

Stop wasting time debugging - advice from a sage

"If you want more effective programmers, you will discover that they should not waste their time debugging - they should not introduce the bugs to start with" - Edsger Dijkstra 1972 "The Humble Programmer"


When Edsger Dijkstra said this, he was speaking about a vision of the future where programming practices would drastically change. In this article, he wrote about 'The Software Crisis' and the resulting revolution. He predicted that anyone wishing to deliver reliable software would find a way to do so more quickly, which led to the quote above.


How much have we progressed?

Tuesday, April 05, 2011

Adrenaline Junkies and Template Zombies: Understanding Patterns of Project Behavior - a review



I've been reading "Adrenaline Junkies and Template Zombies" by the whole Atlantic Systems Guild crew, Tom DeMarco, Peter Hruschka, Tim Lister, Steve McMenamin, James Robertson, and Suzanne Robertson. You'll recognize Tom DeMarco and Tim Lister as the authors of Peopleware.

This is an easy and enjoyable read where you can see different patterns (and anti-patterns) for people, teams and organizations. Anyone at any level of the organization that is interested in trying to understand how people and teams work would enjoy this book.

Among the great quotes they cite in the book is this one.

“The correct amount of anarchy on a project is not zero.” —Mike Mushet

You'll laugh when you see some of the bad behaviors "others" engage in and cry when you see yourself. The book is a few years old, but it is something I expect will stay on my bookshelf for a very long time.

The roots of Design Patterns go as back as far as the 1960s

If you are not familiar with design patterns, look here.

In 1964, Christopher Alexander wrote a book called 'Notes on the Synthesis of Form' for architects and civil engineers to help them cope with incomplete and contradictory requirements during their design process. He suggests they simplify the process by looking at just the abstract elements and build a model that meets the basic requirements. This is followed by his contribution to the 1977 book 'A Pattern Language' where these abstract elements are standardized into a pattern that is applied to the overall design. This second book strongly influenced a paper on some patterns for smaltalk in 1987 which influenced the seminal work, 'Design Patterns: Elements of Object-Oriented Software' in 1994.

Wednesday, March 30, 2011

Hands-on training for Software Security!

OWASP has a project called WebGoat that allows you to learn about software security by testing and fixing an intentionally insecure web site. http://www.owasp.org/index.php/Category:OWASP_WebGoat_Project Leave a comment if you've worked through this and let everyone know your experiences!

The Stack is 54 years old! (at least the German Patent for it is)

The following link is a copy of the Patent application for the use of a stack to perform mathematical operations. We take this idea for granted today as a method for processing data, but the idea can be traced back at least this far. http://www.fh-jena.de/~kleine/history/software/BauerSamelson-patent-de1094019.pdf

Thursday, March 24, 2011

QA Comics

I posted a comic series a few years ago,

http://www.webcomicsnation.com/not-bob/sqa/series.php?view=single&ID=70234

While the following strip isn't the first, clicking on the link will take you to the beginning :), Enjoy!


Friday, March 18, 2011

Mr. Fails


Here is a link to a story about testing software in the form of a children's book



It's good, check it out!

Tuesday, March 15, 2011

The origins of 'Software Engineering'

The first of four articles on the origins of 'Software Engineering' was published today on the Software Testing Club blog. Here is the video that goes along with the article.



Friday, March 11, 2011

Proposal for QA Certification

Poking around, I found this image (click the image for the original blog) that was claiming the quality of a piece of code being described. I realized that lots of us do this, our only claim to the quality of our code is that on one particular day on one particular computer, the code worked as expected. We should formalize this by putting this logo on our products.

What do you think?

Wednesday, March 09, 2011

"Reflections on Trusting Trust"

This is an interesting read. It talks about security by working through the seemingly innocuous act of writing self-replicating programs.

Tuesday, March 08, 2011

New Language / Compiler Features

Here are some proposed compiler / language options that most modern programming languages can benefit from. These are based on common errors that have occured on systems that I have used and/or tested. Consider implementing these if you feel moved to do so.

Feel free to add your own in the comments.


FeaturePreventing
Find all files - When enabled, this will allow the program to search not only the local computer, but all computers on the network and then through files available through major search engines. One optional parameter is a timeout, given in hours. "File Not Found" error
Instantiate all Objects - Each object referenced in the project will be instantiated and when the condition is detected where an object appears to have no instance provided, a suitable instance from the pre-instantiated collection of each object type will be retrieved. Care should be taken when this feature is used in conjuction with 'Universal Cast'"Object reference not set to an instance of an object" error
Universal Cast - Allow the casting between any two types. How hard could that be?"Cannot implicitly convert type 'a' to 'b'" and "Type Mismatch" error
Expect the Unexpected - When enabled, the compiler will just ignore anything it doesn't expect."Unexpected character "?"" error
Trust Everyone - As a society, we are trusing each other too little. This can cause all sorts of issues with regards to full and complete access. When this feature is enabled, all means (legal and otherwise) are used to obtain the information or resources requested."Access Denied" and "Unauthorized" errors
Pass Mac - Give the MAC a passing grade, even when it hasn't really tried all that hard. Eventually, this will be someone else's problem."Vewstate Mac Failed" errors
Handle all Exceptions - Surely this error has been seen before. When enabled, the program will search online for a solution related to handling this exception and do that."Unhandled Exception" errors
All Knowing - Nothing happens by accident. So finding out the error can't be all that difficult, right?"Unknown Error" errors
Virtual Valium - Instead of freaking out when there's an issue, give the kernel some virtual valium when it starts to get confused."Kernel Panic" error (aka BSOD)
Allow Infinity - When enabled, allow infinity to be used in calculations. For the purposes of this feature, there is no distinction between a positive infinity and a negative infinity."Index out of Range" and "Attempt to Divide by Zero" errors
Ethics Committee - When this is enabled, the Heap is investigated for corruption prior to the corruption starting to ensure that all ethics guidelines are followed.Heap Corruption error
Stack Bowl - when enabled, the stack will be placed in a bowl to catch any overflow. This bowl will also be partially filled to fill in the stack when 'underflow' occurs.Stack Overflow\Underflow
Auto-initialize everything - For times when you think "I just declared that, why can't I start to use it?" (Thanks to Shmuel Gershon for this new feature)Errors when using variables before initializing
Do/Catch - As Yoda says "Do or not do, there is no try". (Thanks to Dwain)Try/Catch
.correctSpelling, .toPresentTense, .toPastTense, .toFutureTense, .toSingular, .toPlural, .toFirstPerson, .toSecondPerson, .toThirdPerson etc. - Allows you to validate responses (such as from security challenges) with users that have difficulty remembering the spelling, tense, etc. of their original answers. (Thanks to Chris/Chad)Security challenge response validation issues.

Wednesday, March 02, 2011

Wednesday, February 16, 2011

Masterpiece Engineering - a commentary on 'Engineering' Software

The 1968 NATO conference on Software Engineering was the first for this area of study to use this name.

Not everyone was convinced that a formalization for producing software was possible or desirable. Here is a paper submitted to that conference which expresses some of the concerns.

http://www.bobbemer.com/DAVINCI.HTM