Uncategorized

The Australian Internet Filter – A Proposal for a Zero-Click Workaround

Posted in Uncategorized on May 31st, 2010 by Bryce Thomas – Be the first to comment

As many of you may know, dating back to 2008, there’s been a lot of talk about implementing a mandatory Internet filter in Australia. If your primary interest in the filter is political and not technological, search Google for Australian Internet Filter and go to town with it. What I wanted to propose here however is a simple technical (or actually, not so technical) approach to bypassing the Internet filter if it ever does actually come into play.

There’s been much talk on the Internet about how easy it will be to circumvent the filter by going through a proxy, tunneling, or other tricks that the government may or may not fully understand. Claims of “bypassing the filter takes just one click” abound on the Internet. Most of these “one click” solutions refer to going to a web proxy, typing in the address you want there and having the proxy return the results to you. To me, “one-click” here sounds like a little bit of an oversimplification, and even then, a lot of effort. Firstly, I have to establish whether the reason I’m not seeing a page is because it’s broken or because the government doesn’t want me to. Given that the web page blacklist isn’t going to be publicly disclosed, you can’t simply consult your friendly government official on this one. Sure, for every broken page you find, you could try loading it up by going through a proxy, but this is what I’d refer to as “a pain in the arse”. The solution I’m thinking of is one whereby I never have to visit a web proxy and “test out” whether or not a page has been blocked. If a page has been blocked, I want my browser to seamlessly transfer the request over to a proxy and have the page brought up in front of me as normal.

Enter AutoProxy. AutoProxy is an add-on for Firefox. The way AutoProxy works is that you give it a list of addresses which are known to be blocked and whenever you visit one of these addresses, AutoProxy automatically transfers the request over to your proxy server of choice. “That’s nice” you say, “but how does that prevent me from having to know which sites are blocked and adding these sites to the AutoProxy list manually?”. Good question – I’m glad you asked. AutoProxy has a “subscriptions” feature whereby you can subscribe to a list of addresses that you’d like to have redirected through your proxy of choice. This means you can subscribe to someone else’s list of blocked addresses and even get regular updates when that list of addresses change. So, instead of everyone trying to figure out on their own or through some kind of convoluted Internet search mayhem exactly what addresses have been blocked, a centralised list of addresses could be maintained by the community. You use AutoProxy to subscribe to this list and that way, you’ve always got seamless access to blocked addresses, even as the list changes (grows) over time.

I’d considered writing another post about how people could collaboratively compile a list of potentially blocked addresses, but there’s probably not that much in it. I’m not thinking of anything fancy or illegal. None of this hacking in and stealing the blacklist, just good old fashion “it doesn’t work from all these user’s addresses in Australia, but it does through a proxy – probably blocked” style collaboration. AutoProxy puts the icing on the cake, by hooking into what a small portion of the community uncover to give everyone seamless access to blocked sites. In the simplest implementation, the AutoProxy subscription list could just be a wiki-like list that trusted users can edit based on verifying community submissions for what appears to have been blocked.

Perhaps what scares me most about this is that I’m not convinced it will be particularly hard to reconstruct a fairly accurate list of what’s being blocked by the government. Having such a list publicly compiled could inadvertently draw more attention to the content that I imagine most people wouldn’t mind filtered such as rape and child pornography. Because of this, I wonder whether such content will garner more views when it’s “blocked” than when it’s openly accessible.

Convincing .flac files to play in Windows Media Player 12

Posted in Uncategorized on November 26th, 2009 by Bryce Thomas – 33 Comments

For quite some time, whenever I wanted to play .flac files I resorted to using Winamp. Winamp is a perfectly good piece of software, but at the end of the day my preference has always been with Windows Media Player. I recently installed Windows 7 and decided that now was as good a time as any to see if I could do away with Winamp and listen to all my music through Windows Media Player 12.

I’m happy to say that getting .flac files playing in Windows Media Player wasn’t actually all that difficult. Still, there seems to be some confusion regarding the process and everything I’ve read online makes it out to be more difficult than it needs to be. So I thought I’d write a quick guide that I’m hoping will have a better signal-to-noise ratio than what’s already out there. I suspect the instructions I’m providing here work equally as well on some older versions of Windows Media Player, though I’ve only tested this out on version 12 and your mileage may vary.

