Still Life

A Series of Mental Snapshots

An upgrade to the mechanical pencil

Posted by Steve on October 29, 2008

As a foreword, I am aware that this is one of those ‘out there’ ideas that may never be feasible, but despite that I feel it is a good idea!

The idea came when I was studying for my image processing midterm. I was making notes with my trusty mechanical pencil when I realized that every 3-4 words the lead in the pencil would become dull, I am using 0.5mm lead, in case it matters. When the lead becomes dull my writing becomes very unclear, so I would spin the pencil around about 180 degrees to where the lead was now sharp, and then another 3-4 words I would again spin the pencil to get to the sharp part of the lead. After doing this for a while, I thought to myself, why should I have to spin this pencil 20 times a minute! This is when the idea struck.

I propose that new mechanical pencil designs have a system that results in the lead rotating on its own so that the lead is always sharp. There are a few implementations here, the pencil could have a mechanism where the lead is always turning slightly, the actual amount would have to be ascertained through some calculation in how quickly lead dulls. Another implementation would be for the lead to ‘know’ when to rotate; if the pencil was smart enough it could know how long a person had been writing and the pressure with which they were writing. With this information it would be possible to know when the lead would become dull, therefore at the point of dullness the lead would automatically rotate. A final implementation idea, and probably the most feasible, is to place another button on the side of the pencil that would rotate the lead 180 degrees for you.

The drawback is obviously that it would cost more money to implement this kind of system, and mechanical pencils are meant to be inexpensive. That being said, if there were an automated lead rotating mechanical pencil that did happen to be more expensive, I would definitely be the first to rush out and get one!

–Steve

Advertisements

Posted in design | Tagged: , , , , , , , , | 4 Comments »

4th Year Project: Scraping Pages!

Posted by Steve on October 27, 2008

The first step to my project was to get the main information that I was going to display on my web page. As mentioned in the previous post, the two pages I want information from are the schedule of classes and the undergraduate calendar. I used Ruby to accomplish this, if you want more info on scraping with Ruby drop me a comment.

The information I needed to pull from the schedule of classes was the basics for each class including the department, the class name and number, the enrollment cap and total, what day/time it was schedule for and the instructor.  A quick inspection of the page demonstrated that it was very poorly design, no information had tagged IDs or anything useful in that way. After a little digging and with the help of this command:

ie.show_tables

I was able to ascertain that the schedule of classes page had 2 tables, with the second table containing ALL of the desired information on the page; now if this isn’t bad web design I don’t know what is!

Alright I was getting somewhere, the information is in a table, now it was just a matter of finding the right logic to catch the information I wanted. Again after a little investigation I found that the department name would appear in the first column of a given row, and after I caught the department name there was a concrete pattern to where the rest of the information I wanted was placed. The logic I ended up using (and excuse the lack of indenting, wordpress is being a pain) was:


size.times do

if(classArray[count][0] == dept)

Write desired information to an excel form (for the time being)

end

count = count+1 #Increase count so that it checks the next row

end

So this basically iterates through each department page and pulls down all of the information I need! I apply very similar logic to pull down all of the information from the Undergraduate calendar. As things stand I have all of the current information available to students in an excel sheet, this is only temporary, I will shortly be putting it in to a MySQL database so that I could start putting it with the Django framework!

As far as next steps, well that would be to start learning Python/Django and getting a development environment up to play with, should be fun!

–Steve

Posted in Fourth Year Project | Tagged: , , , , , , , , , , , | Leave a Comment »

Fourth Year Systems Design Engineering Project: My uwaterloo classes

Posted by Steve on October 26, 2008

A little background is in order for those unfamiliar with engineering at waterloo. First off is to explain this whole fourth year project business. In not too much detail, the project is done in the fourth (and final year) of engineering at Waterloo and is something that is done by all all engineering departments. The project spans the last two school terms (8 months) and the only requirement is that it has an acceptable amount of engineering content.  Now as a student in Systems design (SYDE for short) I have already done two projects similar to this, the only real difference is that they only lasted 4 months instead of 8. The project is usually done in groups of at most 2-3 but I am going at my project alone.

