tag:blogger.com,1999:blog-3294270683991109102024-03-13T09:03:14.998-06:00Test This BlogProviding rational doubts against the coming e-topia.Zachary Fisherhttp://www.blogger.com/profile/11364709737097199211noreply@blogger.comBlogger28125tag:blogger.com,1999:blog-329427068399110910.post-91802268875744674822012-05-30T09:30:00.001-06:002012-05-30T11:12:57.928-06:00If you are reading this, you are a Test Automation EngineerI recently made the <a href="http://testingzach.blogspot.com/2012/05/test-automation.html" target="_blank">argument</a> (successfully?) that computers automate by nature; that anyone who uses a computer is by definition an automation engineer. Couple that with the observation that humans are always "testing something", and one could suggest that <strong>anyone who uses a computer is a test automation engineer</strong>. <br />
<br />
For example, the Internet is automation of <a href="http://www.systems-thinking.org/dikw/dikw.htm" target="_blank">data</a> retrieval, one that is engineered based on how we use it. My parents would not immediately identify weather widgets on Google as test automation. They just want to know if they need an umbrella when they go out. I, however, see a dashboard that allows them to interpret important data relevant to their needs and allows them to make decisions based upon their interpretation of that data. <br />
<br />
Did they program it? Well, yes and no. While they did not sit down and write the statements that brought this convenience into their lives, they did set its preferences, position where they deemed fit, and ensured that it welcomes them with each new visit. Without these interfaces, the tool is of less use to them. <br />
<br />
Another example: spreadsheets help automate data manipulation and presentation. My wife would not immediately identify a budget workbook as test automation. She would see it more of a way to track income and expenses, and how to identify if we're on target this month, can we go on vacation, etc. I, however, see it as a tool that allows us to repeatedly take all our disparate financial activity and produce a cohesive picture that allows us to manage our money better - to make better decisions (or to know the precise value of regret). <br />
<br />
Did we program it? Well, yes and no. While we did not sit down and write Excel, we did set set up its inputs and its formulas using the interfaces exposed to us.<br />
<br />
The differences between my definition and what is typically identified as test automation engineering have to do with complexity and intention - the scope of our solutions and how aware we are that testing/automating is going on in the first place. Like regular users, we manipulate the interfaces available to us in order to obtain data, arrange it into meaningful statements, test those statements for validity, and make decisions based upon those tests. Where we differ is how aware we are of the interfaces available to us, and how extensively we use them in our tasks.<br />
<br />
One side note: neither of the tools used in the my examples actually automate <a href="http://www.systems-thinking.org/dikw/dikw.htm" target="_blank">information</a>. That is the sole purview of people - to identify patterns and meanings. These tools may re-organize the underlying data, but we are the ones who are burdened with determining if this stuff makes sense or not; if it is valuable or not. <br />
<br />
Hopefully you get my gist: we all use computers to automate tasks that are important to us. We all use more automation tools than we realize. We know more than we think we do, and do ourselves a disservice if we believe that the high-priests of automation are the only people worthy enough to discuss its doctrine.Zachary Fisherhttp://www.blogger.com/profile/11364709737097199211noreply@blogger.com0tag:blogger.com,1999:blog-329427068399110910.post-910042246828235812012-05-22T01:40:00.002-06:002012-05-22T16:32:24.108-06:00Test Automation<i>Note: I'm writing this in the true hope that, within my lifetime, time travel will become a reality. And that future me, given to indulge in the kinds of preoccupations beset upon the nouevau riche, will visit past me with this post firmly in hand. I look forward to the chastisement that I gave myself 3 years ago.</i><br />
<i><br /></i><br />
<i>Warning: It is a bit complain-y.</i><br />
<i><br /></i><br />
<b>Example #1</b>: I watched my niece fumble through some math problems. In her concentration, she utilized humanity's greatest aide to the mind addled with numerical perplexity: she counted on her fingers.<br />
<br />
We have these fingers. But we also have the abacus, calculators, Babbage's adding machine, personal computers, cell phones, etc. We have a lot of ways to solve the problem of '2+2', and yet we still count.<br />
<br />
<b>We've automated the means, but the need remains.</b><br />
<br />
<b>Example #2: </b>From papyrus to the the Gutenberg press - we like getting our message out. In recent years, the effort it takes to get a message out has become almost laughable. I am writing this blog post at home and will publish it to a medium that goes around the world instantly. Whether it is read....<br />
<br />
We have these papers and pencils. But we also have blogs, Twitter, Facebook. We have lots of ways to solve the problem of 'how do I communicate this idea to others'; and, as evidenced by this post, we're in no shortage of opinions or things to say..<br />
<br />
<b>We've automated the means, but the need remains.</b> <br />
<br />
The point: the computer is a tool that automates tasks we've programmed it to do. Be it math problems or publishing daily drivel, it exists to make things easier by abstracting away all the gritty mechanics of it all. But we use it as a tool towards a greater end than just itself. What's left after our tools do their work is the thing we sought in the first place. My neice found her answer. My voice found its audience.<br />
<br />
If you accept that point as valid, then you may see why I now think the obsession with test automation is ridiculous, especially when it wears itself as a badge of honor. We don't hear writers extol their prowess at automating words. We don't hear scientists happily exclaim that while they have not solved the problem at hand, they have several thousand lines of framework ready to log the stack trace of all their functional programming. It may be shocking for some to consider that computers are now so ubiquitous that <em>everyone</em> is a test automation engineer. <br />
<br />
Perhaps I'm jaded, but this is partially why I stopped blogging about my journey in software testing. It is why I no longer darken the virtual door posts of the online watering holes wherein gather my former compatriots. The software testing I was enamoured with got stuck in a rut where the same functional test automation question repeated over and over ad infinitum. Don't get me wrong - I'm eternally grateful for all the help given to me when my voice rose in chorus with the din of noob-posts. I just fear that many newcomers now (continue to?) see this brand of "testing" as a means to be amazed at their own brilliance.<br />
<br />
Experience taught me things ambituion could not. Software testing is <em>not</em> the problem that needs to be solved. Who hasn't felt the narcotic effect of basking in the glow of perceived efficiency? However, my current role requires me to manage the testing I used to automate, and to do so from the customer persepctive. It is here that I hear the echoes of my naivete resonating back across the years. Decisions I once thought dripping with the kind of genius that would cause the world to beat a path to my door now seem to be unnecessary complications. The fun was in writing all that code and dreaming of the time it would save. The hell is now in maintaining it, training to it, supporting it. Ugh.<br />
<br />
<b>Example #3:</b> As an adolescent learning to play the drums, I gazed upon the massive arsenal of drums and cymbals that MTV served up daily. "This," I thought to myself, "is what playing the drums IS!". And so I asked Dad for a new cymbal. His response was, "learn to play what you've got". And so, 2 days later, I returned exclaiming that I had indeed learned to play what I had and was ready to receive my reward. He laughed and ignored my request. Now, years later, I know why.<br />
<br />
Playing drums is hard. It's demanding. It's exhausting. It requires discipline and experience. Mistakes are mandatory avenues towards greater mastery. And so it is with software. So the next time I read someone wanting to know how to automate testing, I'm will fight the urge to respond, "learn to play what you've got".<br />
<br />
But more than likely, I'll just ignore it. Before you think me cruel, you should <a href="http://soundcloud.com/zfisherdrums/r-i-p-chuck-brown" target="_blank">hear me</a> play drums.Zachary Fisherhttp://www.blogger.com/profile/11364709737097199211noreply@blogger.com0tag:blogger.com,1999:blog-329427068399110910.post-22998180871113552182009-12-22T23:24:00.010-06:002009-12-23T07:58:12.244-06:00Business-Facing Tester Helps Developer; Film at 11These days find me sitting squarely on the customer side of the development cycle. I haven't let that limit my approach, though. <br /><br />I still use automation, APIs, logging, checklists - basically all the tools I used when I was on the other side. Perhaps this delineation of 'sides' is unnecessary when both are striving to work together. This is just a unique configuration, one where a technical "expert" is collocated with the customers instead of SMEs being collocated with the development team.<br /><br />One day, our software vendor set up a WebEx to walkthrough the installation of their software. I shared my desktop and began to follow the developer's instructions. The first one hour session ended when we encountered an anti-virus policy that was not accounted for in the install package. Simply put, our company disallows "autorun.inf" files to be created on the file system, but the software has a dependency whose installer unpacks just such a file. This looked like it would be a job for our internal IT department, who would ultimately be responsible for deploying this software anyway. One session down, one to go.<br /><br />In our second session, we were able to continue the installation by temporarily bypassing the blocking process. Since this is what the IT department would have to do, I felt it was not masking any potential issues. The dependency installation was taking more time than the developer expected. We tracked it down to another internal IT process that was pushed out recently. Search indexing was working hard to account for the deluge of new files being created on the file system. Once we disabled that process for the sake of brevity, we continued on to the last issue.<br /><br />The package was finally installed on my system and all that remained was to update it. It was at this time that my co-worker Shane asked what would happen if we attempted to update while a session was active. We explored this scenario with the developer and were able to confirm that the update did not occur - as we had expected. However, the developer was perplexed as to why the active session window did not close during the update attempt.<br /><br />The developer mentioned that the recent buyout of their company required them to update all their company branding, including their window titles. It was possible that the routine responsible for closing the session window was looking for something with Company X in the title, but was actually Company Y. The developer began to search through their code to determine if this was the case.<br /><br />I thought I could prove his point rather easily during our WebEx. I fired up AutoIt and compiled the following code:<br /><br />WinSetTitle( "Company Y", "Company X" )<br /><br />I ran this on the remote box where we had an open session, observed that the window title changed, then re-ran the update utility. Sure enough, the window closed and we were able to move on. The developer gave us a great compliment, exclaiming that what we had just done was, "a pretty cool hack". We were able to confirm his suspicions in real time, and thus confirmed where his fixes needed to occur.<br /><br />I later looked back on that moment with much fondness. It reminded me that there are still some technical activities we can engage in that provide value for both sides of the effort. After all, we all just want to deliver good stuff. Who cares if some customers understand those lower-level details, provided the testing represents the customer's interest?Zachary Fisherhttp://www.blogger.com/profile/11364709737097199211noreply@blogger.com0tag:blogger.com,1999:blog-329427068399110910.post-83007457176551799902009-08-07T07:22:00.007-06:002009-08-07T16:23:32.261-06:00Facebook's Hidden BugFacebook allows me to gather friends ad infinitum. Currently, I have 279.<br /><br />As I add friends, I offer up chunks of Facebook real estate for their posts, thoughts, comments, etc. But keeping up with 279 friends causes me to spend a lot of time reading these little nuggets of personality.<br /><br />So I limit my interaction, as I've noticed that I tend to get sucked in. Some of my friends notice the same tendency. I know this because I read their comments. Just not all of them. <br /><br />The bottom line is this: I am a user of Facebook whose sole purpose is to visit the site <span style="font-weight:bold;">briefly</span> to find out what people of varying importance to me are saying.<br /><br />That is the User. The problem here is that everyone has something to say, but there is only one method of consuming that information: reading. Reading takes time and reading takes space. While having to read is not the problem - I'm not that lazy - the volume of items to read has become insufferable. As more and more people post their little gems with great rapidity (e.g., Twitter), my home page becomes a teenage-ADD-brain dump of middle-age technical professionals, musicians, and old high school chums; most of whom are being rudely run off the page by Twitter-bullies. <br /><br />I think Facebook should provide an option where users are provided posts grouped within a certain time frame. Only the latest entry by a friend is shown with an <span style="font-style:italic;">option</span> to see more. Think of something like a tree view where the root is "Posts within the last 8 hours." The child nodes would be unique friend avatars with the most recent item and a count of how many posts they have made within that time frame. Collapsed under that would be children nodes with the actual posts, comments being children of THAT node. Something like this:<br /><br />"Posts within the last 8 hours"<br />--->Bill Clinton "Taking a nap!" (3) <br />------>"Taking a nap!"<br />------>"Eating a ham sandwich."<br />--------->Al Gore<br />------------>"Again?"<br />--------->Hillary Clinton<br />------------>"What's new with that?"<br />------>"Rescuing reporters."<br />--->George W. Bush "Poking Cattle" (2)<br />------>"Poking Cattle"<br />------>"Tipping Cattle"<br />etc...<br /><br />In addition, I should be able to specify classes of friends. Friends from high school, friends from work, good friends, acquaintances, friends I have accepted because I didn't want to be rude but really can't remember them at all. <br /><br />I should be able to rank these classes such that the higher the rank, the higher up on the page. Yes, older posts may appear before newer ones, but that's okay with me because I know that it is time boxed to my requested window. <br /><br />Currently, Facebook just blithely assumes I want to read it all at once and treats the posts with a flat hierarchy, which is really nothing more than LIFO. I would love to have an option like this.Zachary Fisherhttp://www.blogger.com/profile/11364709737097199211noreply@blogger.com0tag:blogger.com,1999:blog-329427068399110910.post-79920812731914856502009-08-05T22:42:00.003-06:002009-08-05T23:00:24.647-06:00Letters to a future me about...automationThe point of the product is not cool automation frameworks. Automation is a byproduct of the testing effort. The end-user may benefit from automation much the same way that my cereal benefits from <a href="http://en.wikipedia.org/wiki/Automatic_milking">automatic milking</a>. Which is to say it may be helpful, but is putting the cart before...um...a quadrupedal animal of some variety.Zachary Fisherhttp://www.blogger.com/profile/11364709737097199211noreply@blogger.com0tag:blogger.com,1999:blog-329427068399110910.post-85465051111863792622009-08-01T11:33:00.029-06:002009-08-01T19:00:54.528-06:00No excuses...<span style="font-style:italic;">This post was originally intended to catalog a few tools to aide in viewing the internals of a system with an added chastisement to those who complain about not having enough information. In fact, I never got to <a href="http://www.microsoft.com/downloads/details.aspx?familyid=A362781C-3870-43BE-8926-862B40AA0CD0&displaylang=en">CLR profiler</a> or the array of <a href="http://msdn.microsoft.com/en-us/library/w4bz2147(VS.71).aspx">performance counters</a> made available in .NET. Instead, it turned into a brain dump of the ways in which I ask questions and seek out their answers. The journey took me somewhere I didn't expect. You'll see what I mean...</span><br /><br />I've been reading a lot of posts lately talking about how testers cannot test lower level functionality, structures, etc. because they don't have access to the code.<br /><br />If you're working with a .NET application, my response is "Pish-posh".<br /><br />Download <a href="http://www.red-gate.com/products/reflector/">Reflector</a>. Nefariously point it in the direction of those impenetrable .NET assemblies. Behold the fruit of your efforts:<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Gg3Ric9JUwI/SnR-xcuq8kI/AAAAAAAAAFA/Al8ztxBfWn4/s1600-h/Reflector.jpg"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 262px;" src="http://2.bp.blogspot.com/_Gg3Ric9JUwI/SnR-xcuq8kI/AAAAAAAAAFA/Al8ztxBfWn4/s400/Reflector.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5365052444095738434" /></a><br /><br />This is an actual disassembly of a program I was writing using the <a href="http://www.artoftest.com/home.aspx">WebAii automation framework</a>. Though my example is incomplete, you can still see what's going on under the hood.<br /><br />"But Zach", you protest, "I can't read all that code-y stuff! What kind of bugs can I find doing that?"<br /><br />Well, using this tool, I can think of one <span style="font-style:italic;">possible</span> bug that doesn't require intimate knowledge of C#, .NET, CLR, or IL disassembly techniques. How about the fact that you can go out and download a tool that can expose your stakeholder's intellectual property after a few clicks of a button? If the company is concerned about protecting its secrets, they should be concerned about the relative ease with which one could reverse-engineer their system.<br /><br />There are also plugins available that allow you to view differences between two versions of the same assembly. If a bug-fix is delivered, you may be able to ascertain where that change was made. What do you find there?<br /><br />"But our application is web-based! I can't just look at assemblies on my local machine!" More pish-posh! Your browser has a "view source" function. Use it to peer in behind the curtain. Want some more power than that? Download <a href="http://getfirebug.com/">FireBug</a>. More power than that? Download <a href="http://www.wireshark.org/">Wireshark</a>.<br /><br />But tools are not the answer to the question. In fact, they are distracting if you don't understand the question you're asking. Put another way, I'm not persuaded by the argument, "I don't know what all this code stuff is all about. I just mash buttons." It is time to take a lesson from the economy and learn something new. The internet has now made this a lot easier than it was when I was trying to learn <a href="http://testobsessed.com/2007/05/01/the-power-of-community/">Raster Interrupts on my Commodore 64</a>.<br /><br /><span style="font-weight:bold;">Your Mission:</span><br />Make a Windows application containing one button. When you click this button, a dialog box appears that reads, "Hello, World!". I won't tell you HOW to do this, that is YOUR job. But a few points are hidden in this exercise.<br /><br /><span style="font-weight:bold;">Learn Developer Empathy</span>. <br />Many communities like to push the idea that testing and development should be at odds. I think this is a dangerous idea. To me, developer empathy is NOT the same thing as BUG empathy because developers are not the problem. Sure, they may have coded it in wrong, but you're not going to be able to catch all the bugs in the system ANYWAY. So none of us are doing are jobs perfectly, cool? <br /><br />As the saying goes, you catch more flies (which are bugs) with Honey than with Vinegar. The 'honey' here is your willingness to learn about life on their side of the table. I guarantee that if you approach a group of developers with the problems you encounter while doing this exercise, you'll receive no end of advice. You can also use your experience to frame questions about the system under test: "I notice this alert comes up in the browser when I enter in invalid information. How is that different from my little application?" These are the kinds of questions I asked developers. Just remember to ask when it is convenient for them. I always walk away with more knowledge and more questions. Which leads me to...<br /><br /><span style="font-weight:bold;">Mind Map your journey</span>.<br />Create a mind map. In the middle, enter in the task of creating that Windows application. Before you start trying to figure out coding, try to articulate your confusion and frustration. Create nodes that encapsulate your questions: "What is a Windows application?", "Why do I hear so much about, 'Hello World'?" As you find answers, add them as nodes of the question itself. But you're not done because that answer should have created several new questions for you. Add them and repeat. Download this <a href="http://freemind.sourceforge.net/wiki/index.php/Download">mind mapping</a> program if you must. <br /><br />As testers, ours is not only a journey of questioning things, but in finding out the answers to those questions. If someone plops down a huge system for you to test, how are you going to tackle it? The question is always antecedent to the approach. So if you don't know, find out and track the way(s) in which you found out. Like watering holes in the desert, there will be places you perennially come back to for answers. Where are they? You won't find them unless you go <a href="http://bible.cc/matthew/7-7.htm">looking for them</a>.<br /><br /><span style="font-weight:bold;">Brush up on your Google-Fu</span><br />Learn to ask questions in different ways, including how to ask them in a Google query. Remove extraneous words. Group the related terms together to eliminate false positive results. Reduce the results to a certain domain, a certain file type, within a certain period of time. This ability can greatly improve the signal-to-noise ratio.<br /><br /><span style="font-weight:bold;">Don't brush up on your Google-Fu</span><br />Send that query out without all the constraints mentioned above. Misspell a word. Ungroup terms. Expand the time frame. Select a result from page 10, not page 1. Select the LAST result. You will be surprised by how much you uncover in the journey. <a href="http://en.wikipedia.org/wiki/Bob_Ross">Bob Ross</a> called them happy little accidents. I cannot tell you how many discoveries I made on the way to answer a completely DIFFERENT question. In fact, most of the downloads on this page are result of another train of thought.<br /><br />Now, you've downloaded <a href="http://www.microsoft.com/express/vcsharp/">Microsoft C# 2008 Express</a> and written your program. Go ahead and set up a new, small project for yourself and see it through to completion. Use TDD,BDD, NUnit or MbUnit. <span style="font-style:italic;">(What do all those terms mean? You don't seriously expect me to answer it for you, do you?)</span> You will have gained more knowledge of how to view the internals of the system. These internals are not only the constituent bits that comprise the application, but the human processes around their creation. Knowing these processes can guide your questions later on. No, you're not developer level but you are CONVERSANT. Being conversant means being able to have a conversation, and conversations lead to questions which lead to discoveries which leads to...<br /><br />Have fun playing with the tools. Just don't start/stop there.Zachary Fisherhttp://www.blogger.com/profile/11364709737097199211noreply@blogger.com0tag:blogger.com,1999:blog-329427068399110910.post-59580814910989939182009-06-06T16:54:00.007-06:002009-06-06T19:28:46.923-06:00Testing Programming Interview Questions...I was cruising around the internets today and stumbled upon one of those sites that posts programming interview questions. You know the ones: archetypal algorithmic queries requesting the shortest way to move manhole covers from Mt. Fiji while weighing eight balls of 3 different colors (choose only two). Those kind of rudimentary questions.<br /><br />I suppose the allure is that if one were able to successfully answer all the questions, they'd be a shoe in for the illustrious programming gig. Or perhaps to validate themselves; either they haven't been discovered (yet!) or are simply too brilliant to be burdened with the trivial job search (gimme a raise!). Only narcissists - insecure in their feeble abilities - answer these out-dated questions to puff up their sense of self-importance with a strapped-down, vein-tapped quick-fix of techno-trivia devoid of context.<br /><br />So by the time I got to question number 6, I was feeling pretty good about myself. It read as follows: <br /><br /><span style="font-style:italic;">You’ve got someone working for you for seven days and a gold bar to pay them. The gold bar is segmented into seven connected pieces. You must give them a piece of gold at the end of every day. If you are only allowed to make two breaks in the gold bar, how do you pay your worker?</span><br /><br /><span style="font-weight:bold;">***SPOILER ALERT***</span><br />I pondered for a bit, acquiesced to my plebeian logic, and moved ahead to the answer. However, when I read the answer I realized that it required that the worker be willing to trade in yesterday's pay for today's pay. <a href="http://www.nebo.edu/misc/learning_resources/ppt/sounds/Tim%20Allen%20aargh2.wav">Ummm???!!!!</a><span style="font-style:italic;">(Note I cannot spell the word I want to type here, so I'll simply link to a wav sound of it in use)</span>. I would never have arrived at that conclusion. There appeared to be a great many assumptions about what actions could/could not be taken.<br /><br />And that is why I'm writing this. I'm not so much fascinated by the answers as I am the meta-questions. What questions would you ask before you would feel satisfied?<br /><br />Some of mine include:<br /><br />-Can anyone else cut the gold instead of/in addition to me?<br />--If Yes: Are they subject to the same restriction as me?<br />---Do we both get 2 cuts each?<br />---Must I pay extra for their services?<br />---Can we renegotiate the terms if the worker is the cutter?<br />-With what are we cutting the gold?<br />--What if the cut cannot be made in a 24-hour period?<br /><br />What questions would you ask?Zachary Fisherhttp://www.blogger.com/profile/11364709737097199211noreply@blogger.com0tag:blogger.com,1999:blog-329427068399110910.post-5517042745069003212009-04-28T07:31:00.005-06:002009-06-06T19:30:53.383-06:00Stopgapplication is officially a pseudoword!<span style="font-style:italic;">( Thank you, Victoria )</span><br />------------------------------------------------<br /><br />Zach Fisher,<br /> <br />thank you for submitting stopgapplication.<br />you can view it by going to<br /> <br /><a href="http://www.pseudodictionary.com/stopgapplication">http://www.pseudodictionary.com/stopgapplication</a>.<br />replace any spaces in the url with underscores.<br /> <br />you can link to it by clicking on "link to word"<br />and you can send it to friends by clicking the<br />"send to friend" button under your word.<br /> <br /> <br />regards,<br /> <br />hd - editor<br />paul - concept<br />garret - programmingZachary Fisherhttp://www.blogger.com/profile/11364709737097199211noreply@blogger.com2tag:blogger.com,1999:blog-329427068399110910.post-41929415486157309572009-04-24T22:00:00.002-06:002009-04-24T22:19:10.749-06:00Thoughts On: StealingTaken from a response I posted <a href="http://www.autoitscript.com/forum/index.php?showtopic=93711&view=findpost&p=674114">here</a>.<br /><br />======================================================<br /><br />Lots of talk on this thread about the role of RIAA/labels/music in the context of file sharing. For a good expose on how the music industry found itself in the horns of this dilemma, check out <a href="http://www.pbs.org/wgbh/pages/frontline/shows/music/">"The Way The Music Died"</a>. It is well done, fair, and thought provoking.<br /><br />I've lived in Nashville, TN since 1999 and for most of my time here, I had no aspirations for being an artist but was more involved in the session scene. Nash-vegas was once home to a thriving music industry comprised of a tenuous relationship between artists, labels, and songwriters. I joined ASCAP ( American Society of Composers, Authors and Publishers ) in the early 2000's and have realized mechanical royalties on songs I've written and co-written. I've played on a slew of custom albums ( read: low-budget ) where I played drums, sang BGVs, arranged, wrote string arrangements, programming, etc. I also received payouts from the Musician's Union for playing drums on "Shadowlands" on this <a href="http://www.rhapsody.com/rebecca-st-james/if-i-had-one-chance-to-tell-you-something/shadowlands-if-i-had-one-chance-album-version/lyrics.html">album</a>. And prior to all this, I played percussion for a series on The Learning Channel. Why all this "bragging"?<br /><br />Because I've only earned about $100 in royalties for 2 songs that were recorded on a limited release ( @1000 copies pressed ). And the payout from the Musician's Union for playing 1 track on a nationally released, major-label album? About $45/year in mail-money. Now that I'm no longer pursuing music in a professional capacity, I can comfortably say: There is NO MORE MONEY in making music. Not in the established model. Some of this is the fault of greedy label execs. But a lion's share of the blame also belongs in the laps of people who view "songs" as algorithmic sequences of 1's and 0's - coldly detached from the hard work of people that are never seen and almost never recognized; that these products are somehow the inherent right of the digital denizens.<br /><br />In this volatile economic environment, I've seen my friends lives reduced to panic-inducing shambles as a once dependable - albeit flawed - system of monetary compensation dried up seemingly overnight. The closest thing to retirement for these individuals is the steady stream of royalties on a large body of work. It is serendipitous income and a far cry from what I read between the lines of most protestations of the "right-to-file-sharing" adherents - that somehow the music industry is getting its just desserts for a century of decadent living. These friends of mine are living lives far from opulence, even when the DOW was well neigh 12,000. I think my engineer friend put it best, "its like complete strangers coming up to my supper table and stealing food off my kid's plate."<br /><br />Some may argue that the internet levels the playing field, making it easier for unknown artists to be discovered. That maybe true, though I'm skeptical that any singular source of discovery will not necessarily homogenize. Fact is, it takes many talented people to create good music: songwriters to write the songs, engineers to capture quality sounds, producers to guide the artistic vision, mixers to blend the constituent elements into a complete musical thought, mastering engineers to combine disparate vignettes into a cohesive whole. These people are talented and deserve to work. I've heard some good indie music online...but the quality sucks. My bias is observed. Consumer electronics has done much to put power in the hands of the many, but when you see a professional at work, these devices seems like crude toys. It is an inspiring thing to "watch" the creation of an album.<br /><br />Some may also argue that these poor folks should suck it up and get real jobs like everyone else. News flash: you assume that they don't already. If we adhere to the thinking that art is not worth compensation, I would ask if we would ever stop paying professional athletes just because we can toss a ball around every once in a while? What if the teeth of the digital age set its edges on your career? In many cases, it already has. We should not wait for higher courts to legislate what ultimately is a moral decision: taking a product for free when it is meant to be purchased, regardless of distribution methodology, is stealing. Period.<br /><br />I understand that some will disagree with me. But before you do, I invite you to come to Nashville, TN. I'll give you the southern hospitality tour of the city and the surrounding areas. I'll show you the historic points, serve you some sweet tea, and top it all off with a trip to some of the songwriters and engineers most affected by greed in its many forms. I invite you to explain your rationale to them.<br /><br />Zach...Zachary Fisherhttp://www.blogger.com/profile/11364709737097199211noreply@blogger.com2tag:blogger.com,1999:blog-329427068399110910.post-27632313957022763482009-04-24T21:51:00.003-06:002009-04-24T22:15:23.803-06:00Thoughts On: IntegrityMatthew Heusser has been writing a lot about integrity lately. I think these are so valuable. I responded to one and decided I wanted to place it here as well. <br /><br />=======================================================<br /><br />Matthew,<br /><br />My father is a soon-to-be-retired pastor. One particular church he was serving had an individual who routinely usurped his leading and authority. It eventually came to a point where my father set forth the necessary actions to have that person removed from their position. Prayer. Council. Meetings. Votes. Those kind of actions.<br /><br />Needless to say, this created quite a schism in the otherwise picturesque congregation. I witnessed many a friendly face turn sour; anger and condemnation poured almost as readily as the backbiting and slander against him. My father had done irreparable harm to "their church" I was not a little concerned that his decision may have been wrong; look at all the havoc it had wreaked in this once tranquil scene!<br /><br />Sometime later, we sat at breakfast where he shared with me these words that I will forever cherish, "Son, if it comes down to pleasing God or pleasing man, go with God and take your hits." The church never regained its composure and my father recognized that he himself had to leave if healing were to take place. This is when I learned that integrity costs. Dearly.<br /><br />Perhaps I'm biased, but I truly believe that my father's actions in those days were used - whether he knew it or not - to expose a truly nefarious 'bug' that existed behind the peaceful veneer of some carnal Christians. If the quality of Christian service were of the utmost importance to these slanderous actors, would their response to this perceived injustice have been so decidedly Un-Christlike? Their reactions proved to me that their "church" was not the Church of God's design, but a social club meant to satiate a more carnal desire. This kind of church was NOT in the specs.<br /><br />So this has been my observation when it comes to the truth: we can hide from it, but it will eventually come out. The sooner it comes out, the less layers of false expectation have been heaped upon it - reducing the damage and expediting the healing/fixing.<br /><br />Just think of how the world economy would be today if a few more "lights" spoke out in the financial epicenters 10 years ago.<br /><br />Thank you, Matt, for your posts on Integrity. May they be more than read, may they be understood.<br /><br />Zach...Zachary Fisherhttp://www.blogger.com/profile/11364709737097199211noreply@blogger.com0tag:blogger.com,1999:blog-329427068399110910.post-55520582468562608182009-04-23T14:33:00.002-06:002009-04-23T14:43:50.980-06:00New Word: Stopgapplication<span style="font-size: 30px">Stopgapplication</span><br /><br /><span style="font-style:italic;">Main Entry</span>:<span style="font-weight:bold;">stop·gap·pli·ca·tion</span><br /><span style="font-style:italic;">Pronunciation</span>:<span style="font-style:italic;">\ˈstäp-ga-plə-ˈkā-shən\ </span> <br /><br />A cheap, throw-away program that is meant to aid in the transition to a more complete and/or robust program, but due to neglect, has become a permanent solution that must be supported at great expense by the enterprise.Zachary Fisherhttp://www.blogger.com/profile/11364709737097199211noreply@blogger.com2tag:blogger.com,1999:blog-329427068399110910.post-8895978621674344222009-04-18T00:54:00.006-06:002009-04-20T17:05:36.604-06:00Community 2.0 betaWhat follows was originally going to be a response to <a href="http://xndev.blogspot.com/2009/04/wheres-waldo.html">this post</a>, but it went beyond polite comment length. A snippet of Matthew Heusser's post and my thought afterwards:<br /><br />-------<br /><span style="font-style:italic;">"What I'm wondering is - can we use these new social media tools - facebook, (cough) myspace, twitter, instant messanger and so on - to pull together in the way that families did in the 1930's? And what would that look like, exactly?"</span><br />-------<br /><br />IMHO, modernity is aiding a kind of isolationist brand of communication that placates to our 'right' to convenience.<br /><br />The family nuclear may be embroiled in a kind of diaspora, but I think the idea of community is still alive and well. What I am skeptical of, however, is the quality of community these tools create around us. If all I listen to is what Pandora thinks I like, I end up with a pretty boring selection of songs. <br /><br />I also am concerned about the means by which we engage in community. To me, technology is springing up to solve a problem we created for ourselves, which really is no solution at all. The irony of me saying this while commenting on a blog for someone I've never met - is not lost on me.<br /><br />Community costs us. It costs time. It costs our dreams. It costs our entitlement. It suffers when we soak in myopicism. We can expedite the salutations and introductions, but we will not create something that can profoundly affect us (and others) as it should.Zachary Fisherhttp://www.blogger.com/profile/11364709737097199211noreply@blogger.com3tag:blogger.com,1999:blog-329427068399110910.post-20541130962879830412009-04-07T21:00:00.028-06:002009-04-20T17:06:00.196-06:00The Gospel of Record and PlaybackMicrosoft unveiled its UI Automation capabilities for VSTS 2010 at Mix09. If you are interested, watch this <a href="http://videos.visitmix.com/MIX09/T83M">video</a>. Watching it was painful for me. <br /><br /><span style="font-weight:bold;">Some Highly Opinionated Observations</span><br />I felt truly bad for Brian Keller (Brian, if you're ever reading this, you did a great job). He was stuck practically sweeping up the ticker-tape from previous presentations. Even he found it ironic that his presentation was stuck at the end of the conference...like so many testing efforts. And like so many testers, he pleaded for feedback from a roomful of developers to help determine if there was significant interest in future talks about testing. Oh, and the technology wasn't helping either. <br /><br />In 17 minutes, I saw a perfect example of the inherent difficulty with record-and-playback, even though it was capturing a lot of deep information. A functional test was recorded and the first failure was detected upon playback, only it was triggered by errors made while editing the generated code. <br /><br /><span style="font-weight:bold;">Recordin' Payback</span><br />Now, don't get me wrong. I am VERY impressed by what Microsoft is putting into the hands of the team - but at what premium? This is where I would like to insert my favorite argument, "Why do I need to pay $X,XXX.YY/seat for a tool that gives me the honor of pushing the button our team was tasked with creating?" How expensive is it to do any/all of the following during development:<br /><br /> - Define unique control IDs<br /> - Define Active Accessibility parameters <span style="font-style:italic;">(y'know...those weird parameter fields you NEVER fill out when adding controls to GUIs in Visual Studio)</span><br /> - Override control's WndProc methods with custom logic to persist user interactions to log files that can later be used for playback<br /> - Keep logic OUT of the forms so that your application can run headlessly<br /> - Implement Michael Hunter's <a href="http://www.thebraidytester.com/stack.html">Automation Stack</a><br /> - Charge a junior test engineer with the task of learning how Win32 Window APIs, MsAA, Java Active Accessibility Bridge, .NET UiAutomation namespaces, etc. really works.<br /> - Make testability hooks critical features in the application<br /> - Make log files critical features in the application<br /> - Report Source Code changes to the entire team<br /><br />Does it take longer to implement these things? Maybe. It will definitely take longer to impress any management that merely hovers over the process with all the disinterest one could expect from a super model on a blind date with <span style="font-style:italic;"><insert NASA scientist here></span>. But I can say this much: if the department I'm in is considering necessary economic cutbacks, I'm glad I won't be competing with maintenance fees for COTS tool X.<br /><br />My opinion is that these are more valuable for the organization because they invest in the individual(s) and their knowledge, not dumping money into 3rd party solutions to solve what are perceived as technological issues. To me, this is the same as if my parents, after being diagnosed with Diabetes, determined that the problem wasn't their diet but was actually their cooking. And then proceeded to "solve" this by eating the same foods at restaurants because...heck...<span style="font-style:italic;">they</span> know how to cook. Sure, it costs more, but look how much healthier we are! <br /><br />Hmmm. I guess it depends on the food/restaurant.<br /><br /><span style="font-weight:bold;">Benediction</span><br />Finally, on a more personal note: I long for the day when the ridiculous moniker of "evangelist" is purged from the tech nomenclature. I understand that it can bear secular meaning, but its use is imbued with religious connotation. An evangelist is one whose very existence bespeaks of a salvific message. As a tester and a man of faith, I find the idea that a technological solution could save us is...well...laughable; and the very reason I have a job.Zachary Fisherhttp://www.blogger.com/profile/11364709737097199211noreply@blogger.com0tag:blogger.com,1999:blog-329427068399110910.post-25431509527555680612009-04-01T12:16:00.011-06:002009-04-08T06:43:25.289-06:00Testing Tool: FileHamsterFileHamster is awesome. If it hasn't already arrived at your city - pillaging it with paws of gargantuan awesome-ness (paw-someness?) - then consider yourself both deprived AND unfortunate. Download it from <a href="http://www.mogware.com/FileHamster/">here</a>. I've been using this tool for about 1.5 years now and always come back to it. <br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Gg3Ric9JUwI/SdO6TTURSSI/AAAAAAAAAEI/9LYlruli2Bw/s1600-h/FileHamster.jpg"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 355px;" src="http://4.bp.blogspot.com/_Gg3Ric9JUwI/SdO6TTURSSI/AAAAAAAAAEI/9LYlruli2Bw/s400/FileHamster.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5319800425620261154" /></a><br /><br />In a nutshell, Filehamster is a glorified directory monitor that acts as a kind of localized source control. The developers originally intended it to allow creative types to work without the fear of being unable to undo their Picasso-esque changes. Anyone who has made modifications to a document, then closed the application only to realize that was in fact NOT the modification you wanted, can attest to this problem. Here's how it works from a 3048m view:<br /><br />- Create a new directory/file watch<br />- Operate your application, saving changes will-nilly<br />- Observe that FileHamster captures each successive save<br /><br />"No bug whoop!", you exclaim. "The .Net framework has a FileSystemWatcher class that lets me do the same thing!" That is true. Who <span style="font-style:italic;">hasn't</span> written this kind of program before using that very class. However the ease of use, visibility of changes in real-time, and the diff plugin are benefits that keep this high on my desert island list of exploratory testing tools.<br /><br /><span style="font-weight:bold;">An example would be good here:</span><br />If I have a fat client application to test, one of the first things I do is pop open <a href="http://live.sysinternals.com/">FileMon</a> to observe its file system traffic for log files, artifacts, etc. Once I determine the directories where these files are written to, I create a new recursive directory watch in FileHamster. Even better, I can filter the types of files that it captures, thus reducing the potential for data overload. I then proceed to explore the app some more. Meanwhile, FileHamster is dutifully running in the background capturing all the file system changes into discrete time-stamped files and alerting me when it does so. <br /><br />After a session, I can come back and observe the captured files. FileHamster honors any file associations; it will open the file in its associated application, e.g. TXT in notepad, MDB in Access, etc. This ability to observe a session's change history is valuable in-and-of itself. However, the diff plugin allows me to specify a comparison application as well. I can select two of the captured files and launch the comparison application via a context menu. Now I can see what changed in the document while I was testing away. <br /><br /><span style="font-weight:bold;">Experience Report...nnnNNNOW!:</span><br />I've used this approach while testing some financial applications that persisted actuarial debug values in a kind of CSV file. I would run a plain vanilla case, then run an alternate solve that should have given me the exact same answer. Both tests produced the CSV file. When I encountered a problem, I simply compared the known good (did I mention you can assign comments to the captured versions in this thing?) to the variant version and observed precisely where the diff was introduced. I don't need to be an ASA to tell you that a different max allowable loan value in year X could have significant ramifications on a Universal Life policy and its later-year cash values.<br /><br />The only problem I've encountered is that I'm only able to specify one diff application. I've worked around this by creating a stub utility that maps all my diff applications by file extension. That way, my .xls files are compared in my custom Excel file utility, .PDF files are compared in another, etc. I may post my comparison stub script later, but it is simple enough to script in a language of your choice.<br /><br />Download FileHamster and check it out. It runs on Windows and requires .NET 2.0. I want to say that I've also been able to run it off a thumb drive, so portability may be a benefit. Let me know what you think.Zachary Fisherhttp://www.blogger.com/profile/11364709737097199211noreply@blogger.com0tag:blogger.com,1999:blog-329427068399110910.post-74301094579844515572009-03-27T23:53:00.013-06:002009-04-20T17:10:42.183-06:00Everything I know about Software Testing can fit in a Crock PotMy wife put a pot roast in the crock-pot this morning in anticipation of a get together this evening. She told me she had set the timer for 9 hours, had pressed 'Start' and that it was cooking. Even though we were running late, I would not leave until I observed the timer change from 09:00 to 08:59. Despite her protestations that she had set it up correctly, I remained skeptical of the device. We had experienced failures with these things before.<br /><br />What if the clock was set, not the timer? To me, the only visible difference between a clock and a timer is that one runs forward, the other runs backwards. While trying to prove her point by repeatedly pressing the 'Start' button, I observed no visceral feedback that said "Hey! I'm starting!" other than some LCD words that I had no reason to believe weren't always there before. No beeps. No buzzes. I was almost ready to assume that the bright red light was an indication that it was cooking, but I wasn't around to observe what state would cause the light to be off. I had in mind the risk of this device failing, namely that if it failed we would not eat and our party spirits would be dampened severely. This was too great a risk to not conduct a simple 1 minute test. <br /><br />Mind you, the device could still fail in innumerable ways - heating element failure, electrical outage, etc. In fact, I thought about how I would be able to confirm power at home while I'm at work. I kind of wish our house had an old school answering machine and a land line telephone. But this 1 minute test would have to suffice as we had to leave ( read: push the pot roast into production ).<br /><br />Please understand that my wife, so far as I can tell, does not share air with a tyrannical overlord who seeks opportune moments to hold a kind of tester's entitlement over her head. I give her honor where honor is due and ensure that our relationship flourishes in honesty and respect; she is in no small way my Queen. It is precisely because of how highly I value our relationship that the thought of her party plans being ruined compels me to protect her from the ways that technology lulls us into a false sense of security.<br /><br />As we drove to work, I thought about how this epitomizes my experience in software testing.Zachary Fisherhttp://www.blogger.com/profile/11364709737097199211noreply@blogger.com2tag:blogger.com,1999:blog-329427068399110910.post-47046615236997001112009-03-16T19:51:00.004-06:002009-04-20T17:06:30.481-06:00Testing the TruthSingularity Hub has an interesting <a href="http://singularityhub.com/2009/03/16/truth-machine-to-be-used-as-court-evidence/">post</a> about "attempts to bring fMRI brain scanning based lie detection evidence to the court."<br /><br />This got me thinking: would I have an ethical objection to testing a project like this? If not, what kind of project would I be unwilling to participate in? What if I were in a project and suddenly realized that the product could be used for nefarious purposes? What if my superiors responded to my protestation with an emphatic, "meh...get back to work."<br /><br />So here are some questions I ask the greater testing community:<br />(1) What role do your ethics play in your software testing? <br />(2) Is there a project you would not work on, or have not worked on, based on moral objections?<br />(3) Does the current economic climate change what you would/would not work on?<br />(4) How would you test a product that claims to discern the truth?<br />(5) Would you purchase an iPhone app that could discern truth from lies?Zachary Fisherhttp://www.blogger.com/profile/11364709737097199211noreply@blogger.com0tag:blogger.com,1999:blog-329427068399110910.post-59503805993209605722009-03-06T23:09:00.013-06:002009-04-20T17:10:19.756-06:00Learning to SHUT UP!New Testers of Earth! Heed my warning!<br /><br />There will be a day in your career when you will implement something you've always wanted. It may be a tool. It may be a process. It may be both. But it will seem to you as though it is yours.<br /><br />You will nurse your burgeoning idea from cradle, through its shaky infancy, all the way up to the point when it begins to walk "on its own". You will grow more proud each day at your child's accomplishments. How it tidies up after itself. How polite it is to newcomers. How well-behaved and dependable it seems to be. You will swell up with pride as you show passers-by pictures of your "idea" doing the most wonderful things - running, spawning, making reports. And though you will fiddle with the thing for what seems like an eternity, you know that you know this thing, this idea, this slice of heaven - born from the marriage of your intellect and your soul - will undoubtedly change the course of history for all who would gaze upon its perfection!<br /><br />If only everyone else would look at it, they would see it as you see it.<br /><br />And then someone will call. Someone always calls. There is a problem. And this time the problem is not going to be solved by your miniature doppelganger. Actually, this problem was a direct result OF YOUR IDEA! Perhaps it was an oversight you made while extolling the virtues of your chosen child. Some inattentional blindness you succumbed to as you wrestled with either analysis paralysis or were being beguiled by some new technique you wanted for your resume. The once crowning, glorious edifice to all your rational logic is rent asunder by the astute observation of those you placed in subjection to it.<br /><br />Your first emotion will be one of incredulity. Certainly the problem is elsewhere in another system...one you're not really responsible for. But no, the evidence points to your own backyard. Then you will seek to affix the blame on someone else. Someone else should have caught this! But alas, you'll be unable to prove that empirically and you'll realize that any effort to do so will only cause an escalation to occur. You'll be trapped. The problem finder has been found to be...a problem!<br /><br />Oh, the insult to your abiding genius!<br /><br />Now listen to me very closely. During all this frenetic activity, you will be tempted to lash out at those who accuse you. And you'll know all the words to say to give you the appearance of rightness. A quote here. A name-drop here. A book you read over there. Or even better, you know you could go trolling for evidence in your data farms and find the EXACT MOMENT when that ungrateful so-and-so really dropped the ball. Sure, it'll take an hour of research, but you KNOW its there. You'll even start up Agent Ransack. Are you still listening? Then hear this:<br /><br />Stop it. Stop it NOW.<br /><br />What you are about to do is introduce an unnecessary complexity into an already complex situation. That complexity is your personal desire to be seen as right...all the time. It is not only unnecessary, it is counter-productive.<br /><br />I sometimes detect a hidden thread in our software testing conversations that bemoans our meager status. "If only they would listen to me," it seems to say. Much talk is given to methods and practices we might employ that would bolster our believability index. And this is good, but without restraint, maturity, and wisdom it leads to a kind of methodological mutiny. You can end up seeking to change the course of the development effort in a subversive manner; team buy-in be damned! This is not being progressive. This is not being helpful. This is not being clever and it will not land you a job at <insert mega-trendy forward-thinking collective here>.<br /><br />You work in a team. And a team works together. You perpetuate the us-versus-them mentality at your own peril. You will make mistakes just like everyone else. Own them. Working with others is a messy affair, mostly because we are all so darned complex. We defy any attempts to metricize our behaviors, but that does not stop us from trying. Future history will be littered with our grandiose ideas to reduce complexity and manage expectation. Some may actually work, but they will only work when they work well with others.<br /><br />On the cabinet above my desk, there is a post-it note stuck to the door. It simply reads:<br /><br /><span style="font-style:italic;">"This is not the kingdom you are building."</span>Zachary Fisherhttp://www.blogger.com/profile/11364709737097199211noreply@blogger.com3tag:blogger.com,1999:blog-329427068399110910.post-34470325442629286452009-03-05T19:08:00.005-06:002009-04-20T17:10:36.288-06:00Learning to lead...Today, I met with my direct reports to go over their performance reviews. It is difficult to find the purpose in bureaucracy, especially in tough economic times. So in my "rebellion", I decided to make the most of this edict from on high.<br /><br />In keeping with the "script", we addressed the issues noted in their respective reviews. We talked about career goals and such. And having done this, I confirmed that they were satisfied with all that was written and addressed up to that point.<br /><br />"Yes," they would dutifully reply; "Check," my mental reply.<br /><br />But then I expressed to these amazing individuals that I felt responsible for equipping them not only for their jobs, but also the greater market. I spoke candidly and frankly that because we live in such uncertain times ( haven't we always? ), I felt morally obligated to assist them in becoming all I know they can be. And I apologized for failing them so in the previous year; for my distance, my myopic nature, my personal ambition making me unavailable at times.<br /><br />I gave them the power and right to hold me accountable in my others-improvement endeavor. They can improve me as I help improve them. I want so desperately for my direct reports to succeed. It causes me much inner-turmoil to think that should a pink slip appear, it could send them out into the current job market with limited exposure to advanced topics in development, testing, and automation. This is my responsibility, so I endeavor to rectify it.<br /><br />Managers and Testers reading this: what are YOU doing to improve the quality of the PEOPLE around YOU in ways that will benefit THEM should they no longer be around YOU?Zachary Fisherhttp://www.blogger.com/profile/11364709737097199211noreply@blogger.com1tag:blogger.com,1999:blog-329427068399110910.post-22394249576962784092009-03-05T01:09:00.011-06:002009-04-20T17:07:59.243-06:00Humanity, Suffering, and SoftwareJust finished watching Arch Bishop Desmond Tutu on Craig Ferguson's show tonight. Mr. Ferguson is a recent discovery of mine since going down to basic cable. His off the cuff style hits my funny bone just right. But tonight I was hit in a different place. For the better, I believe.<br /><br />Father Tutu was questioned about the motivations behind forgiveness in the face of unspeakable humanity. His answer involved describing the inherent intertwining of our humanity, and that any practice that dehumanized an other will have a reciprocal affect on the dehumanizing agent. It was incredible to watch someone who spoke with passion, precision, and humility about the betterment of life through love and forgiveness; that aspiring to the better parts of ourselves is a noble endeavor. He left the usually talkative Craig speechless. He is a peacemaker in every sense of the word.<br /><br />And after this, I read James Bach's <a href="http://www.satisfice.com/blog/archives/224">blog entry</a> on how quality is dead. Long live quality! I will not attempt to summarize, but James' thoughts are lucid and illuminating as usual. Please read it. Now, James would be the first to say that he can be argumentative. If he is a peacemaker, it may come about only after much heated debate.<br /><br />Sometimes when my mind encounters a striking dissimilarity between two things, I seek to find their commonality. What does software quality have to do with Apartheid? And so it is late enough at night for me to entertain the relationship between these two seemingly disparate media events and their perpetrators. To explore the connection between Father Tutu's cause and James Bach's cause.<br /><br />Perhaps James' observations speak to a very small kind of oppression forced upon us by a culture intoxicated by its technology (in-techno-cated?). Perhaps Father Tutu's response to a particularly nasty, high severity problem ( i.e., Evil ), and his subsequent success, is a valuable model to combat the present state of affairs.<br /><br />Both ideas seem to be crying out for change that benefits everyone, but are dealing with entities reticent to change because, well, there's no incentive to change; reduced quality does not hurt the 'haves'. And these entities fervently believe that nothing is wrong, that things are actually improving.<br /><br />It seems to me that restoring a proper perspective is a shared idea in both issues. It is good to see ourselves as humans again - linked to each other in inexplicable ways that technology and government cannot improve upon. To begin thinking of what the word "enough" really means. In both contexts. Bringing awareness to the greater community begins to break the cycle. It all reminds me of something my Pastor father told me one time: "Some demons are killed immediately, others are starved to death." Change comes, only the velocity varies.<br /><br />I'll end my philosophical waxing here because I think it is a bit disrespectful for me to equate the plight of human suffering in Darfur/South Africa with proprietary protocol failures between Tivo and Dish Network.Zachary Fisherhttp://www.blogger.com/profile/11364709737097199211noreply@blogger.com0tag:blogger.com,1999:blog-329427068399110910.post-88036369084837862152009-02-02T12:39:00.001-06:002009-02-02T12:40:58.836-06:00Google attributes bug to human error...as opposed to what?http://www.eweek.com/c/a/Enterprise-Applications/Human-Error-Caused-Google-Glitch/Zachary Fisherhttp://www.blogger.com/profile/11364709737097199211noreply@blogger.com0tag:blogger.com,1999:blog-329427068399110910.post-69100747742137780782008-03-05T15:19:00.001-06:002009-04-20T17:09:56.920-06:00Spinning PlatesI sent this metaphor to a co-worker today. Thought it was worth sharing.<br /><br />"Around release time, I use the analogy of spinning plates. I like that analogy for several reasons.<br /><br /> 1 - the activity of spinning plates requires constant intervention<br /> 2 - adding a spinning plate is easy; maintaining it amongst all the others is difficult<br /> 3 - spinning plates have an implied order, but can fail out-of-order just as easily<br /> 4 - those involved in spinning plates cannot rest...EVER.<br /> 5 - you only notice spinning plates when they stop spinning (eg, they fall off and break )<br /> 6 - to be successful at plate spinning, you have to move MORE than the plates do<br /> 7 - once you start, it is not easy to stop spinning plates without breaking something<br /><br />To me, this perfectly describes the current process of delivering updates and releases; why success is so hard and failure is so easy."Zachary Fisherhttp://www.blogger.com/profile/11364709737097199211noreply@blogger.com0tag:blogger.com,1999:blog-329427068399110910.post-12363963545899153062007-12-17T18:12:00.002-06:002009-04-20T17:08:22.237-06:00The nurse who said, "You're going to die."<p><a href="http://www.testobsessed.com/2007/12/17/lewt-and-test-puzzles/">Elisabeth Hendrickson</a> posted about a topic of conversation at this year's LEWT. It dealt with an item I'm very tempted by: problem diagnosis and debugging by the tester. My comment was appropriately passionate but may have been too lengthy for a polite comment. I've taken it and placed it here with only minor modifications.<br /></p><p><br /></p><p style="font-style: italic;">One time, I went to the doctor. That is amazing in and of itself but is not the point of my comment. </p><br /><p style="font-style: italic;">I had gone to have a mole looked at. The nurse, who was busy running all the setup routines in anticipation of the doctor, quipped that it probably was cancerous. “Most people develop some kind of cellular anomaly in their lives”, she said with all the cold and callous concern a butcher might have for some hamburger meat.</p><br /><p style="font-style: italic;">Her “diagnosis” did not set well with me. Part of my proficiency for testing is my predilection for pessimism. It caused all sorts of undue stress and anxiety. My mind ruminated on all the tearful activities that awaited me; saying goodbye to friends and family, what music will they play at the service, etc. Mind you, the doctor hadn’t even SHOWN UP yet!!! When he did finally show up, he allayed my fears with a more educated diagnosis - “you’re just mole-y. Why are you crying?”</p><br /><p style="font-style: italic;">That nurse by virtue of her position/location brought to bear the air of authority. She certainly said all the educated words. But given the circumstances, all that my mind heard was, “you’re gonna die.” How was I to know?</p><br /><p style="font-style: italic;">I love to break things so I can see how they work. And when something breaks, I view it as an opportunity for me to observe the thing’s inner-workings. But I’ve been able to avoid freaking customers out by not doing such diagnosis in front of them. I save that conversation for the developers lest I come off as an authority. Or much worse - the nurse who said, “you’re gonna die”.</p>Zachary Fisherhttp://www.blogger.com/profile/11364709737097199211noreply@blogger.com0tag:blogger.com,1999:blog-329427068399110910.post-6161054602569231282007-11-26T00:35:00.000-06:002007-11-26T00:36:10.051-06:00Job Security<a href="http://resources.zdnet.co.uk/articles/0,1000001991,39290976,00.htm">Top 10 IT Disasters of All Time</a>Zachary Fisherhttp://www.blogger.com/profile/11364709737097199211noreply@blogger.com0tag:blogger.com,1999:blog-329427068399110910.post-452203836173116372007-11-24T00:53:00.000-06:002007-11-24T23:37:57.584-06:00I'm in ur base turning ur lights on....Just finished "<a href="http://www.amazon.com/Are-Your-Lights-Figure-Problem/dp/0932633161/ref=pd_bbs_sr_1?ie=UTF8&s=books&qid=1195887366&sr=8-1">Are Your Lights On?</a>" this weekend. I found an opportunity to try my solution-probleming when I read <a href="http://www.autoitscript.com/forum/index.php?showtopic=57906&view=findpost&p=437776">this forum post</a>.<br /><br />This individual was attempting to enforce a kind of subversive security to keep their younger sibling on the straight and narrow. As I thought more about the "problem" of solving problematic script logic, it dawned on me that there might be another problem behind it all; do we need to bring the computer in to solve a human problem?<br /><br />I had originally posted my non-technical questions in my reply, but felt that it might come off a little "preachy". But that won't stop me from placing them here:<br /><br /><span style="font-family: times new roman;">...I'd like to ask some questions about your situation ( seriously ):</span><br /><ol><li><span style="font-family: times new roman;">Is the problem your brother's insistence on playing games OR his insistence on not doing his homework?</span></li><li><span style="font-family: times new roman;">Why is your brother not compelled to do his homework? Is it boredom, frustration, or laziness? </span></li><li><span style="font-family: times new roman;">Is your brother really NOT doing his homework? For example, is he finishing it when your cousin's are playing or when you're not looking? Or is he being rewarded with play-time for having done his homework earlier?</span></li><li><span style="font-family: times new roman;">Is there a parental or guardian figure ( other than yourself ) who can enforce sanctions if necessary?</span><br /></li></ol><span style="font-family: times new roman;">I ask because these kind of solutions can become unwieldy. In circumstances where he is allowed to play, you'll have to disarm the script. If he's around when you do this, consider security breached. It also would be pretty unfair for him if you were away when he was allowed to play.</span><br /><br /><span style="font-family: times new roman;">One potential solution is to have your cousin's over more often. They'll definitely accept your invitation to play games and your brother will be "forced" to finish his homework before he can play. No passwords, no tattle-tale scripts.</span><br /><br /><span style="font-family: times new roman;">Sorry this was so long, but I did my share of homework negligence. If I had to monitor a younger sibling like myself, that's what I'd do.</span>Zachary Fisherhttp://www.blogger.com/profile/11364709737097199211noreply@blogger.com0tag:blogger.com,1999:blog-329427068399110910.post-77070378881730358722007-11-06T23:35:00.000-06:002007-11-07T08:57:27.124-06:00Stranger Than FictionIf one were to obtain the "Stranger Than Fiction" DVD and played the "Making of a G.U.I." special feature, that person would be treated to a very different/insightful/interesting take on the form and function of User Interfaces.Zachary Fisherhttp://www.blogger.com/profile/11364709737097199211noreply@blogger.com0