The short version of getting .flac files to play in Windows Media Player 12

  1. Close Windows Media Player 12.
  2. Go to http://xiph.org/dshow/ and download the Windows 32-bit Installer of the codecs. Do this, regardless of whether you have a 32 or 64-bit operating system. Install it.
  3. Restart your computer.
  4. Open Windows Media Player 12.
  5. Try opening one of your .flac files through Windows Media Player 12.

If at this point you’ve got your .flac files playing through Windows Media Player, then rejoice in whatever way you see fit (if you lack imagination, a cheque in the mail would be fine). If your .flac files aren’t playing, then by the power vested in me by my Works On My Machine certificate, I hereby abdicate myself of all responsibility for your stuff not working and redirect you back to Google to seek further assistance.

So you’ve got your .flac files playing, but they’re not showing up in your media library. Fear not! There’s an emacs command a plugin for that!

Getting your .flac files to show up in Windows Media Player 12 library

  1. Close Windows Media Player 12
  2. Go to http://www.softpointer.com/WMPTagSupport.htm and download the tag support plugin. Install it.
  3. Restart your computer.
  4. Open Windows Media Player 12.
  5. Reimport your music library.

Now the last step there, “reimporting” your music library – I don’t know of any new fan dangle way of doing this and if a “reimport” button does exist then I sure haven’t found it. The way I “reimport” my music library is to first remove all of my library folders (press Ctrl + M to show the menu bar and then go File > Manage Libraries > Music and remove all of the library location folders that you keep your music in). Then I add my music folders back again; believe it or not, using the “Add…” button. This should force Windows Media Player to repopulate your music library, this time including any .flac files.

And really that’s all there is to it. Now you can play your .flac files through Windows Media Player and even access them through the media player library.

For those interested, here’s a few quick notes on some of the things I glossed over in the instructions:

  • I’ve recommended restarting your computer after installing both the codecs and the library tag plugin. You might actually be able to get away without doing any restarts. The only reason I recommend restarting your computer is that when I installed the codecs/library tag plugin, Windows Media Player froze on me when I tried to pause one of the .flac files I was listening to. I suspect this was caused by having not restarted my computer after installing the codecs, although I could be wrong.
  • I’ve said to download the 32-bit version of the codecs, regardless of whether you have a 32 or 64-bit operating system. If you have a 32-bit version of Windows, of course this makes sense. If you have a 64-bit version of Windows, then your computer actually has two versions of Windows Media Player installed on it; a 32-bit version and a 64-bit version. The thing is, by default, Windows uses the 32-bit version of Windows Media Player whenever you launch it and not the 64-bit version (I don’t know for sure why, but I imagine it’s to do with some aspect of compatibility). The 64-bit version of the codecs don’t work with the default (32-bit) version of Windows Media Player.

Beautiful Souped Up – A Beautiful Soup GUI Utility to make Screen Scraping Even Easier

Posted in Uncategorized on October 10th, 2009 by Bryce Thomas – 6 Comments

Quick Download:
BeautifulSoupedUp.py

Recently I’ve been doing some screen scraping in Python using Beautiful Soup, the great HTML/XML parser library written by Leonard Richardson. For those not familiar with Beautiful Soup, you give it a HTML/XML document and what you get back is a nice data structure which allows you to easily query for the elements of a document you’re after. Taken from the Beautiful Soup documentation, here’s a basic example of some of the stuff you can do with Beautiful Soup:

from BeautifulSoup import BeautifulSoup

doc = ['<html><head><title>Page title</title></head>',
       '<body><p id="firstpara" align="center">This is paragraph <b>one</b>.',
       '<p id="secondpara" align="blah">This is paragraph <b>two</b>.',
       '</html>']
soup = BeautifulSoup(''.join(doc))


print soup.prettify()
# <html>
#  <head>
#   <title>
#    Page title
#   </title>
#  </head>
#  <body>
#   <p id="firstpara" align="center">
#    This is paragraph
#    <b>
#     one
#    </b>
#    .
#   </p>
#   <p id="secondpara" align="blah">
#    This is paragraph
#    <b>
#     two
#    </b>
#    .
#   </p>
#  </body>
# </html>


soup.contents[0].name
# u'html'

soup.contents[0].contents[0].name
# u'head'

head = soup.contents[0].contents[0]
head.parent.name
# u'html'

head.next
# <title>Page title</title>

head.nextSibling.name
# u'body'

head.nextSibling.contents[0]
# <p id="firstpara" align="center">This is paragraph <b>one</b>.</p>

