Archive for the 'General' Category

Blockbuster, Tivo, and Greasemonkey

Friday, March 2nd, 2007

Someone asked for a Blockbuster version of the Netflix Greasemonkey script I wrote. I signed up for the free two week trial and got it working, I think. It's not very different from the original Netflix version, just some stripping of extra characters like "|WS|" or "|Unrated|" that Blockbuster adds to the title. Feel free to download it from here.

gm_blockbuster_tivo

Update: BlockBuster made some minor changes that broke that version of the script. I've made some minor changes to fix things. I updated the link in the post to point to the new one. If you can't be bothered to find that link, you can get it here.

Update: I updated URLs to which the script applies and added quotes around the search title to get more exact matches. As always, you can get it here.

Netflix, Tivo, and Greasemonkey

Monday, February 26th, 2007

I wasn't very satisfied with my last attempt at merging Netflix and Tivo. I'm sure it can be done using just Pipes eventually but I think it'll take a while for Pipes to mature enough.

Barring that, I got curious this weekend and decided to see if I could do the same kind of thing directly on the Netflix queue page via a Greasemonkey script. So I wrote a quick little script over the weekend:

gm_netflix_tivo

The quick overview is that the script takes each movie title in your queue and searches for the text on TiVo's site. If it finds a match it puts a link after the movie to TiVo's search page. I used a link so you can open the matches in other tabs. This is especially handy since it takes a while to search TiVo for all the movies in your queue. I also tried to make the link stand out a little so it would be easy to spot while scrolling through the page. Besides being a slow loader, the other downside is that any match will cause the link to appear. This is a little bit annoying but seems bearable. In theory you would then schedule the recording online via TiVo's site.

If you're interested, go install Greasemonkey followed by this script. Feel free to modify the hell out of it if you like. I realize it's still not a perfect solution, but seems a bit useful for now. Also, please excuse the crudity of the code. Like I said, it was a quickie and Javascript is not my forte.

Update: Here's a Blockbuster version.

Update: I added the quotes to the embedded search. I no longer have a Netflix account, so it's not the easiest thing for me to test out. Let me know if there are any problems. The script is now hosted at userscripts.org.

Selling Virtual Assets

Sunday, February 4th, 2007

Ebay has decided that allowing the sale of virtual assets on their site brings up too many "complex legal issues." As such, they're delisting any auctions that include virtual items. This includes even auctions that include physical items that accompany the virtual item. This seems like a great opportunity for Yahoo! Auctions to gain some market share for their (currently) free auction site and maybe eventually find a way to successfully monetize their failed U.S. venture (they've had greater success in other parts of the world).

They should get the word out that they still exist, that they're free, and that they don't prohibit the sale of virtual assets. People I know through the wife that have made very nice sums of money from selling VMK items on Ebay were completely unaware that Yahoo! Auctions still existed at all. The free price tag means that sellers won't be penalized by the auction site's severe lack of market share. If Yahoo! ever hopes to make money off the site (or to just be a respectable presence in this area) and if the figure that $100 million in virtual game parts will be sold annually is even close to accurate, it seems like a no-brainer to try and capture this market which has been rejected by Ebay. It's one of the few chinks in Ebay's armor…

eBay Documentary

Tuesday, January 16th, 2007

I've been trying to be a bit more focused with my television viewing. I recently started going through the Tivo guide and searching for documentaries every two weeks or so. You find some pretty interesting stuff buried in the wee hours or on channels that I don't regularly watch. One very nice documentary on eBay (The eBay Effect) will be showing again on CNBC a couple of times on 1/21/07. I highly recommend it.

Installer Training

Saturday, July 22nd, 2006

Train the New Guy

At the new job we have an integrated hardware and software solution for access control (badge access on doors, elevators, etc). We offer a four day class that covers, among other things, how to install the hardware and setup and use the software. This class is directed at the builders / installers, not the end user of the software (though the installer does everything an end user would do and more). We also send our internal people to the class so they can become familiar with the product in a shorter period of time.

Though I dreaded it going in, I attended the course a week or two ago. I must say it was an amazingly valuable experience. One of the problems I have with virtually every company I've ever worked for is that getting up to speed on the ins and outs of the product proves extremely difficult. The developer training is always extremely informal. It meanders and leaves out a lot of things. As a new employee you feel like you're playing catch up for far too long.

Although this training didn't teach me anything about how our software is written, it gave me a customer level familiarity with the hardware and the software. I feel like I understand the product and can start being useful much more quickly than I would have otherwise. I immediately saw opportunities for feature and usability improvements because I was using the product in an environment that closely simulated how the installer and end users would use it.