The main problem that I have chosen to tackle revolves around the information that is available to students when they are attempting to find information on different classes that they could potentially take at UW. I have come up with a problem statement, which is part of my Design Plan , it is as follows:

Students at the University of Waterloo are subject to an undergraduate class system that is less
than ideal; information is disjoint, there are no reviews for classes, there is no search feature,
rendering it difficult to plan out a university career. A successful solution will allow a user to
easily and quickly ascertain the quality of a class and enable them to plan their university careers
such that a university student requires reduced effort in choosing courses.

I have told quite a few people about my project, and the first response from those outside of Waterloo is surprise at how inadequate the current system is. I personally have had tons of trouble with finding classes that I want to take. The only hard information that is offered is the schedule of classes that tells you when classes are and the undergraduate calendar which provides you with an at most 4 line description of a course. In my experience a four line, antiquated description of a course is not nearly sufficient when I am selecting a class that I am paying close to $1000 to take. This is jus the tip of the ice berg to the problems that are with the current system, for more details read over my design plan, or leave me a comment and I will be more than happy to elaborate.

The solution that I am planning to implement is another web based application, but one that addresses the major difficiencies that I see. My web application will allow users to: rate classes, upload course informaion, view the schedule along with the description in a single location, plan out their whole university career and search the database of classes. These are the main areas that I am focusing on for now, if I finish faster than I anticipate, then I will be tackling a few other issues that I have identified!

The plan is to create the web application using the Django framework, so it will mainly be python based. For scripting needs I will most likely be using Ruby because that is where I have the most experience. For database needs I anticipate using MySQL. I have actually already scraped all of the information that I require from the current uwaterloo pages and placed into an excel table, just until I get the MySQL database setup.

I will be making posts here and there about the project, the first most likely being on the scraping script as I feel some of the things I learned from it might be useful to others!  If you want more info check out my Design Plan.

–Steve

Posted in Fourth Year Project | Tagged: , , , , , , , , , , , , | Leave a Comment »

Book Review and Thoughts: “Don’t Make Me Think!” by Steve Krug

Posted by Steve on October 13, 2008

Don’t Make me Think is a book on web usability; it is mainly about how to improve the design of web sites and web applications so that they are more usable. This is one book that practices what it preeches in the respect that it is very readable and very nicely presented rendering it what I would classify a nice read. That being said, I do agree with some other reviews of the book, the content does tend to be a bit ‘fluffy’ (for lack of a better term). A lot of the information presented is more common sense than anything else. Now with that being said, there is no harm in hearing some good common sense, and it is always good to here from another source.

There were a few parts in particular that I thought were very important, the thing that I saw as being the most important was the section on testing (surprise, surprise). It happens to be one of the last chapters of the book, but I would say by far the most important.