head.nextSibling.contents[0].nextSibling
# <p id="secondpara" align="blah">This is paragraph <b>two</b>.</p>

So Beautiful Soup works pretty well as is. It’s possible to test out different queries fairly quickly using the Python interactive interpreter. The problem with testing out queries in the interactive interpreter, especially with larger documents, is that you don’t get to see the results within the overall context of the document. What I thought would be useful is if there were a means of testing out Beautiful Soup style queries in a way that let you see precisely where the results fitted in within the broader context of the entire document. Inspired by the find feature found in most text editors, I’ve developed a GUI that highlights Beautiful Soup matches within a document. Difference being, instead of typing in a search term that is a string of characters to look for, you type in a Beautiful Soup style query. The parts of the text that the Beautiful Soup query matches are then highlighted. Take a look:

beautifulsoupedupwindows

So a typical use case for such a tool goes a little something like this:

  1. You start out with a HTML document that you want to scrape. You’re using Beautiful Soup and you want to establish what kind of query you’re going to have to give it to extract the pieces of information you’re after.
  2. You fire up the Beautiful Souped Up GUI and copy the HTML document into the textbox in the middle of the window.
  3. You enter your soup query at the top of the window and run it. Any parts of the HTML document that your query matches get highlighted, allowing you to quickly determine whether you’ve written a query that’s extracting the pieces of information you’re actually after.
  4. Once you’ve found a query that does highlight the pieces of information you’re after, you take the same query and use it in your own Python program wherever it’s needed.

The Beautiful Souped Up GUI is just a single file that you can run from the command prompt/terminal (e.g. python BeautifulSoupedUp.py). There’s no fancy installer or anything at this point; I’ll wait and see how much demand there is for an installer first. I’ve tested it on both Windows Vista and also Ubuntu Linux 9.04. Note that if you’re running it on Ubuntu, you’ll probably need to install python-tk first (e.g. sudo apt-get install python-tk). Other than Beautiful Soup, I don’t think you’ll need anything additional installed on a Windows installation of Python.

I’ve tested Beautiful Souped Up under Python 2.5.4 and Beautiful Soup version 3.0.7a. If you’re running Python version 2.5.2 or earlier and get an error message about Tkinter, you’ll probably need to upgrade to Python 2.5.4. I haven’t had the opportunity to test Beautiful Souped Up with any other version of Python or Beautiful Soup, so if you have a different version of either, please leave a comment and let me know how it goes.

Beautiful Souped Up is shown running on Vista above. Here’s what it looks like running on Ubuntu below:

beautifulsoupedupubuntu

For anyone interested in contributing to Beautiful Souped Up, I’ve set up a public repository over on GitHub at http://github.com/brycethomas/BeautifulSoupedUp. Leave a comment and let me know what you think.

I got Scammed, but at least they were good (kind of)

Posted in Uncategorized on September 12th, 2009 by Bryce Thomas – 3 Comments

I was in the market for a copy of Adobe Acrobat the other week for the work I’ve been doing over on Centreleak. I didn’t really know where to get a copy at a good price, so I headed over to Google.

I soon found a site topsoftshop that were selling Adobe Acrobat for the bargain price of $88 USD (and yes, for Adobe Acrobat, that is a bargain). I did my usual preliminary test for determining whether a deal is legitimate or not by looking at the website. If it looks like it could have been put together in under an hour, it’s probably not legit. Historically this rule has served me well and screened out 99% of the bad eggs. Anyway, topsoftshop passed the test. As you’ll see if you visit the site, it all looks very professional and there’s not any obvious hints that it would be a scam. Even if you read the terms and conditions or take a look around other pages on the site, there’s far fewer spelling and grammatical errors than you would find on your average scam site.

Anyway, after taking a look around I was pretty confident it was legitimate and so went ahead and purchased a copy of Adobe Acrobat. Might I add, payment was through Paypal, which also boosted my confidence. Admittedly I didn’t bother to check whether I was actually covered by Paypal against fraud, but for an $88 purchase, I couldn’t be bothered trying to make sense of their rules surrounding the matter. So everything was going smoothly, and then an alarm bell went off:

payment_to_wu_chao_hop