You Should Offer Some Training, Too

If you have any kind of training available for your product for certification, sales people, end users, support people, etc then you really need to send your employees (especially developers, QA, and support) to these classes. Assuming they will just "pick things up" is robbing them and you of the quality and speed of the contributions they could be making. Not every company has a product that requires such a training program to be offered. For those, I'd seriously recommend carving out some time for coming up with some sort of formal internal training for people. It doesn't have to be overly polished or professional, but having a formal curriculum available to internal employees will prove amazingly useful.

If this seems like a no-brainer, consider that I've never worked for another company that managed to do it and that lack of training was one of the major complaints I had about my last job. I was told flat out that they'd rather hire a domain expert and train them to program than the other way around. I digress.

Pretending I'm a Customer

As I mentioned, we have a hardware component to our product. In one of our front offices we have a training lab set up with multiple hardware stations, which you can see here:

Training Station Installer Training

At the end of the class we used all of the stations (including an elevator controller not shown here) to simulate a seven story building with multiple tenants and access restrictions, including NVR security camera stuff and building automation integration (woot!). It's exactly the kind of thing a customer would do with the product and now I've done it too. Without this training class I think I would always have a partial view of the product at best. Fantastic stuff. Very exciting.

Amazing Brand Success

Sunday, July 9th, 2006

When do you known your brand has truly arrived? When people are talking about donating money your corporation. The idea involves bringing back nostalgic areas of Disney parks through customer donations. You, the customer, would donate money to a profitable corporation to improve their product in your eyes so you could in turn spend money buying the product. Now that's amazing.

I myself am a bit of a Disney fan, particularly the parks. When Walt Disney originally made the parks a lot of things were done without really knowing how they were going to bring in revenue. He just made the coolest things he could, assuming people would want to experience it. And he was right.

As corporate Disney took over a lot of the theme park profits went to things like buying television networks and sports teams rather than maintaining and improving the parks themselves. If a direct link to profitability couldn't be made, you don't do it. That's the way normal companies work. It's harder for a company that profits on inspiring peoples' imaginations and re-awakening their inner child to stay successful that way.

So the answer in some peoples' eyes is for me to donate money to a corporation. And it seems some people are more than happy to do it. If only every company were so lucky…

I Love Me Some Flickr

Saturday, June 24th, 2006

Hot Flickr Action

Man, I'm liking Flickr more and more lately. I'm trying my best to get everyone I know addicted to it, too (I've started giving Flickr accounts as gifts). What's not to like? A simple method of uploading (try teaching your parents ftp), easy tagging / browsing / searching, quickly make links of resized pics, pretty much unlimited space and bandwidth, a nice API, and lots of mind share. All of this for (currently) $24.95 a year. In addition, they've partnered with other sites to allow you to do cool things like print stamps with your photos on them.

The thing that has struck me most lately is how easy Flickr has made it for people to be more creative. So far this year, I've been contacted by two people writing books and an online city guide all asking to use photos. That's just plain neat. If they didn't have a centralized repository of tons of photos (with clearly marked Creative Commons licenses and good tagging for retrieval) how much more of a pain in the ass would it be for them to get the photos they wanted? Sure, we're not quite at the dream of a full remix culture since there are still legal obstacles to using other peoples' works, but an equally large barrier of simply finding stuff is rapidly disappearing.

The Old Ways

My wife's aunt gets all her digital photos printed at Wal-Mart and then has them burn a CD (despite the fact that she has a CD burner). Then when people are over (if the subject comes up), she'll show off pictures of her last vacation, grandson, etc. I can think of no worse way for me to consume content. It's all info-silo, streaming, push model bullshit. When someone asks about the stuff, I'm along for the ride whether I like it or not. If I happen to like a picture, I'm not likely to ever see it again since it's locked up in her CD. Even for her own use, she can't find that one picture on the ship with the captain that time.

The solution to her problem is simple, of course. Wait for me to give you a Flickr account, then learn to use it / get me to teach you how to use it / tell Wal-Mart they should offer Flickr upload along with photo printing, tag those photos (unlike these people), then hand out cards or post-its or whatever with your Flickr ID on it whenever someone asks about the photos.

Break the Silo

My wife's grandmother has album upon album of photos dating back 1930s. In addition, I'd say she easily has several thousand photos. Her husband was a photography hobbyist. He took photos all over the world when he was in the military during dubba dubba two. They're all sitting in photo albums, slowly fading away. How sad. Again, get a scanner and scan them (I'm positive some of those offspring would help), upload them, don't forget to tag them, and then tell all the children and grandchildren that they won't need to fight over the photo albums when you die because they're all online. That or you could keep watching re-runs of 1970s game shows on cable.