It discusses the simplicity in how web usability testing can be done, for example, the importance of NOT figuring out your target user (at least in too much detail. Instead it is suggested to go out and offer a small stipend to someone (anyone!) to come in to do an hour or so of usability testing. I think this is excellent advice, it takes a lot of the overhead away from the testing and realistically being able to pin down and then find your target user is not the easiest of tasks.

Another point on usability testing that is extremely important is to do it EARLY. I know first hand how difficult it is to have people test things early, your projects, sometimes you think things just are not ready. But the reality is that if you have some usability testing done early, it can provide a lot value, as at the time the changes suggested will be much easier to fix than later on in the designs life. Therefore do smaller amounts of usability testing earlier, than large scale later!

Overall it was a good read and confirms some of those ‘common sense’ kind of feelings that you may have towards web design. If you have anything to do with any web page or application I would suggest giving it a read.

–Steve

Posted in Product Review, Testing | Tagged: , , , , , , , , , | 3 Comments »

The use of videos in bug reports

Posted by Steve on October 7, 2008

I recently came across a topic at the software testing club website that was discussing the use of videos in bug reports. After reading through the comments, it was clear there were a few main concerns:

1. file size
2. Serial viewing order – harder to skip and get to the point.
3. No search options.
4. Requires detailed attention in whole viewing process.

Firstly I want to address what the main ‘limitations’ are and then I will go into the benefits I see.
1. File Size.
If you get a decent tool, you don’t have to worry about this. You can export your videos in flash (if high res isn’t necessary) making them ~100KB. Now a days at a normal big box store you can get a 500GB hard drive for under 100$, so you are looking at about 5 million videos for 100$ (or 500 000 videos at 1 MB each). To me that isn’t really what I’d consider a limiting factor. Note, this does not really address any issues that may happen in a bug tracking database, as it really does depend on how the database is set up.

2. Serial Viewing order – harder to skip and get to the point.
The way that I use videos (described below) this is not an issue. A test video used properly should not be long enough for this to be a problem.

3.No search options
Again if you have a short video, and you use the video accompanying another bug report, you will not have any problems.

4. Requires detailed attention
Again if you are using videos correctly this should not be an issue.

So how should videos be used in reference to bug reports…?

Firstly in my opinion a bug report will never be replaced by a video (well unless it is mashup of video with text) because there are things that you can easily and quickly describe in text. Videos are only helpful for certain things, a few of them are as follows:

  • Remembering your course of actions when you hit a bug. I am sure it has happened to everyone once where they notice a bug but they have no idea how they got there.
  • Helping to illustrate time sensitive bugs; for example you find something where, in a web form, you press save back save quickly and it causes a problem.
  • When a developer may not believe you. Often I have filed bugs that developers do not believe happen (sometimes because it is intermittent behaviour), a video is proof, words are just that… words.
  • When someone else on the test team has to explain a bug you filed. Wording can be tricky and filing a bug report is somewhat of an art. At times it is difficult to understand what the person that filed the bug meant, but if you have a video you can often figure it out.

There are other uses for videos, those are just the ones that jumped to the fore front.

What has to be remembered is that, like anything else, it is all fluid! Sometimes videos are appropriate, sometimes not, it is always a judgement call; you have to think to yourself will a video add value. If you are unsure maybe ask the developers or your team lead what will be most helpful to them! I think video is extremely useful with certain cases, so try not to disregard it too quickly.

–Steve

Posted in Testing | Tagged: , , , , , | 4 Comments »

IE Automation with Ruby: Catching pop-up Windows

Posted by Steve on September 29, 2008

Firstly I need to define what I mean my pop-up Windows. The pop-up windows that cause trouble are not internet explorer based windows, they are actually ‘Windows’ windows, (sorry if thats confusing). The ones that I am referring to are the ones that come up when, for example, you click on a download link. These are inherently a pain because of the fact that they are not IE windows. Luckily there is a pretty simple work around that i have come up with.

Ruby has access to the WIN32OLE library , which is basically like an API for windows applications. What you can do is use this library  to catch these pop up windows. Below is the code that you’ll need to run in a Ruby script:

require ‘win32ole’                                #Loads the win32ole library
wsh = WIN32OLE.new(Wscript.Shell) #For more info click here
wsh.AppActivate(‘Connect’)                #Focuses on a given application based on its Title

At this point you can manipulate the window, for example, with a SendKeys command:

wsh.SendKeys(“%{F4}”) #This would close the program with Alt-F4

This clearly has it’s limitations because during this time you cannot be doing things on your computer, because the AppActivate would fail. I am still looking for a lower level at which I can address this problem.

Now everyone likes to see code at work, so I have written a quick script that goes to the Notepad++ downloads page, clicks the download link, and then closes the pop-up download window. As a quick side note, if you do not already use notepad++ I highly recommend it!

require ‘win32ole’
require ‘watir’

wsh = WIN32OLE.new(‘Wscript.Shell’)

ie= Watir::IE.new
ie.goto(“http://notepad-plus.sourceforge.net/uk/site.htm”)
ie.frame(:name, “index”).link(:text, “Download”).click #Good example of how to execute a link in a Frame
ie.frame(:name, “index”).link(:text, “Download Notepad++ executable files”).click

sleep 20 #need to wait for source forge to load it is slow
ie1 = Watir::IE.attach(:title, /Source/)
ie1.link(:id, “showfiles_download_file_pkg0_1rel0_2”).click

wsh.AppActivate(“File Download – Security Warning”) #Focuses on the pop up window
wsh.SendKeys(“%{F4}”) #Sends the alt-F4 command to the window to close it

Watir::IE.close_all #Closes all open IE windows

So if you are interested try the script out, I did try it out myself to make sure it worked, but let me know if you have any difficulties!

–Steve

Posted in IE Automation/Watir/Ruby, Testing | Tagged: , , , , , , , , , , , | 3 Comments »

Lessons Learned in Leadership – You shouldn’t treat everyone the same

Posted by Steve on September 16, 2008

So I am on a ‘write about my leadership experiences’ kick lately! I have had these thougths/ideas floating around in my head for a while and its definitely due time for them to get written down.

This edition is based on the observation that you cannot treat every person you manage the same. For some reason I feel this to be counter intuitive, I think to myself that you would want to treat everyone the same, it is fair that way… right? Not so much.

The ‘issue’ is that everyone: works differently, has different goals, is motivated in different ways essentially everyone needs something else from a manager. I found that when I was first in the leadership role, I tended to treat my team as I would want to be treated by a leader, basically I would give general instructions, lay out my expectations, and then leave them to my own devices (it should be clear that I am not a proponent of micromanaging!). Now this leadership approach would work well with me, that does not mean it would work well with everyone, and I learned this through experience. One of my team members needed (and not necessarily in a bad way) a little more guidance and a little bit more micromanaging, so I had to modify my leadership style to accomodate for that. It was a very interesting revelation for me.

The main point of this post is to illustrate that everyone is different (this is extremely important to not only realize but really understand), and if you look at it that way, its not surprising that everyone needs something different from a leader. So here’s the question… are you a uniform leader or do you modify your style to better suit your various team members?

–Steve

Posted in leadership, People Problems, Work: General | Tagged: , , , , , , , , , | 2 Comments »

Lessons Learned in Leadership – A leaders vocabulary and opinions matter!

Posted by Steve on September 16, 2008

In my last position I was the team lead for a release cycle of a product at PlateSpin, Forge (a web based disaster recovery application). The experience was very interesting, challenging and often entertaining, in short it was an incredible experience. I learned quite a bit form it, and from the conversations I had about the postion with my mananger Adam White. What follows are just a few of the things that I have learned

Be Careful of Your Vocabulary
This comes from a conversation I had with Adam. Many times in meetings with my team members (who I was managing) I would say that we ‘should’ do something, for example I said that we ‘should’ do 3 sessions per day (session based testing is a method of testing, one which I am definitely a supporter of, for more info, look at anything James Bach has written). The issue here is my choice of words, I said ‘should’. This comes from my past experiences of interacting mainly with peers. In the peer situation, I would use the word should because we were equals and everything was up for discussion. When you are in a leadership position you must be authoritative in situations where you want things to happen. Continuing with my above example, instead of using the word ‘should’ I began to use the words ‘we will be…’ ‘we have to’, ‘we must’ and so on. Previously I never realized how important the vocabularly I used was

Be Careful of Your Opinions
How many times have you heard the phrase “I know it sucks to have to this, but we have to ok.”? I am guessing its at least once, and even if it is only once, it is too many times! Your attitude towards the things that you HAVE to do (even if you do not like doing them) is incredibly important. If you are negative towards these tasks, your team will pick up on that and they will therefore (in general) also have a negative opinion on these tasks therefore if you want people to do the things that are, at times, annoying to do, you have to have a positive opinion on them, at least on the outside!
So those are just two of the lessons I learned in leadership, there were obviously many more, and some of them I’ll be sharing!

–Steve

Posted in leadership, People Problems, Work: General | Tagged: , , , , , | Leave a Comment »

Why do doors with handles push in!?

Posted by Steve on September 14, 2008

Or more elegantly put, what a door with two handle affords (An affordance is a quality of an object, or an environment, that allows an individual to perform an action – Wikipedia).

This has to do with an annoyance I have had for quite a while and that is, why are there doors with handles on both sides? Think to yourself, how many doors have push/pull signs? In my opinion much too many considering if a simple design change was implemented they could be done away with and there would never be any question which way a door goes

Currently those doors that have handles on either side afford for a user to either push or pull. If all doors were designed such that one side had a handle on one side did not, it would be very simple because it would be known that the handle is the pull side, and the other is the push side!

Because of this poor design I have actually created my own heuristics to avoid embarrassingly walking into a door (and yes I definitely have walked into one of these doors). If I am uncertain whether it is push or pull, I’ll put my hand on the handle and push in slightly (it is only noticeable if you know what I am doing) and if the door does not budge, I proceed to pull it. I personally think it is a little ridiculous that I have had to come up with a best practice to open a door!

This may be a rather trivial example, but these type of affordance problems can be seen anywhere, whether physical or in software/the web. A (contrived) web example could be a text box that you cannot type in that has a white background. A white background usually indicates that the text box can be typed in, and if the user attempts to type in it and they cannot they will be surprised. Despite the contrived nature of the above the example, it was meant to get you thinking about the software that you use and design affords. It is important in design to always be aware of what a given design affords, if there is any question about what it affords, I can guarantee you that someone is having trouble using it.

So go ahead look around at any physical or software design and think about what it affords, you may be surprised at what you discover.

–Steve

Posted in Uncategorized | Tagged: , , , , , | 4 Comments »

Anatomy of a Bug Report — Presented via a MSOffice ‘Bug in the Wild’

Posted by Steve on September 13, 2008

The importance of a bug report is definitely understated; it is the difference between something getting fixed, and something getting filed away. I am going to present my version of a ‘good’ bug report through reporting a bug I found while I was MS Office 2007. First though I am going to outline the sections:

Title
The title is actually the most important part of the bug report, it is essential that it is possible to know what the whole problem is simply based on the title. If you cannot express what the bug is completely in the title, you have to think more about before reporting it.

Preconditions
Pretty straight forward, put what needs to be setup before the bug occurs, it can also include what machine configuration you used (if its meaningful)

Steps To Reproduce
Another straight forward area of the bug report. what you want to aim for here is that someone who knows nothing about the bug and possibly very little about the product can reproduce it. There preferrably should be no questions about how to hit the problem again (I do realize this is problematic with the bugs that appear to happen ‘randomly’)

Bug Details
The important things to include here are what the problem is (as you see it) and what you think should be happening. If you do not but a suggestion or desired outcome, the bug is not nearly as useful.

Frequency
This is a field that does not always apply, it generally is important with bugs that have to do with scalability and ones that seem to happen intermittently.

The Bug Report:

Title: Having the ‘Create Source’ window open results in any other open window becoming unusable

Preconditions:

  • Two instances of MS Office Open

Steps to Reproduce

  • In the first MS office window click the references tab
  • In the toolbar click ‘Insert Citation’
  • In the drop down list click ‘New Source’, the create source window will open
  • Click the mouse onto the second Office window

Bug Details

  • At this point nothing can be done in the second open window, you cannot click, or manipulate the window in any way.
  • Desired Outcome: The second MS Office window should not be affected by the Create Source window in any fashion
  • Note: A further issue is that a new Office window does cannot be opened (for example from the start window)

Frequency

  • Anytime the Create Source window is open

So there you have the bug report, if I had access to the proper software I would also have made and attached a video of the problem, video is a great bug reporting tool, one that I suggest is BB TestAssistant .

Let me know what you thought of my bug report! Does it match how you file bugs?

–Steve

Posted in Bugs in the wild, Testing | Tagged: , , , , , , , | Leave a Comment »