That’s a print screen from the Paypal transaction. The transaction all seemed normal at first. Topsoftshop asks me to enter all my shipping details, it all looks legit, I’m taken to Paypal and I enter an email address (yes, an English sounding one) to send money to and an amount of $88 USD and click pay. Only then does Paypal inform me of the name of the recipient that I’ve sent my $88 USD to. It’s old mate off in Asia; Wu Chao-Hop according to Google translate. So at this point I figure I’ve probably done my dough, and get ready to report the matter to Paypal in a few weeks time when my copy of Adobe Acrobat has predictably not turned up. So I forget about it all for now.

A few days later though, I receive an email from my friends at topsoftshop letting me know that my copy of Adobe Acrobat has shipped and they’ve even given me a tracking number. I go to the postage site they’ve linked me to (a Chinese site) and enter my tracking number and sure enough there’s a record there in the system. I’m starting to think this is legitimate again. I mean I’ve heard of elaborate scams, but going to the effort to create your own postage site and rig it up with order tracking is just way too much effort. Anyway, the postage site and tracking number were both real and they had shipped at least something.

A few days later, a knock on my door and sure enough, I’ve got a package, direct from China. It kinda looks like the size of box you’d expect software to come in, so I figure its all good and open it up. Inside there’s a nice “Adobe Acrobat 9 Pro” cardboard box and inside that is a perfectly legitimate looking disc and even little Adobe pamphlets. Take a look.

adobe_acrobat_scam_boxing

So I chuck the CD into my computer. Being sceptical, I decide to first check out the directory structure on the CD before installing. Here’s what I find:

directory_structure_highlighted

Low and behold, what do I find in the completely inconspicuous “Serial Fix” directory? A cracked .dll and directions on how to install it. I’ve got to say topsoftshop, 10 out of 10 for effort put into creating a fake that appears very real. But why go to so much effort when you’d need to use a crack to get the software to work anyway? I think by the time you’re installing a crack it would be preeeetty obvious that your software is not legit, which kind of negates all of the effort that went into replicating the fancy packaging. I don’t know, perhaps they’ve rigged up the installer so that the crack gets applied automatically and they just hope that some sucker doesn’t look in the directory structure.

So by this point I assume my money is probably long gone and that the topsoftshop site will evaporate within a day or two. I figure I should let Paypal know about it anyway, so I log on and lodge a dispute. The first step of lodging a dispute on Paypal is very hands-off from Paypal’s point of view. You go on and lodge a dispute that contains a message that gets sent to the person you bought the stuff from, but Paypal doesn’t look at it at this point. So this is what I do. I go on, write a message to topsoftshop explaining that there was a crack folder in the software they sent me (as if they didn’t know) and submit the dispute. Then it’s off to bed.

Here’s where it gets brilliant. The next day I wake up and check my email and I’ve got a message from Paypal saying my dispute has been closed. There’s no mention of why it’s been closed, so I log onto Paypal to checkout what’s happened. Here’s what I see:

paypal_refund

Topsoftshop had refunded my money! No message, no email or explanation, they’ve just refunded my money. That’s like the worst scam ever. You take peoples money, give them pirated software and then later on when they point it out to you, you just hand the money straight back over? Doesn’t that sort of defeat the purpose of scamming people in the first place?

The best I can surmise is that they hope that they sell enough pirate software to people who couldn’t be bothered complaining and for those who do complain, they quietly refund the money in the hope that they just shut up about the whole issue and don’t notify Paypal. Well guess what topsoftshop? Up yours! I’m going to dob on you to Paypal anyway.

So there you have it. I’ve got my money back and I’m now the proud owner of a strikingly good looking fake of Adobe Acrobat Pro. The whole episode has been as hilarious as it has saddening. Whatever you do, please don’t buy software from topsoftshop and do the best you can to avoid other professional looking fakes. After all, they might not all happily refund your money!

Visual Studio – Programmer’s Edition

Posted in Uncategorized on September 6th, 2009 by Bryce Thomas – Be the first to comment

If you’ve ever installed Visual Studio, you’ll have seen the generic models that the installer cycles through on your screen. They all look exactly that; like models, with little resemblance to the average Visual Studio user. If you haven’t ever installed Visual Studio, here’s a taste:

vs_install_2
Personally I find this to be the worst offender. When I saw this, I figured Ikea must be selling sweaters now. I’d hire him as an interior designer, but not as a software developer.

vs_install_3
This guy you could conceivably find actually writing code, though I’d say he’d be in the top 1% presentation wise amongst the programming community, so hardly representative. I never noticed, but according to some, he has a face too small for his head also.