The same goes quadruple for my parents, my wife's parents, every aunt and uncle, etc etc. It's never been easier to get that information (we're currently talking about just photos) out there for everyone to see. These are exciting times. Why aren't you living in them?

Job Postmortem

Saturday, June 10th, 2006

The Big Sticky Ball

It's job switching time again. I've had a good time watching another software project that I don't work on struggle to grow, fail, then struggle to survive and reinvent itself. The extremely quick summary is that a system admin with a lot of domain knowledge converted his convenience scripts into a product and a company. More developers were brought on to continue to develop on top of the initial attempt. Like many projects they were very heavy on implementation but very light on planning and process.

At some point, someone realized that they had severe problems with their overall architecture. A product that is really just glorified sys admin scripts didn't work well in large scale customer installations, was difficult to install, and a little buggy / unstable. Doesn't scale, hard to install, and buggy. Hey, just add that no one can tell you how much it costs and I think I just defined Enterprise software! In addition, since everything just kind of "grew" there weren't any real unit tests or, from what I hear, any real encapsulation into semi-independent submodules. Thus making fixing things a very dangerous proposition.

As I've mentioned previously, the idea of system to which you cannot easily add new functionality has been called a big sticky ball problem by one of my managers.

A Man, a Plan, But No Canal

The best plan moving forward seemed to be trying to stabilize the existing product and make it easier to build and install (yeah, their build sucked too). While that was being done, another product would be created to address the many issues of the first product. The first product would initially serve as a good starting point for requirements (both what it did and didn't do) as well as feed data to the new product allowing some measure of scalability through additional instances of the collector. Later, maybe the data collection would be improved in the new product and the first product could go away completely.

The problem is this means you won't be pumping out features like your customers, or worse yet your sales people, are used to. If your revenue model is heavily skewed to getting existing customers to upgrade (rather than a healthy effort to acquire new customers) then your sales are going to drop off since there's nothing to which to upgrade. If this happens, upper management may panic and decide that it's not worth taking two steps back so you can take many steps forward. They'd rather just see something, anything, that denotes forward progress and a return to sales. Why sales couldn't adjust their model and temporarily stop sucking on the upgrade revenue teat, I have no idea. I'm not a sales guy.

And, of course, this is what happened. A drop in sales brought executive attention. The new project was killed because in their eyes it too closely resembled another product being developed. The idea of stabilizing things in the original product took a bit of a backseat to pumping out some features. Then at some point, I imagine, the word "legacy" will be associated with that product and it'll slowly go away after all the developers are either transferred elsewhere or laid off.

And What About Me

My project had a ton of other problems. Briefly, it's a pluggable module into another company's framework. We would sell to a subset of the customers of the other company's product. More accurately, the other company's sales people would sell our product for us.

From the beginning the project was plagued with a lack of resources (test equipment primarily). Then, amid some project killing and reorganizing, the person who had the original vision for the partnership voluntarily left the company, the tech lead on the project left, and the development manager left (not quite in that order). The management to which the project was transitioned works primarily on a different project and seems to feel that my project runs itself. Sales and marketing aren't selling the product directly so they don't feel they need to do anything in the way of requirements.

In a final blow, it looks like the new version of the framework does a better job of what our product is currently doing. There is still room for our product to change its tact, but with no equipment, requirements, and now with one less developer (leaving them with one) I don't think it will happen.

And What Have We Learned

I don't know that I actually learned anything I didn't already know, but it's always nice to get confirmation on things.

From an architecture / code standpoint, you don't just tack on scalability. In order to do this you need to first concretely define your goal. "Must scale" is not an measurable quantity. Once you can measure it, early on make sure you can hit it and that everything you do moving forward won't jeopardize hitting it.

Unit tests don't just show you that your current implementation works. They show you that your refactored solution and all your new stuff didn't break anything that used to work. If you can't figure out how you could possibly test it, you better fucking rethink it.

If you ask someone to be the "build person" and they groan, your build sucks. Fix it and make it a one click build. There is a faster turnaround time to getting builds to QA (you do have QA, right?) and there are fewer human errors in the process (oh shit, I forgot to manually add the doc directory to the top level so this build is bad).

Domain experts aren't necessarily good developers, your developers shouldn't have to be domain experts. Domain experts may not be good customer advocates. There is a difference to knowing all the ins and outs of a domain and knowing what someone that works on it day to day (below the theory level) will want to accomplish. Your customers can tell you what they want to do but will have a limited idea on how they want to do it. For example, the customer wants to be able to mass delete, but they may not have a good idea of how to select what it is they want to delete.

Everyone needs to have skin in the game. If your own sales people don't sell your product, why would they ever contribute requirements (probably bad requirements, but requirements nonetheless)? If management feels their other project is more important, how can you expect them to devote the necessary time to get the developers the things they need? If developers never listen to how hard they've made things for the customer why would they ever change how they do things?

And finally, if a CEO ever tells you that if you don't like the way things are there are plenty of other places for you to get a job, you should probably listen. They're absolutely right.

Guest Speaker

Monday, May 15th, 2006

I finally had something useful happen at work. We had a consultant that uses one of our products during the course of his job come in and give a quick presentation on how he uses the tool. Unfortunately, it's not the product I work on, but it was still interesting for a number of other reasons. As quick background, the tool demo'ed is a storage monitoring tool.

Three Users of Enterprise Software

Nothing new here, but Enterprise software users typically fall into three categories: experts in a domain using the software to make their tasks easier, users largely ignorant of the domain that want an expert in a box to tell them what to do, and executives that want some charts to determine if things are running smoothly: the infamous "dashboard."

The person we had in was definitely an expert in the domain. Listening to how he uses the software to determine if a customer's installation is running smoothly was very educational. Often, features seem to get added to a product by people that don't really understand how those features are going to be used. It's put in just in case someone might find it useful or, worse yet, a customer demanded it without explaining why the wanted it.

This part interested me because, through his demo, he identified a ton of information that the "expert in a box" customer would drool over. Apparently the way he used different pieces of information wasn't just news to me, it was news to the current development team as well. They furiously scribbled while he showed how he used combinations of charts to find configuration errors, determine the need for new equipment, and a number of other things. He also suggested some features that would make his life easier and explained why he didn't use certain parts of the system at all.

Hired Guns

I, like most people, really value the input of a customer or, if that's not available, a customer advocate. The problem is that most product owners in a typical company don't seem to really understand what a customer needs. They pay more attention to what the competition is doing or at most what the squeakier wheels in their customer base say they want.

As early as possible you should post a position on one of the online job sites looking for an expert in whatever problem domain you're working. Throw them a few thousand dollars or so to just come in and show you what it is they do. Do all the standard information mining stuff on the poor bastard. Make sure the developers are involved. Try and build a tool that is useful to him and at the same time captures some of his knowledge for the EIAB (expert in a box) user. After you build a few iterations of the product, ask another one in to evaluate the product. Repeat, get the EIAB user to check it out, etc etc. Did I mention that you should make sure the developers are involved?

Ship your product, sell your product, host a message board for customers of your product, make the developers participate on the board. Keep that interaction with the customer going. At some point, throw a few extra grand at an expert that uses your product and record a demo session to include in your product. Something to orient the expert customer and maybe teach the EIAB user to be more effective. It's not like anyone reads the manual. That training video can double as sales literature, too.

No Shit

Yeah, it's pretty obvious. A veritable no-brainer. I'm ashamed for even suggesting such an obvious idea. Now why, if it's so obvious, is it that I've never seen this done at any organization at which I've worked?

Oh, the VM Goodness

Friday, February 17th, 2006

At work, I have a separate test machine I use to deploy the software on which I'm working. The demands the container(s) and framework make on the host machine are borderline too high to run on my laptop comfortably so the test machine is a very good solution. As I mentioned before we use a lot of virtual machines here. My test server is running Debian but the environment I'm deploying to is actually a VM running Windows via an instance of VMware Player. I run the player by ssh'ing to the test machine and then do some X11 port forwarding to my local Cygwin X server just so I can futz around with the instance of Windows if need be…

I'm planning on working from home this afternoon and some of this weekend. In order to test my changes I need somewhere to deploy the application. Unfortunately, I haven't set up our VPN client yet (plus I hear our VPN is dog ass slow). Well, thanks to those handy-dandy VMs, I can pick up a copy of my server and take it with me. Then I can either run it on my laptop (and temporarily suffer through the somewhat acceptable performance degradation) or I can drop it on any of the machines I have at home. Oh, daddy likes.