November 29, 2011

In my extended family, there’s been a longstanding tradition that we have an ornament exchange which takes place at Thanksgiving each year. Although the ornaments that come up in the exchange each year range from the mundane to the sublime, there are a lot of crafty people in the family, which means that store-bought ornaments tend to get a bit outclassed. Over the years, I’ve gone mostly with the store-bought stuff anyway, with a couple of ill-advised attempts at handmade ornaments thrown in for good measure as well. I actually kind of enjoy making ornaments myself, although to be honest, when I try to make stuff by hand, usually the results don’t quite add up to what I originally had in mind. To give you some idea of this, I tend to consider a craft project to be successful if nothing got set on fire or maimed during the process.

It is because of this tendency that last year, I decided to take a different approach to the problem. As outlined in the post that I wrote about last year’s ornaments, I found a place over on Capitol Hill in Seattle called Metrix Create:Space that has all sorts of cool toys like 3D printers and laser cutters. Although I’m pretty sure the 3D printers are a bit out of my league for the time being (at least until I manage to get some idea what the heck I’m doing when it comes to 3D modeling) I found that through a combination of open source tools and following instructions found in several FAQs posted on the Internet, creating a design that would work with the laser cutter proved to be a lot less daunting task than it might sound. The ornaments which resulted from this project turned out very nice, and were very well received. The only real problem I had with these ornaments was the fact that they ended up being far more expensive than I had originally planned on. In fact, I think I spent about twice as much on the project as I had originally budgeted, and given the costs of laser cutting, I had planned on quite a bit.

As a result of this, although the tools for this year’s ornaments were pretty much the same as last years, the approach taken to the project was quite different, as was the end result. After the jump, you’ll find a description of the process used to create my ornaments for this year’s family Thanksgiving ornament exchange.

Like this:

November 22, 2011

(TODO: Take a new Thanksgiving table picture so I don’t have to keep recycling old ones over and over again.)

Every year around this time Thanksgiving rolls around, and for some odd reason, every year around this time I always seem to mention something here about how Thanksgiving just seemingly snuck up on us out of nowhere. Naturally this is a rather absurd notion, as anyone who has been paying attention probably would have noticed Halloween popping up on the calendar a few weeks ago, and taken that as a clear sign of impending turkey. Nonetheless, it is with anticipation that we look at the arrival of Thanksgiving, as it provides one of the few chances we get each year to have the whole entire family together at once. And as it always does, Thanksgiving also provides an opportunity to look back and take stock of the past year to see where I have been, and what blessings I have received.

For those of you who may not have read one of these posts before, every year at our big family Thanksgiving get-together, we have a tradition where we all go around the table, and each person takes a little bit of time to speak of some of the things that they are thankful for. For those of you who are familiar with Agile development, the whole thing’s basically like a Scrum meeting, only with a lot more people, and last time I checked people usually don’t bring donuts to Thanksgiving. When I started writing this Blog over four years ago, I also started doing a “going around the table” Blog post around Thanksgiving time each year as well, with several other members of the family (depending on their varying degrees of motivation to actually maintain their Blogs) making their own posts as well. The previous Going Around the Table posts can be found here (2008), here (2009) and here (2010). So without further ado, here are some of the things that I am thankful for as we once again approach Thanksgiving.

For those of you who have been reading this Blog for a while, you are probably aware of some of the various interesting circumstances of the year that preceded Thanksgiving 2010, and the couple of months prior to Thanksgiving in particular. This year has, thankfully, been a lot less tumultuous for me, and has allowed me a chance to settle down a bit. In particular, I’ve finally had the opportunity to settle down into a good and reasonably stable job after years of working as a contractor that resulted in the need to frequently be searching for the next job at the end of each contract. Although this was far from being an ideal situation, I found that I would always be able to find the things that I needed at the times that I needed them, and it is through that period that I came to a firm belief that if I am doing the right things, one way or another things would work out (and quite often I’ve found things to happen in the “Or Another” category.) Granted, I don’t intend this to be a claim that I am doing the right things all the time (or even most of the time, for that matter) but through these years of wandering from contract to contract, I saw it happen enough times that I can’t believe it to be mere coincidence.

I wouldn’t exactly say that this past year was marked by any sort of profound change from previous years, but in many ways it’s provided a chance to settle down a bit. For the first time since I worked in my first Tech Support job out of high school (I don’t really like to talk about that one much to be honest) I’ve spent more than a year consecutively in the same job. Granted, even in that there’s been a bit of turmoil here and there, but all in all, I have to say that I’m grateful for where I am right now. The job I am in has given me an opportunity to grow in a number of the skills I need to achieve my long-term career goals, I have good managers who I get along with very well, and who trust in me enough to mostly just stay out of the way and let me do what needs to be done, my daily commute is a ten-minute walk to the office, I managed to finally get my car paid off a few months ago, and I have actual vacation time, something I’ve lacked for quite a while. Sure, it might be nice if my stock options weren’t so far underwater that I don’t think even Jacques Cousteau could find them at this point, but all in all, I’m pretty happy with where I am right now. I know I can’t expect this to last forever (and in fact, I know I’ll have to take some steps toward making some changes myself in the not-too-distant future as I come to realize that now is the time to seek out my eternal companion,) but I’m grateful to have a bit of stability for the time being.