vs_install_1
This picture isn’t actually too unrealistic, apart from the Colgate smile. I would however say that her presentation is still probably well above average for programmers. She is also a she, and lets face it, sad but true, most programmers are male.

All in all, they’re the usual suspects of corporate software installs; clean shaven, well dressed and in this particular case, look like they’ve probably never written a line of code before in their life. To Microsoft’s credit, the models they’ve used are far closer to reality than those shown in many other stock photos. I’m sure I could have chosen a much better example of an installer with superficial models, but I’m lazy. I was installing Visual Studio at the time, and you know the install is going to take long enough that you’ll have plenty of print screen opportunities.

I’ve always felt as though people would have more respect for a product if the models they used actually looked remotely like the people that use the product. So with my sub par photo editing skills, I drew up some prototypes for the programmer’s edition of Visual Studio, now featuring real programmers! With a bit of luck, you’ll see these babies in the Visual Studio 2010 installer. See if you can pick the characters.

vs_install_1_mod
See, it’s not so bad when you include an actual programmer in the photo. The expression is a little bit used car salesman, but I think this can be overlooked. I mean hey, he’s even wearing a suit (of sorts). Surely that’s enough to keep the corporate types happy.

vs_install_3_mod
Ok, so he’s wearing flannel. He might not win any fashion awards, but if you knew who he was you’d have huge restecp. Actually, the idea of getting to wear flannel while you work already earns my respect, even if you are just some hobo off the street.

vs_install_2_mod
Ok, so conceivably it would be a little more difficult pitching this one to Microsoft for the Visual Studio 2010 installer. I don’t even know what to say about this one. It either shows the stark contrast that occurs when you combine the head of a programmer with the body of a model, or the stark contrast that occurs when you do a particularly poor job of editing photos.

vs_install_3_mod_2
Once again, getting this one into the Visual Studio 2010 installer would be somewhat of a challenge. I’m not going to add anything to that, the picture says enough.

Truth be told, I suspect (and in some cases know) that the programmers above wouldn’t use Visual Studio anyway. Their photos just happened to be handy. Still, I imagine there’s plenty of .NET programmers out there whose appearance is a far stretch from the models you see in the installer. Nonetheless, it seemed only fitting to add one more concept image for the Visual Studio 2010 installer of someone who I’m sure would use Visual Studio if they were still programming on a daily basis.

vs_install_3_mod_3

On second thoughts, let’s just stick with using models…

Justifying an Expensive Quality Computer Chair

Posted in Uncategorized on August 18th, 2009 by Bryce Thomas – Be the first to comment

About one year ago, I was introduced to the Herman Miller Aeron chair. For anyone not familiar with it, it’s a chair that is said to have grossed over $1 billion in sales and is considered by many to be one of the most comfortable ergonomic chairs on the planet. According to Internet folk lore, it’s mandatory that I at this point include the phrase “dot com excess” in my post about the Aeron chair, and mention that it was hugely popular among high-tech start-ups, right before reality set in and the bubble burst. So why the hell am I crapping on about a chair? Well, it’s the price. Or perhaps more importantly, why I think it’s perfectly justifiable for basically any full-time programmer.

aeron_side_view

Here in Australia, a fully loaded Aeron, shipped to your door, will set you back around $1600 AUD (~$1300 USD). Most people completely rule out any possibility of owning a chair like the Aeron after hearing a price tag like this. I suspect that like most things in life, it’s the upfront cost that deters people the most. Like any other investment, buying an expensive chair requires that you postpone consumption now for greater consumption in the future. The chair of course pays out its dividends daily, but unless you’ve been sitting on a steel rod up until now, it’s unlikely to make you $1600 better off in 24 hours.

I finally bit the bullet and bought myself an Aeron chair at the beginning of this year. Retrospecting all the way back to my last sentence, “bit the bullet” is a little melodramatic – buying an Aeron was a complete no-brainer. When you spend around 10 hours a day at the computer, $1600 amortised over the life of a chair doesn’t look so bad. Speaking of the life of a chair, the Aeron comes with a 12 year warranty. I don’t think any of my other possessions will still be under warranty by the time I’m 33 years old.

