Go, Do, Be.


12/01/2008  — 

The End Is Near

One of my day-to-day responsibilities involves troubleshooting problems with banner ads. You might not realize what goes on when your browser loads a page full of ads; most of our brains have been trained to ignore these things. But wow, take a peek under the hood sometime. You'll find some of the hairiest stuff around.

A few folks know what to do: create clean, compatible, polite javascript that degrades nicely. Most create abominations that well... make me reach for my revolver... Today I found something spit out of the 'industry standard' adserver that I had to share with a dood I know. Chat transcript follows...

    ME: dood?

    DOOD: yo

    ME: I think I'm surrounded by the worst technology in the world

    ME: ever get that feeling?

    DOOD: yes

    ME: I get that when I come across this kind of thing:

    ME: document.write('<noscript><a href="http://ad.doubleclick.net/click%3Bh=v8/378a/3/0/%2a/d%3B209144603%3B0-0%3B1%3B23113405%3B3454-728/90%3B29241525/29259404/1%3B%3B%7Eokv%3D%3Bkw%3Dgamechannel%3Bgame%3Dgamechannel%3Bgenre%3Dstrategryrpg_game%3Btile%3D2%3Bdcopt%3Dist%3Bsz%3D728x90%3B%7Eaopt%3D2/1/7b/0%3B%7Esscs%3D%3fhttp://clk.atdmt.com/TGM/go/125488438/direct/01/" target="_blank"><img border="0" src="http://view.atdmt.com/TGM/view/125488438/direct/01/5298130" /></a></noscript></iframe>');

    DOOD: !

    ME: does that juse blow your mind

    ME: OR WHAT?

    DOOD: who wrote that? Someone on our team or a 3rd party?

    DOOD: I mean your team

    ME: some 3rd party

    DOOD: amazing

    DOOD: they don't get anything


    DOOD: wow

    ME: we're doomed

    ME: as a species

    DOOD: totally

    ME: just thought you'd like to know.

    ME: enjoy life. the end is near.

    DOOD: I just spent 2 months working with one of the the world's worst engineers. They canned his ass last week

    DOOD: this guy was an imbecile, yet he commanded a huge salary and concessions because we thought he was an 'expert'

    DOOD: I spent all of my time re-writing and debugging his crap code

    DOOD: some of the worst programming I've ever seen

    DOOD: and it made me doubt the future of mandkind, as we are all brothers.

    ME: I'm there.

    ME: document.write('<noscript...

    DOOD: that gives me an idea for a netscrap feature. Have a contest where people submit real source code that can never execute

    DOOD: this is a plum example

    DOOD: there are others

    ME: that's a good one.

    DOOD: but they have to be real, culled from real source.

I guess the reason this gets my goat is that I face this question every day: does it matter if software is 'done right'? Ultimately it seems that the true measure of 'rightness' is whether the business is succeeding, not the correctness of the minutiae. For a guy whose background is QA, this is a tough pill to swallow.

Anyway, Dood -- good thinking about the netscrap feature. So toss a few things onto the scrap heap (put in the Tech category) and I'll put them up.

PS- For those of you not in the know, one way javascript puts things on the page is through document.write. In this case, the code is using javascript to put a <noscript> tag -- which usually contains something for the browser to show if it doesn't support javascript. Use javascript to deliver the payload to use if you don't use javascript. Boom!

03/24/2008  — 

Simple Rss Widgets

I love to browse off-the-shelf tools and doodads floating around the net. Recently I was looking for a widget to publish our corporate news titles on the gofish.com homepage. Sure, I'd love have time to write this from scratch, I don't... but I have about enough time to try 5 and see what works the best.

Quick summary of the features I'd like to shoot for:

  • MUST: browser compatible
  • MUST: pull corp feed
  • MUST: be easy to implement
  • SHOULD: customize colors
  • SHOULD: customize dimensions
  • SHOULD: be quick to load (<3secs)
  • SHOULD: not give up too much info to a 3rd party
  • SHOULD: serve it in a 300x250 RECT size.(why not?)
    • 305x215 Whole corner
    • 305x40 The heading
    • 305x175 List area
  • NICE: pull & mix several feeds
  • NICE: sort multiple feeds
  • NICE: Re-syndicate the widget

Our Raw Feed
Looks like I can grab a feed of each category. This might make for some handy intermingling of headlines. The downside is that it looks like I'm pulling a whole-article feed. I'll see if I can get this to just pull the titles. I'll set up a feedburner feed at http://feeds.feedburner.com/GoFishCorp before using one of these doodads.


www.yourminis.com seems like a neat platform for building and syndicating a flash widget. They allegedly have some relationship with brightcove, I'll see if there's anything worth exploring there.

WidgetBox widget
This looks like a javascript/xhtml implementation. Kinda nice, but let me check it out in a pile of browsers first. Seems like the widgetbox is chock full of other presentations. Would be nice to find one that can handle a few feeds at once.

Some javascript doodad
It's a freebie, kinda simple: http://itde.vccs.edu/rss2js/build.php. Kinda simple, but it looks like I can style the output pretty easly.

Another javascript doodad

Nice javascript-only implementation, doesn't seem like it's working though.

Feed Sweep
Feedsweep is free for noncommercial use, handles a bunch of feeds at once, and is super-simple to put together. Creates a nice dhtml presentation of the title list. I think this

Another freebie, not sure I can get this into the dimensions of the content area on the homepage.

RSS to JavaScript

What do you like? The other folks on the team here seem to like the yourminis the best. I'll put a POC together soon.

02/05/2008  — 

29 Songs: Day 3: More To Come

So I flaked out a little tonight. I was under a schedule crunch today... so I dealt with it through some guitar crunch: partial rock, maybe I'll finish off Drums & Vox along with another song on another day. Here's something... zvex nano head in the house! Mo re to Come

A few other notes on the recent gems:

02/05/2008  — 

QA Interviewing: The Phone Screen

I have a bunch of notes from when I was putting together the hiring process at Kodak Gallery. I dusted these off recently to help a friend screen candidates for a QA position he's looking to fill.

I think back to our problem at kodak: we needed to hire super-geniuses to work on a completely custom-built system. This was before hibernate, before spring/pico, I think it was before the JSP 2.x spec even. We needed to hire people who could 'hit the ground running' and contribute without a hige ramp-up. We needed to perform a thorough search without booking the whole team for all-day interview sessions.

Part of our solution came with a formal phone screen. Once we started applying a standard approach to all candidates we were able to do (something approaching) an apples to apples comparison between the top candidates. We were also able to weed out some bozos who had 10+ years of experience but never encountered an application's error log.

General QA Questions
  • What's the difference between Blackbox and Whitebox testing? Can you give me examples of how you have done both?
  • Can you describe regression, performance, stress testing? Describe when you have conducted each type of testing?
  • When you report a defect, what information to you include?
  • Why choose to include this info? What's the benefit?
  • A new build is available to QA, what's the first thing you test?
  • Have you used automated build & deploy systems?
  • What is an equivalence class?

Through these questions you can get an idea about how seasoned a candidate is: have they encountered a metrics program? Have they worked on a performance testing project? Do they understand the challenges with managing software deployments in the testing cycle. The 'what's in a good bug' question can open up discussion in a number of areas: is the candidate aware of the connection between a feature, the server source, the browser's role... You can learn a lot from this one.

Teamwork Questions:
  • Can you give me examples of your experiences working on a team?
  • Can you give me examples of your experiences working individually?
Sure, this is another section I'll usually skip unless there's lots of time.

Technical Questions:
  • How do you find the timestamp of a file in Unix?
  • How do I read a log file as messages are being printed to it?
  • How do I determine the location of a file called test123.txt in a Unix file system?
  • What's the difference between CLASSPATH and PATH?
  • How could I transfer a file from my windows PC to a unix machine?
  • What is html or xhtml validation? What is the advantage of having pages that validate?
  • Name 4 http methods.
  • What's the difference between GET and POST?
  • If you don't know how to do one of the above tasks, how would you find out?
  • Have you ever used a proxy? Why would this be useful as a testing tool?

The goal here is twofold: first, to see whether the candidate can handle themselves in a 'go get it done' environment. Inevitably, there will come a time (daily in most of the places I've worked) when there's a bug and someone has to do the 'deep dive' to find out details about the problem (one bright QA guy coined the term 'qa forensics') by ssh-ing to the server, finding and watching all available logs while reproducing the problem. Can they search google to get themselves unstuck?

Second, if they mention LINUX or UNIX on their resume, they better damn well know that ls -l is how to get a timestamp of a file. It's worth having a few easy questions about topics that a QA engineer should encounter on a daily (hourly) basis.

The HTTP method question is something you can use to make sure the candidate fully answered the earlier section about performance testing.

SQL Questions There is a person table with columns, id, first_name, last_name, Birthdate
  • Give me the SQL statement to find all of the people named "Chris".
  • How do I find all of the people whose name is "Chris, Christian, Christina, etc"?
  • If you don't know how to do one of the above tasks, how would you find out?

There is another table Address with columns id, street, city, state, zip, person_id

  • How do I find all of the people whose name is Jane and live in San Francisco?
  • How many are there?
  • Walk me through JDBC
  • You have a Java application running against a RDBMS, what are some common optimizations done to enhance the performance of the application at the database level, java level, or interaction in between?
  • If you don't know the answer to one of these questions right now, how would you find out?

Yes these are pretty lightweight questions. Someone who aces this section should be pretty comfortable getting test results from a database. If you're lucky, you can also find someone willing to own the application of db changes to your test environment. The really good candidates will be able to give you a bunch of ways to complete the second tasks: joins, sub queries, etc.

Leadership Questions:
  • Have you lead a testing team? Offshore?
  • How do you motivate a team?
  • Will vs. skill?
  • What communication is important? How do you make this happen?
  • What do you do when the team comes from a letdown?

I would generally only ask these questions when dealing with a team lead candidate or someone going on the manager track.

It's worth noting that I'll usually tell a candidate the answer to a question if they get it wrong or can't answer. It's the interviewer's call about how to deal with this. It doesn't hurt to always sell your company, and a company that supports its team is a company where people want to work.

The interviewer has the option of scoring the candidate as a whole (1-move now, 2-interview after the other 1s, or 3-pass...) or by section. I'll let you come up with your own scoring system.

By the end of this line of questioning, the interviewer should have a pretty decent picture of your candidate, the accuracy of their resume, and most importantly whether it's worth calling them into the office for a face-to-face interview with your team -- which is usually a big investment!

I'll put together notes on the resume-sorting and interview processes for future posts.

02/04/2008  — 

29 Songs: Day 3: If Yes, Then No

Ok, so technically my 2/3 entry arrived on 2/4. But it's there. I was too beat to drop in the rippin' guitar solo in the 3rd verse so please imagine something good.

Website housekeeping note: I moved everyone's ftp directories from /29/you to /29/players/you. I'll delete the other directories soon. This will help with a page that will do automatic updation as the files come in.

Seth + Peter: I too am really digging listening to everyone's songs. I can't express how psyched I am that youses (an EXTREMELY talented bunch) are kookoo enough to try this with me.

This week will be tough! It'll be our first time balancing this with work. Anytime you sit down to write, try writing two. Have a few ideas in your back pocket for those time crunches. Also, no penalties awarded for digging up something a few years old too.

Speaking of a few years old -- when I told eve about this she was interested in helping. She asked me to transcribe a song she wrote which I'll try to put to music on 2/6:

http://29.netscra p.com/29/players/greacen/lyrics.txt

Finally, Michael Tornatore dropped off a drum kit today, a loaner for the month. I didn't have a chance to use it yet but I'll likely switch from recording exclusively on the laptop to start using my 'studio' (finally) which means some elec-trific-o-rock-i-fication in my (and therefore your) near future.

Good luck this week!

12/10/2007  — 

Zombie Technology