I’m also grateful for the fact that I’ve had the opportunity to do some traveling this year, as I know that this is something that not a lot of people get to do. It’s always good to get the chance to expand one’s horizons, and even though I begin to worry that I might b getting myself a bit stuck in a rut with this whole cruise thing, I’m glad that I’ve had the opportunity to take several of them this year, and to bring my brother who I don’t see much of these days along with me for one of them. I’m also grateful that I got to take a trip to Disneyland back in September with several friends, which gives an entirely different perspective than I’d get from traveling alone. I know that for quite a while during my twenties, I had a tendency at times to be a bit of a loner. Sure, I’d get along with people just fine, I just didn’t place as much importance on the friendship of other people as I really should have (which probably has a lot more to do with how I ended up being still single at age 30 than I’d really like to admit.) It’s easy to let this become one of those things you don’t really think you need until you finally find friends like that and begin to realize what you’re missing.

All in all, I realize that I have a lot to be grateful for this year, even if I’m not always as good as I should be about expressing that gratitude. Now, for anyone else in the family who still happens to be blogging (I know of one or two, not so sure about the others), it’s your turn.

Like this:

November 12, 2011

As I write on this Blog on a (somewhat) regular basis, I have only one topic that I consider to be truly off-limits, and that is politics. It’s not that I couldn’t write about politics if I wanted to (to the contrary, I could probably write way too much about politics,) but I make a conscious effort to avoid it as much as possible, mostly because there’s way too much of the stuff going around these days. Besides, I’m pretty sure that if I started writing about what I really think about some of the politicians we’ve got these days, 65% of my audience (Editor’s note: Completely made-up statistic) would think I’m a lunatic and go find a different Blog to read. But ultimately, that’s all beside the point.

Another thing I don’t write about here very much is what I do for a living. Sure, I may throw something about things I’ve been working on (dubious though they may be) into the occasional post here and there, but by and large I’ve avoided writing much about my job. This isn’t for any particular reason; it just doesn’t normally occur to me to blog about my job very often. I’ve actually been giving some thought to changing that and putting together a series of posts that explains some of the basics of how software gets tested, but I haven’t quite gotten around to starting that one yet. I’m sure I’ll be getting to that one at some point (noting, with some chagrin, the number of things that I was supposed to be “getting around to” on this Blog years ago that haven’t been touched yet) but I thought for the time being, I’d write a little bit about a situation that I encountered at work today that might be instructive to consider.

As you might know, in my employment I work as a Software Quality Assurance Engineer, which basically means that it’s my job to test things. Currently, I am working with a team that is developing a new version of our company’s advertising platform, which is designed primarily to facilitate ad services for mobile applications and websites that require them. In particular, I have spent the past several weeks doing tests on a new component of the product which generates reports that are used to supply statistical data to some of the various users within the system. Although this process has included some time spent testing the user interface along the way, mostly I have been directly testing the underlying webservice that takes requests and returns the raw data. This particular webservice uses REST (Technobabble warning on that link) which basically means that I put in a really long URL with all the parameters of the report I want back, and assuming I did everything right when generating the request and the server is reasonably happy at the time, I’ll get a (potentially very lengthy) page of raw XML with all the requested data in it. From that point, one of a number of different web interfaces takes the raw data and parses it into a (comparatively) much more user-friendly report.

Although it seems like a bit of a contradiction to say it, in a way I find it a lot easier to test things at this low level than it would be to test the same thing through a more proper user interface, mostly because things tend to be a lot more predictable at this level than they would be if you’re looking at the same data through some sort of front end. In short, there’s a lot less things that can create problems for you, so if you’re seeing something that doesn’t look right, it generally isn’t necessary to look too far in order to find the problem and fix it. To make a long story short, over the past few weeks I’ve familiarized myself with this report webservice, created and executed a test plan and a bunch of test cases for it, and I’d say that I’ve been through the whole thing pretty thoroughly by now, and I have a pretty good idea of what is and isn’t working, and what needs to be done to fix whatever isn’t working. Ultimately, a QA tester’s goal for any particular piece of software is to be able to develop this overall picture of the quality of the system being tested, which can then be used to make an informed judgment call on whether or not the system in question is suitable for the task at hand (note that it isn’t the job of a QA tester to ensure that the system is perfect, but that’s a topic for another post.)

So after all this planning and testing, I’m reasonably confident that I have a good handle on the reporting webservice that I’m working on, and where we stand with it. There’s just one little problem here: Last week, my test lead informed me and a couple other testers who have been working on this project that we would be making a presentation to the rest of the QA organization which I am a part of to give them a better idea of what we’re working on, and it will be my responsibility to discuss the stuff I’ve been working on, and what it’s used for. I had put this on the back burner for a while until the subject came back up today, with further clarification on what I would need to be able to discuss. It was at this point that I came to the sudden realization that even though I’ve been testing this webservice for weeks and I’ve familiarized myself to a significant degree with how it functions, I had hardly any idea of what any of the stuff I was working on was actually supposed to be used for. In all the time that I have spent doing functional testing on this particular webservice, somehow I had managed to go the entire time without giving more than a passing thought to its overall purpose.