So justifying an expensive computer chair for myself was easy – it brings me comfort and satisfaction every single day, for many hours a day. It’s likely to do so for quite some time. But it did get me thinking; how justifiable is an expensive computer chair at work? All the work I do at the moment is from home, so it’s not like I have to seek approval to buy furniture here. Between me, myself and I, things get approved fast. They’ll almost certainly be a point in time though where I’m working in an office, at which point I’ll want to be able to determine a) whether or not an expensive computer chair is justifiable and b) how I’d go about proving it. So I came up with a hypothetical scenario of a full-time worker. Here’s how it goes:

Scenario

You’re a full-time worker, working 40 hours a week over 5 days. Without subtracting days off, you therefore work 260 days a year (52 weeks * 5 days). You get 4 weeks annual leave (4 weeks * 5 days = 20 days), 11 public holidays and take 5 sick days in a year, for a total of 36 additional days off. This means you actually work 260 – 36 = 224 days a year (less than it feels like I’m sure). Over a 12 year period (warranty of chair), you work 2688 days (12 years * 224 days). In true business style, let’s break it down, cost/benefit.

Cost

Ok. So your company spends $1500 AUD on buying you an Aeron (assuming they get it $100 cheaper by being a business or buying in bulk). Let’s assume they would have otherwise bought you a $200 chair, so the additional cost to them is $1300. Now at this point it’s attractive to say “so it’s costing the company $1300″. To be fair though, there is a hidden cost – the opportunity cost.

The opportunity cost is the next best option the company would have to forego to buy you a quality computer chair. Unless they were really bad with finances, they wouldn’t just leave the money sit there doing nothing if they didn’t buy you a quality chair; they’d have it earning interest or being invested in some other productive activity. To keep things simple, let’s assume their best alternate use of the money is to invest it into an index fund, with a long-term compounded rate of return of 10% annually. Also assume long-term inflation of 2.5% per/year, calling it even at 7.5% interest per year. $1300 compounding for 12 years at 7.5% comes out to $3096.31, which is the opportunity cost of buying you a quality computer chair.

So at this point, the company has two options:

  1. invest their $1300 in the index fund and come out with $3096.31 in 12 years time, measured in today’s dollars.
  2. invest $1300 in an expensive chair for you in anticipation that it results in an additional $3096.31 of production/saving or more over 12 years.

Squeezing $3096.31 of value out of a quality chair upgrade sounds a little lofty at first. But let’s not forget, this is over 12 years. Another way to view the cost of a quality chair is to look at it amortised over the 2688 days you work over those 12 years. $3096.31/2688 days = $1.15 AUD (~ $0.95 USD) per day in order for you to sit in a fancy pants chair. So $1.15 AUD per day, or $257.60 AUD a year ($1.15 * 224 days), is the price a business pays to notably improve your seating. If you earn $50,000 per year, that’s equivalent to asking for a one half of one percent pay rise. It becomes an even smaller percentage of your income as time goes by and your pay increases.

But hold on you say; an employee will rarely stick with a single company for 12 years, and the company might not even exist for that long. A counterargument to the former is that the chair would be transferred over to the person replacing them. To the latter I’d say that high quality chairs like the Aeron appear to hold their value fairly well and so some of the cost would be recouped when the chair is liquidated. The precise figures I’ve used in this example are also debatable and you could tweak them for better or worse to calculate your own situation. Either way, I like to think the provided scenario is indicative of the kind of money it costs a company to provide employees with a high quality chair. And now to the benefit…

Benefit

It’s really hard to put a dollars and cents figure on the benefit of a quality chair, but here’s what I imagine would be some of the benefits for a company:

  • Greater productivity: now you can focus on your work, rather than how sore your arse is getting.
  • Higher morale: you’re left believing that your employer cares about you (even if they don’t).
  • Lower turnover: see higher morale.
  • Fewer sick days: fewer mangled spines means fewer sick days (and fewer law suits).
  • Attract new employees: nothing speaks geek like an Aeron chair. If I were to walk into a job interview and they sat me down in an Aeron or similar, I’d have more respect for the company and be under the impression that they treat their people well.

At $1.15 a day, your employer could easily be spending more money providing you with cups of coffee and biscuits than with a quality computer chair. I’m going to argue that if you’re a full-time programmer, it’s not over indulgent or opulent for a company to buy you an expensive quality computer chair – it’s a sound investment. You shouldn’t have to be a freakin’ genius programmer earning a 6 figure salary before it becomes justifiable either. The benefits might not be 100% quantifiable, but I think if you achieve even one of those listed above, a quality chair will pay for itself over its lifetime. Does your job justify a chair upgrade?

Note: If you’re living in the United States, consider yourself lucky. High quality computer chairs like the Aeron can be picked up for notably less than they can here in Australia, making them even easier to justify on a cost/benefit basis.

I heart search

Posted in Uncategorized on June 25th, 2009 by Bryce Thomas – Be the first to comment

Lately I’ve been reflecting on just how much I love modern search. And I don’t just mean Google search, but search in general.

I didn’t really begin discovering the wonders of search until I was already a year into my IT degree, which scarily enough wasn’t all that long ago (circa 2007). Of course I was familiar with Internet search engines (I might have been pursuing the wrong career path if I wasn’t), but I’d never really used search much outside of it.

My first revelation in search came when I started using the humble Ctrl + F to find text in Visual Studio.

visual_studio_find_dialog

That’s right – for my first two terms of uni I’d been coding up my C++ assignments without once using the find feature in Visual Studio. Not to mention all the time I’d spent coding in high school without it.

Find is such a simple feature really and one which is in so many programs that deal with text. Needless to say, after I actually started using Ctrl + F in Visual Studio, I soon started using it in other programs like Notepad and Word too. This had been a definite blind spot for me; a rudimentary feature that had been around so long and yet I’d never really taken advantage of it. And yeah yeah, before anybody picks me up on it, I realise that Visual Studio has incremental search which is often the better option, but I didn’t know about it at the time and some search was better than no search.

Now that I use the find feature, I rarely bother scanning through more than a few pages worth of text when I’m looking for something particular, regardless of whether it’s Visual Studio, Word, Notepad or some other text editor. I’ll just Ctrl + F it instead. Lazy perhaps, but sometimes laziness is good. It’s strange how something so simple can completely change how you work and save you so much time when you know what it is you’re after.

For me the next advance in search came when Windows Vista was released in 2007. Putting aside all the hatred that’s been directed towards Vista, there’s one feature in it that I’d truly miss going back to Windows XP – the ability to quickly search for programs from the start menu.

search_on_vista_start_menu

It takes just one stroke of the Windows key to to open the Vista Start Menu, and after having typed the first 3-6 letters in the name of the program I want to launch, it’s generally listed within the top three results, requiring a maximum of three more keystrokes; two with the down arrow and one for Enter. All in all I’d say that 95% of the time I use less than 10 keystrokes in total to launch a program. It’s a hell of a lot quicker than using the mouse to navigate through the start menu folders Windows XP style, especially when the program you’re after has been stashed off in some deeply nested and obscure folder, the path to which you might not even remember.

I’m constantly trying out new software and applications. Being able to type the name of the program I want to run rather than dig through the program list is what I consider one of the single best features of Windows Vista. Without a doubt the improved start menu in Vista has been instrumental in enhancing my laziness.

My next notable advance with search came when I actually started using Google Desktop in 2008. I’d had it installed for some time previous, but like so many other applications, it’d found its way through my Install > Try > Forget cycle that often occurs when I find no immediate use for an application. In retrospect, I’d been looking at Google Desktop from the wrong perspective. I’d always considered file system search tools as utilities for finding something when you lose it. Eventually though, I started seeing them as a means of cutting down on superfluous clicks and navigation. Instead of using Google Desktop to find files I’ve lost, I now mostly use it to quickly open up files I usually already know the location of.

google_desktop_search_for_nn

The initial indexing Google Desktop performs can take some time, but once it’s done, it retrieves results lightning fast. Of course one might ask why you wouldn’t just use the search built into Windows Vista which is considered to have become quite reasonable. In practice I’ve found that Google Desktop has been quicker and provided superior results when searching for files, but your mileage may vary, so test for yourself.

I see Google Desktop as analogous to the Vista Start Menu Search – it’s not there just to help you find what you’ve lost, but to save you the clicks of navigating to stuff you already know about. It generally requires a similar number of keystrokes too. Two hits of the Ctrl key and the search box is up. Another few keystrokes to type the first few letters of what it is you’re after and you’ll usually have the correct result in front of you. On average I’d say there’s a similar number of keystrokes involved in opening a file through Google Desktop as there is in starting a program from the Vista Start Menu. Compare that to opening up Windows Explorer and navigating through a folder hierarchy and I can think of very few instances where desktop search is slower.