Fortunately, in this case it wasn’t too difficult to go back and do some reading to fill in some of the gaps with the information I will need for the presentation, but as I think about this more, I begin to realize that it’s an easy trap to fall into. When you’re an engineer, whether you’re designing refrigerators, cars, rockets or software, one of the fundamental principles that you will use to design things is that the things you design must behave in predictable ways. By the same token, when you’re a software tester you need that predictability in order to be able to determine what kind of output you are supposed to get out of a system when you put a particular type of input into it. The trouble with this approach is that, as noted above, it can become very easy to develop a very narrow focus on one thing, and manage to completely miss the big picture in the process. This isn’t always necessarily a bad thing, as sometimes you need to employ a strategy like this to be able to solve a problem without getting too distracted by the other things surrounding it, but there are definitely drawbacks to the approach.

By their very nature, computers can only do exactly what you (or some programmer) tells them to do, and they can only repeat those instructions verbatim, for better or for worse. This degree of predictability is vital for both programmers and testers to do their jobs. One of the things you learn quickly when you start testing software is that when you create a bug and submit it to a developer, that developer won’t be able to do much with the bug unless the issue being described is usomething that can be reproduced on a consistent basis. You have to rely on this predictability in order to be able to determine whether or not a system is working in the manner it is intended. But at the same time, as a tester you also need to be able to think like someone who will actually be using the software that you’re testing. And it can be surprisingly easy at times to lose sight of that fact, and end up in a situation much like the one I encountered above. Fortunately in this case it ended up not being that big of an issue, but it is something that as a software tester you do need to watch out for.

As I have noted above, eventually I plan to start making a series of posts that try to explain in layman’s terms how software gets tested. I imagine for most people reading this Blog it’s one of those things you never really cared much about, but hopefully I might be able to get someone to learn a few things in the process.

Like this:

November 3, 2011

Well, October has come and gone, and in spite of the usual Halloween festivities, it certainly didn’t make a whole lot of noise on the way out. If you think about it, aside from the whole Halloween thing (which I’ve never been big on, although I did manage ro rig up a field-expedient chef costume out of the chef’s jacket I got on the cruise earlier this year) and the baseball postseason, there really isn’t a whole lot of substance to October, mostly it just ends up feeling like a bunch of generic Autumn. Then again, after a somewhat hectic September that I spent much of traveling, and with the Holidays starting to show up on the horizon, a quiet month every so often isn’t necessarily a bad thing.

Of course, with October gone, next comes November, which is one of those months I’ve never quite figured out for one reason or another. On one hand, it’s got Thanksgiving, which is always one of my favorite times of the year. On the other hand, it always seems to bring crummy weather and plenty of rain along with it, and usually we get at least one or two big windstorms in November (although surprisingly, most of the ones that have been big enough to warrant names have actually avoided November for some reason.) Over the years I’ve mostly just dealt with whatever weather happens to show up as it came, but over the last year I’ve been walking to work daily (next week will be the 1-year anniversary date of when I was hired at Motricity, which will actually be the first time in well over a decade that I’ve worked in one place for more than 1 year consecutively,) and when you do that, you have a tendency to notice the weather a lot more than you might otherwise, especially when it’s blowing cold rain in your face. Mostly I just have to remind myself that even in the rain it still beats having to slog through rush-hour traffic twice a day, and that (aside from the somewhat ridiculous cost of parking my car in the garage underneath my apartment building) I’m not paying anything to commute to work. And if the whole thing gets too terrible I can always just work from home, right? The only problem with that excuse is that it tends not to sound particularly convincing when I live all of three blocks from the office.

Then again, the weather isn’t the only factor I’ve got to deal with at this time of year. This weekend, Daylight Savings Time will end by adding an hour back to the clock. For most people, the end of Daylight Savings Time is welcomed for the extra hour of sleep (and/or extra hour of staying up way too late playing video games,) but to be honest, I’ve never been a big fan of it myself, mostly because it means that I’m going to be spending the next four months walking home from work in the dark. This in and of itself doesn’t really cause any sort of unusual difficulty (the sidewalks between the office and my apartment are pretty well-lit,) but the early sunsets and walks home in the dark do serve as one of those little things that reminds you that you’re currently residing in the dead of Winter, and there’s not much you can do about it besides ride it out. Or flee to somewhere sunny and tropical, but that rarely seems to be an option these days.

And yet, somehow we all manage to survive four (or five, give or take a month or so) months of this crud, and eventually Spring comes back around, at which point we all conveniently forget about the whole thing for another six or seven months until it all happens again. Just like we’ve all been doing for years now. And most of us (well, those of us who haven’t got the means to go retire on some sunny Caribbean island just yet) will be going through this one for a while. But it’s not really all that bad if you think about it. After all, as the old saying says, when life hands you lemons, build a snow fort and throw ’em at unsuspecting pedestrians, right?

Wait, you mean it doesn’t say that? Dang, there goes my plans for next month.