So by this point in time I was pretty happy with myself and thought I’d done a reasonably good job of speeding up common tasks like finding my way through text files and opening up a program/file. It wasn’t then until Google Chrome was released as a beta in September 2008 that I found myself experiencing a new level of search awesomeness. Prior to the release of Chrome, I hadn’t been too fussed about which web browser I used as I’d considered them all to be more or less the same. Truth be told, had I given Firefox more of a chance, I probably would have switched over to it from Internet Explorer back before Chrome existed. Given that I have a soft spot for Google though, I figured it was worth giving Chrome a shot when it was announced.

After using Chrome for a few weeks I couldn’t believe the kind of search I’d been missing out on. Coming from Google though it does makes sense that Chrome is a browser centered around search. From the moment I opened Chrome, performing common tasks seemed crazy fast compared to Internet Explorer. And I’m not even talking about page load times, but interacting with the browser itself. I quickly fell in love with the Chrome omnibox, the speed and utility of which I believe has notably increased the number of searches I perform (Google’s plans have unfolded well).

chrome_omnibox

Not only is the omnibox great for standard search, but adds a subtle feature that I’ve really come to appreciate over time. That’s the ability to issue a specific search on a website without having to load the site first. Take Amazon for example, which I’ve visited previously. Now when I type the letters ‘am’ in the omnibox, the first suggestion that comes up is www.amazon.com and it’s given me the option to press tab to start a search there.

chrome_search_site

chrome_search_site2

A feature so simple, but one I now find myself using over and over again.

The other search feature of Chrome that I find myself using all the time is incremental inline search (searching for text within a page). I used search every now and then back when Internet Explorer 7 was my primary browser, but it never really did much for me. Search in Internet Explorer 7 was like search found in so many other programs – a dialog box that didn’t provide results incrementally as each new letter was typed. Although this kind of search worked moderately well for me in Visual Studio, I found it didn’t really help me out as much on the web. In Google Chrome, I soon found inline search that was incremental and all instances of the search string were highlighted on the page as each new letter was typed.

chrome_inline_search

Furthermore, there was no dialog box obscuring the view – the search was tucked nicely up in the top right hand corner of the page. All of a sudden, I started finding inline search useful on the web.

To be fair, Firefox had this long before Chrome was even released. In fact, Microsoft seem to have learnt their lesson too with Internet Explorer 8 and have adopted a similar inline search approach. The one thing Chrome’s inline search still has over both IE and Firefox is that it gives a visual indication of where in the page the search term appears by placing small yellow markers in the scrollbar on the right hand side, as illustrated above.

Anyone that’s used file comparison software before would probably have seen a similar visualisation being used to show where the differences exist between two files.

It’s hard to describe just how useful inline search can be when you’re dealing with a large page of text (or even a small one). I recently completed a university course where an electronic copy of our prescribed reading (~420 pages) was made available online. When it came time to do an online quiz, I was able to use inline search to pinpoint a topic which made working through the answers much easier (although I can’t say the university necessarily intended the electronic text to be used in this way). There are some things you just can’t do with a printed text.

The final application of search that I believe has had a notable effect on my productivity has been when I started using the Beyond Compare file comparison software. I kind of consider file comparison software as a way of issuing searches that are non-specific; they just say “I’m looking for what’s different, whatever that may be”.

beyond_compare_example

For me file comparison software was another one of those things that didn’t sound so useful, until I started using it. I now use it frequently and would hate to go back to a time without it, manually eyeballing every line of code in two files looking for the difference that’s caused one file to break.

So there it is. My approach to search over the past few years has evolved to include:

  • Using the generic find feature found in most text editors to save looking for things manually
  • Using the Vista Start Menu search to launch applications
  • Using Google Desktop to open files I know exist
  • Using Google Chrome to speed up searching on the web, including inline searches and search within a site
  • Using Beyond Compare to do file comparisons

If I were to go back in time a few years and give myself some general advice, here’s what I’d be saying:

  • Don’t spend ages trauling through lengthy text files looking for something specific – use the find feature
  • Use something that allows you to quickly launch applications and files (whether it be from Microsoft, Google, other)
  • Use a browser that does a good job of search, including inline (Google Chrome, Firefox, Internet Explorer 8 )
  • Don’t bother trying to manually look for differences between two files or folders – use file comparison software (Beyond Compare among others)

Had I been using these search techniques back then, I think I would have saved myself a substantial amount of time. What are your favourite search techniques?