<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>Hicks-Wright.net</title><link>http://hicks-wright.net</link><description>Tyler's blog of software, politics, and random thoughts.</description><language>en-us</language><lastBuildDate>Mon, 14 Sep 2009 15:32:34 +0000</lastBuildDate><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/Hicks-Wright" /><feedburner:info uri="hicks-wright" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><feedburner:feedFlare href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.feedburner.com%2FHicks-Wright" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2FHicks-Wright" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare href="http://www.bloglines.com/sub/http://feeds.feedburner.com/Hicks-Wright" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2FHicks-Wright" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2FHicks-Wright" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2FHicks-Wright" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><item><title>Career Break
</title><link>http://feedproxy.google.com/~r/Hicks-Wright/~3/8iUFJEnYWkk/</link><description>&lt;p&gt;
    &lt;a href="http://www.flickr.com/photos/-wit-/1859812082/" target="_blank"&gt;&lt;img alt="Fishing at Blenhiem by wit" class="top" height="130" src="http://farm3.static.flickr.com/2128/1859812082_b66bb1e637_m.jpg" width="240" /&gt;&lt;/a&gt;I didn&amp;#39;t go into work last week. I won&amp;#39;t go in this week either. In fact, it may be a month or two before I go back. I&amp;#39;m on sabbatical.&lt;/p&gt;
&lt;p&gt;
    Well, kind of. Typically, one gets paid for a sabbatical, if only half of the normal income. As Wikipedia informed me, I&amp;#39;m taking more of a &lt;a href="http://en.wikipedia.org/wiki/Career_break" mce_href="http://en.wikipedia.org/wiki/Career_break" target="_blank"&gt;career break&lt;/a&gt;. Either way, I&amp;#39;ve decided to take some time off to deal with a few things that have been bothering me lately.&lt;/p&gt;
&lt;p&gt;
    The biggest issue I&amp;#39;ve been dealing with is &lt;a href="http://stackoverflow.com/questions/tagged/burnout" mce_href="http://stackoverflow.com/questions/tagged/burnout" target="_blank"&gt;burnout&lt;/a&gt;. It seems odd to be saying that - for the past six months I&amp;#39;ve been working on a brand new product that I helped conceive of and prototype a little over a year ago. I got to work with fantastic interns and some of the best developers I know on an interesting, useful project that I know many people will enjoy using. We got to use a modern framework with good tools and clean interfaces. In many ways, it is a dream project. But I left before it was released. The culprit is billing code.&lt;/p&gt;
&lt;p&gt;
    It started right after my first internship in 2005. &lt;a href="http://www.copilot.com" target="_blank"&gt;Copilot&lt;/a&gt; had just launched and all of the other interns had gone back to school. I stayed behind, deferring my Stanford admission three months, to keep the product alive and wrap up the few bugs and features that hadn&amp;#39;t been implemented during the summer. On the top of the list: a subscription payment system. The idea was pretty simple, a tiered set of subscriptions based on minutes per month -- similar to a cell phone plan, minus the evil. The problem was, we could not find any payment processors at the time that could deal with variable monthly subscription fees. So we had to implement it ourselves, credit card database and all. I did the majority of the work; my econ second-major came in handy. Before I left at the end of the year, the new subscription system was in place and people were signing up.&lt;/p&gt;
&lt;p&gt;
    &lt;a href="http://www.flickr.com/photos/zack-attack/399240900/"&gt;&lt;img alt="money roll by zzzack" class="top-right" height="68" src="http://farm1.static.flickr.com/150/399240900_e76c0795cc_t.jpg" width="101" /&gt;&lt;/a&gt;It &lt;a href="http://images.inc.com/magazine/20090301/how-34-graph.jpg" onclick="window.open(this.href, '', 'resizable=no,status=no,location=no,toolbar=no,menubar=no,fullscreen=no,scrollbars=no,dependent=no'); return false;"&gt;did well&lt;/a&gt; for Copilot. Sales doubled and doubled again. When I returned, I took over billing again. I help our support team work with customers billing issues, I fixed bugs in the system, and added little features to make some of the small pain points go away. Then about a year ago, we noticed Copilot sales were starting to plateau, so we set out to add new features and restructure the billing system. For my part, this involved a near-total rewrite of the billing system, sending me deep into the details of billing cycles, prorating, plan switching, and other tediously boring subjects. I spent months refactoring and months testing and bug fixing.&lt;/p&gt;
&lt;p&gt;
    The problem with billing systems is that, technically speaking, they are not very difficult to implement, but they must be perfect. New features garner little praise, but errors will easily result in lost customers. And I had became the in-house subscription billing expert. Even after moving to the new project, I could be interrupted at any time if a customer got into a weird state or saw what they thought was an error on their statement. And of course, the new product would need billing code of its own. It had become inescapable.&lt;/p&gt;
&lt;p&gt;
    &lt;a href="http://www.flickr.com/photos/michaelsullivan/406152/" target="_blank"&gt;&lt;img alt="Time Card by TheGoogly" class="top" height="104" src="http://farm1.static.flickr.com/1/406152_04052764ca_m.jpg" width="139" /&gt;&lt;/a&gt;The other main issue was personal projects. As you know, I put &lt;a href="http://hicks-wright.net/blog/how-to-get-a-job-at-fog-creek-part-1/" target="_blank"&gt;a lot of stock in personal projects&lt;/a&gt;. I feel that they are the best way to improve yourself as a developer, and a good way to keep you sane when your work projects head south. Unfortunately, the employment contract I signed as an intern (which still applies as a full-time employee) is ambiguous about IP ownership with regards to personal projects. In other words, it would be possible, though unlikely, that the company could take ownership of something, even though I had worked on it entirely in my own home, with no company equipment or expertise. (Unfortunately, New York does not have provisions like California and six other states, which &lt;a href="http://www.leginfo.ca.gov/cgi-bin/displaycode?section=lab&amp;amp;group=02001-03000&amp;amp;file=2870-2872" target="_blank"&gt;prohibits employers from taking ownership of outside projects&lt;/a&gt;.) While I have no expectation that would actually happen, the ambiguity makes it difficult to justify spending any time on projects that I care about. That limited my outside work to projects I&amp;#39;d had gotten excluded about a year before, when the policies had not been so rigid.&lt;/p&gt;
&lt;p&gt;
    So I took some time off. So far, I&amp;#39;ve been working on things that I&amp;#39;ve had to put on the back burner for the past year, including a big new update to the &lt;a href="http://myfriendlyfox.com/" target="_blank"&gt;eBay Toolbar&lt;/a&gt;. Working from home has been relaxing. I can set my own schedule, and work without interruption. The biggest thing I miss is the social interaction with my fantastic coworkers. I may be returning in a few weeks, or I might take another month off. I&amp;#39;ll be updating as I get further into the break.&lt;/p&gt;
&lt;p&gt;
    &lt;em&gt;Thanks to &lt;a href="http://www.flickr.com/photos/-wit-/" target="_blank"&gt;wit&lt;/a&gt; for &amp;quot;&lt;a href="http://www.flickr.com/photos/-wit-/1859812082/" target="_blank"&gt;Fishing at Blenhiem&lt;/a&gt;&amp;quot;, &lt;a href="http://www.flickr.com/photos/zack-attack/" target="_blank"&gt;zzzack&lt;/a&gt; for &amp;quot;&lt;a href="http://www.flickr.com/photos/zack-attack/399240900/" target="_blank"&gt;money roll&lt;/a&gt;&amp;quot;, and &lt;a href="http://www.flickr.com/photos/michaelsullivan/" target="_blank"&gt;TheGoogly&lt;/a&gt; for &amp;quot;&lt;a href="http://www.flickr.com/photos/michaelsullivan/406152/" target="_blank"&gt;Time Card&lt;/a&gt;&amp;quot;. &lt;br /&gt;
    &lt;/em&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Hicks-Wright?a=DJM6pjCGS2A:HP9vQt20ylc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Hicks-Wright?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Hicks-Wright?a=DJM6pjCGS2A:HP9vQt20ylc:l10I13IgW5I"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Hicks-Wright?i=DJM6pjCGS2A:HP9vQt20ylc:l10I13IgW5I" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Hicks-Wright/~4/8iUFJEnYWkk" height="1" width="1"/&gt;</description><pubDate>Mon, 14 Sep 2009 15:32:34 +0000</pubDate><guid isPermaLink="false">/blog/career-break/</guid><feedburner:origLink>http://hicks-wright.net/blog/career-break/</feedburner:origLink></item><item><title>How to Get a Job at Fog Creek (and Other Selective Software Companies), Part 3: Programming Interviews
</title><link>http://feedproxy.google.com/~r/Hicks-Wright/~3/-AQnT4zWD2E/</link><description>&lt;p&gt;This is the third (and final) installment of a &lt;a href="http://hicks-wright.net/blog/how-to-get-a-job-at-fog-creek-part-1/"&gt;series&lt;/a&gt; on how to get a job at &lt;a href="http://fogcreek.com/"&gt;Fog Creek Software&lt;/a&gt; (and other selective software companies).&lt;/p&gt;
&lt;p&gt;Assuming you do well on the design question, you will be scheduled for a second phone interview. This one will involve code. We use our remote assistance software, &lt;a href="http://www.copilot.com/"&gt;Copilot&lt;/a&gt;, to log in to your computer so you can use the editing tools you're comfortable with. (Of course, if you're not comfortable with that we can always fall back to &lt;a href="http://etherpad.com/"&gt;EtherPad&lt;/a&gt;, which is also pretty awesome.)&lt;/p&gt;
&lt;p&gt;Before we get into any specifics, make sure you've read the &lt;a href="http://www.hicks-wright.net/blog/how-to-get-a-job-at-fog-creek-part-2"&gt;post on phone interviews&lt;/a&gt;. Everything I mentioned there carries over to coding interviews, especially the part about talking through what you're thinking. It can be easy to jump into a programming problem and just start writing down your answer without explaining your process. While this may work for actual programming, it defeats the point of an interview. You need to make a point of communicating your solution to your interviewers. It will show them that you have a good, thorough thought process and that you can work with other people.&lt;/p&gt;
&lt;p&gt;Speaking of being able to work with people, try to remember manners and common courtesies to &lt;em&gt;everyone&lt;/em&gt; you interact with during the process. Our office managers may not be asking you technical questions, but if you treat them rudely or disrespectfully, you can be sure that we'll hear about it. (If you haven't learned it yet, learn it quick: the office manager is, by far, the most important person in the office.) They don't want to work with jerks, and neither do we. Also remember to respect the space you're in. I try to have fun and interesting objects in my office for visitors, but going around, picking up, playing with, and moving EVERY SINGLE OBJECT in my office does &lt;em&gt;not&lt;/em&gt; make me want to work with you, no matter how good the solution you're mumbling to yourself is.&lt;/p&gt;
&lt;p&gt;Not that a candidate has ever done that...&lt;/p&gt;
&lt;p&gt;A programming phone interview will be nearly identical to a in-person interview, so I'm addressing both here. The interviewer will talk with you about your background for a bit, then he will jump into programming questions. Personally, I have one go-to question that I use for both phone and in-person interviews. This allows me to judge candidates based on their relative performance, as well as to help those that might get off track a little. Other interviewers have a few questions that work through progressively. A little hint: if an interviewer asks you several different programming questions over the course of an interview, there's a good chance they're related. See if you can build on your previous answers.&lt;/p&gt;
&lt;p&gt;Whether you get one question or several, you will probably arrive at the final solution through an iterative process. Don't spend too much time perfecting the first code you write. Most likely, you've not taken something major into consideration, and are not yet headed in the right direction. It's better to quickly find any fundamental flaws in your code than to have a beautiful, but incorrect solution. As you progress towards a better solution, start thinking about the little stuff like error checking, corner cases, and typos.&lt;/p&gt;
&lt;p&gt;When you're done, give it a look over just to be sure. Then, talk your interviewer through the full execution path a few sample inputs. You may think your solution is clear to them -- and it probably is -- the sample input is not for them, it's for you. There are still bugs in your code. Nobody writes perfect code in interviews. You're talking to some stranger who put you on the spot, solving a problem you were just introduced to a few minutes ago, and your solution could determine whether or not you get the job. It's a stressful situation. So run a few sample inputs, find those bugs, and impress the interviewer with your thoroughness. I've interviewed so many people that showed a lot of promise, but fell flat at the end because they refused to test their code, despite several glaring errors.&lt;/p&gt;
&lt;p&gt;So what's the best way to prepare for all of this? &lt;a href="http://www.amazon.com/gp/product/047012167X?ie=UTF8&amp;amp;tag=daily0ee-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=047012167X"&gt;Programming Interviews Exposed&lt;/a&gt; is a good, if somewhat basic primer on coding interviews. Joel's Guerrilla Guide to Interviewing &lt;a href="http://www.joelonsoftware.com/articles/fog0000000073.html"&gt;v1.0&lt;/a&gt; and &lt;a href="http://www.joelonsoftware.com/articles/GuerrillaInterviewing3.html"&gt;v3.0&lt;/a&gt; have some sample questions that we actually used to ask during interviews. You can also search for &lt;a href="http://www.google.com/search?q=programming%20interviews"&gt;"programming interviews" on Google&lt;/a&gt; and find a lot of sample questions.&lt;/p&gt;
&lt;p&gt;All that will help, but there is one way that you can really improve your chances in an interview: Learn C.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Hey, I thought you guys didn't care what language the interview was in, what gives?!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;It's true, we don't really care what language you use for the interview, as long as it's common enough to be suitable for communication. If you want to use Java in an interview with me, go for it.&lt;/p&gt;
&lt;p&gt;But here's the catch: most other languages make things easier. While that's good for being more productive, it makes it harder for you to demonstrate your skills the interviewer. If you can sit down and reverse the words in a string, in place, all with pointer arithmetic, I'm going to start thinking you might have an idea of what you're doing. If you do it in Java and forget to mention that the language you chose makes it impossible to do it in constant memory, you just earned yourself one demerit.&lt;/p&gt;
&lt;p&gt;If you don't already have one, go find yourself a copy of &lt;a href="http://www.amazon.com/gp/product/0131103628?ie=UTF8&amp;amp;tag=daily0ee-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=0131103628"&gt;K &amp;amp; R&lt;/a&gt; and read it cover to cover. Once you're familiar with C, find a set of questions (like &lt;a href="http://courses.csail.mit.edu/iap/interview/materials.php"&gt;this one&lt;/a&gt; from an MIT course on programming interviews) and work out the solutions in C, using pointers. Treat it like production code, come up with weird inputs, test it all. Then find a CS buddy and challenge them to find bugs. You may not get to the point where you are comfortable doing a real interview in C, but the thought process and preparation will help you regardless.&lt;/p&gt;
&lt;p&gt;By being deliberate and methodical, and making a point of communicating your thought process to your interviewers as you go, you eliminate the common pitfalls and increase the chances that the interviewer will help nudge you in the right directions. And try to have some fun; after all, programming is what you love doing, right?&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Hicks-Wright?a=UBm0o2Rop58:ilc22aXBFAc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Hicks-Wright?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Hicks-Wright?a=UBm0o2Rop58:ilc22aXBFAc:l10I13IgW5I"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Hicks-Wright?i=UBm0o2Rop58:ilc22aXBFAc:l10I13IgW5I" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Hicks-Wright/~4/-AQnT4zWD2E" height="1" width="1"/&gt;</description><pubDate>Tue, 01 Sep 2009 12:00:00 +0000</pubDate><guid isPermaLink="false">/blog/how-to-get-a-job-at-fog-creek-part-3/</guid><feedburner:origLink>http://hicks-wright.net/blog/how-to-get-a-job-at-fog-creek-part-3/</feedburner:origLink></item><item><title>How to Get a Job at Fog Creek (and Other Selective Software Companies), Part 2: The Phone Screen
</title><link>http://feedproxy.google.com/~r/Hicks-Wright/~3/sTeQX6MY_S8/</link><description>&lt;p&gt;This is the second installment of a &lt;a href="http://hicks-wright.net/blog/how-to-get-a-job-at-fog-creek-part-1/"&gt;series&lt;/a&gt; on how to get a job at &lt;a href="http://fogcreek.com/"&gt;Fog Creek Software&lt;/a&gt; (and other selective software companies).&lt;/p&gt;
&lt;p&gt;So you've wowed us with your cover letter and resume. Your kernel work on OpenBSD shows us that you are passionate and hardcore. Despite marginal grades in college, you've shown us how incredibly bright you are. And we know you care about the job, as your cover letter was witty, well-written, and clearly intended for us.  Now it's time for a phone interview.&lt;/p&gt;
&lt;p&gt;We generally do two phone interviews. The first will be a design question. While you won't be writing any actual code for this interview, you will be working with some core concepts like algorithms and data structures. Our intent is to test your problem solving abilities given a problem and a set of constraints. To that end, the most important thing to remember is to talk through your thought process. Sitting silently for minutes on end is a great way to convince us that you are currently Googling the answer.&lt;/p&gt;
&lt;p&gt;Most interviewers will just have one big problem for you. The problem is always iterative; the intuitive solution will probably work, but it will have deficiencies, and you'll have to improve your answer. This is intentional, so don't get discouraged when the interviewer starts pointing out all the various problems. He is actually giving you hints about what to focus on to improve the solution. Even more importantly, don't get too stubborn about your ideas. It's a fine line. An interviewer might challenge a correct answer to make sure you can explain it well, and you should stick to your guns. But there's also a chance that you're wrong, and while there is no single correct answer to most of the questions, there are incorrect solutions, and more than likely, your interviewer has seen them before and is trying to help you see your mistake. In either case, review your answer with a critical eye. Work through the solution out loud, and see if you trip yourself up. Pay attention to the interviewer's reactions for a little extra help. If you get to the end and neither of you sees and problems, then you're probably on the right track.&lt;/p&gt;
&lt;p&gt;So let's say your interviewer asks you a question about designing a data structure to hold passenger information for a train scheduling program. The interviewer wants to know the best way to store how many passengers get on each train (denoted by its number) at each station (denoted by which mile on the track it's at) along each line (denoted by number), and on which day of which year. (Creating good interview questions is actually quite difficult. Please excuse this softball question.)&lt;/p&gt;
&lt;p&gt;Immediately, a multi-dimensional array jumps to mind. You put the train number on one axis, the stations' mileage on another, the line on another, and the date on the final axis, with the passenger count as the data. Piece of cake, all the data is in there, easily accessible by any metric in constant time. Done, right? Of course not. Your interviewer will probably ask you to find any problems  with your design. If you're quick, in this very poor example (seriously, I don't want to get any comments about it), you'll realize that you've created a very sparse matrix, which gets very big very fast, without actually holding all that much data.&lt;/p&gt;
&lt;p&gt;How can you improve upon it? Well, in your excitement about your brilliant solution you forgot to consider how the data is going to be used. Remember to ask questions and try to get all the details and specifications up front. In this case, you probably don't need to be able to access the data from every axis. That would allow you to use a hash table of hash tables of hash tables to keep constant time lookup while decreasing memory overhead.&lt;/p&gt;
&lt;p&gt;Of course, most people would probably get to relational databases faster than this (extraordinarily bad) example, but it is the type of iteration that you should be going through. If you happen to know, or stumble upon, the correct answer early in the question, the interviewer will usually be prepared to extend the question by asking about more specifics, corner cases, and enhanced features. Just keep working through each new part, building on your solution.&lt;/p&gt;
&lt;p&gt;If you keep the discussion alive, talking through the problem, and revisiting your solution trying to find any pitfalls, you'll help your interviewer understand your approach and increase the chances that you'll work your way to a good solution -- and another interview.&lt;/p&gt;
&lt;p&gt;Stay tuned for part three, which will cover programming interviews.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Hicks-Wright?a=YB8vKuWjXiQ:jHYKPaS6tWM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Hicks-Wright?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Hicks-Wright?a=YB8vKuWjXiQ:jHYKPaS6tWM:l10I13IgW5I"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Hicks-Wright?i=YB8vKuWjXiQ:jHYKPaS6tWM:l10I13IgW5I" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Hicks-Wright/~4/sTeQX6MY_S8" height="1" width="1"/&gt;</description><pubDate>Wed, 26 Aug 2009 12:00:00 +0000</pubDate><guid isPermaLink="false">/blog/how-to-get-a-job-at-fog-creek-part-2/</guid><feedburner:origLink>http://hicks-wright.net/blog/how-to-get-a-job-at-fog-creek-part-2/</feedburner:origLink></item><item><title>How to Get a Job at Fog Creek (and Other Selective Software Companies), Part 1: Résumés and Cover Letters
</title><link>http://feedproxy.google.com/~r/Hicks-Wright/~3/Tl-9S5JIZtY/</link><description>&lt;p&gt;This is the first installment of a series on how to get a job at &lt;a href="http://fogcreek.com/"&gt;Fog Creek Software&lt;/a&gt; (and other selective software companies).&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Disclaimer:&lt;/em&gt; This article is based on my own personal experiences and preferences in hiring and does not necessarily reflect Fog Creek's official policies. As such, it is meant as a helpful guide. Reading this article will not entitle you to a job. And of course: Fog Creek Software, Inc. does not discriminate in employment matters on the basis of race, color, religion, gender, national origin, age, military service eligibility, veteran status, sexual orientation, marital status, disability, or any other protected class.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;My &lt;a href="http://hicks-wright.net/blog/your-resume-wont-get-you-hired/"&gt;last&lt;/a&gt; &lt;a href="http://hicks-wright.net/blog/reddits-entitlement-complex/"&gt;two&lt;/a&gt; articles discussed, if somewhat briefly, why a cover letter is important in our hiring process at Fog Creek. The intent of those articles was to provide a peek into our hiring process; an idea of what we look for and why we find it useful when screening applications. I was surprised at the negativity of some of the responses. Perhaps I was too brief. In the interests of providing constructive criticism and some guidance to all of the commentors that &lt;a href="http://www.reddit.com/r/programming/comments/8yn6h/reddits_entitlement_complex/c0aujqy"&gt;voiced uncertainty&lt;/a&gt; about what to write in a cover letter, I'd like to start a series called "How to Get Hired at Fog Creek (and Other Selective Software Companies)".&lt;/p&gt;
&lt;p&gt;This is part one of the series: Résumés and Cover Letters.&lt;/p&gt;
&lt;p&gt;As I've mentioned several times now, our résumé screening process is broken down into seven areas, as outlined in &lt;a href="http://www.joelonsoftware.com/articles/SortingResumes.html"&gt;Joel's article&lt;/a&gt;: Passion, Pickiness, English, Brains, Selectivity, Hardcore, and Diversity. I'll talk about each, and what candidates can do to best demonstrate themselves in their applications.&lt;/p&gt;
&lt;p&gt;Also, before I begin, I have to say that I wouldn't be talking about any of this if I thought this information would allow people to game the system. I've spent almost four years using these guidelines to evaluate applicants, and I've come to believe that they probably are as objective as you can get with the information available at the beginning of an application process. To game the system, a candidate would have to &lt;a href="http://www.forbes.com/2007/02/07/leadership-resume-jobs-lead-careers-cx_ll_0207resume.html"&gt;outright lie&lt;/a&gt; about many facets of their background and experience. The only real problem I see with it is that a strong candidate who does not submit a quality application may be passed over. Hopefully this will help.&lt;/p&gt;
&lt;h2&gt;General Guidelines&lt;/h2&gt;
&lt;h3&gt;Résumé&lt;/h3&gt;
&lt;p&gt;Your résumé should be a concise summary of who you are as an applicant. It should have the following sections:&lt;/p&gt;
&lt;p&gt;Experience: List each of your past, relevant jobs. Include the company name, your title, your start and end dates, and a short list of responsibilities and accomplishments. Some people say that you should write in a particular style for this section. Just make sure you don't get too choppy. Full English sentences are almost always better.&lt;/p&gt;
&lt;p&gt;Education: For each college or university you've attended, list the school's name, location, dates of graduation or expected graduation, major, relevant minors, and GPA. Don't include high school.&lt;/p&gt;
&lt;p&gt;Extras: Software developers often list their competencies in various languages. While we don't screen for specific languages, it can be useful. Just make sure you're honest; if you say you are an expert in C, we'll expect you to show it in the interviews. Other extras might include such details as honors received, activities you participate in, or groups that you belong to. They may not affect a hiring decision much, but it'll help me get an idea of who you are.&lt;/p&gt;
&lt;p&gt;Try to keep your résumé to one page. If you have a lot of experience, going to two pages is acceptable. Three or more pages is overkill, and it usually means you're including things on your résumé that would be better off in your cover letter.&lt;/p&gt;
&lt;h3&gt;Cover Letter&lt;/h3&gt;
&lt;p&gt;Your cover letter is where you round out your application and fill in any holes that might be missing on your résumé. At the very least, it should explain which position you're applying for, why you're applying for it, and why you would be a good fit. You shouldn't suck up; instead, take the opportunity to clarify and elaborate on yourself as a candidate. I'll talk more about specifics below.&lt;/p&gt;
&lt;h3&gt;Application&lt;/h3&gt;
&lt;p&gt;If you're submitting your application via email, your cover letter should be the body of the email, with your résumé as an attachment. I personally don't have a problem with receiving résumés as Word documents, but some people do. If possible, send a PDF version. It's more universal, doesn't require that the recipient has the latest version of Office, and generally looks more professional. A link to a well-formatted HTML version is also OK, just don't attach an HTML file to an email.&lt;/p&gt;
&lt;h2&gt;Specific Criteria&lt;/h2&gt;
&lt;p&gt;We screen applications using the seven guidelines below. Generally, you need to fulfill five of the seven to pass the screening, but we provide plenty of latitude for applicants who show they are &lt;a href="http://www.joelonsoftware.com/items/2007/06/05.html"&gt;smart and get things done&lt;/a&gt;. In the four years I've been involved in hiring, I can only think of one or two applicants that have met all seven, so don't worry if you are missing a couple.&lt;/p&gt;
&lt;h3&gt;Passion&lt;/h3&gt;
&lt;p&gt;For me, passion is far and away the most important attribute a candidate can show. Every single developer at Fog Creek is immensely passionate about making software. Almost everyone is working on a side-project or two, learning new languages, contributing to &lt;a href="http://stackoverflow.com/"&gt;StackOverflow&lt;/a&gt;. I want to see that same sort of passion from candidates. This is probably where the cover letter is most beneficial. Use it as an opportunity to brag about what you've done, especially about things you did outside of work or school. Open source software, Flash games, your own blog software, anything. What if you were too busy at work to do side projects? Then tell me what had you so engrossed at work.&lt;/p&gt;
&lt;p&gt;Besides showing me that you're passionate about software, a good set of side projects show me that you know what you're doing, especially for younger, less experienced candidates. A long running side project is a &lt;a href="http://hicks-wright.net/blog/becoming-a-better-developer/"&gt;great way to learn about making real software&lt;/a&gt;. Most college and internship projects are too short to really learn about the full process of creating software. Write something, then spend at least a year maintaining and improving it. Even better, get other people to use it, fix bugs, and keep your users happy and coming back.&lt;/p&gt;
&lt;h3&gt;Pickiness&lt;/h3&gt;
&lt;p&gt;This is the other aspect where a well-written cover letter is really the only way to show that you're being picky about which companies you're applying to. We're not looking for you to suck up to us; in fact, sucking up is considered a negative. We just want to know that if we go through all the trouble of spending numerous developer hours screening and interviewing you, and thousands of dollars flying you out and putting you up in a nice Manhattan hotel, that you'll be likely to take the job if we offer you one. Hiring is expensive, and screening for pickiness helps us make sure that those dollars are spent most effectively.&lt;/p&gt;
&lt;p&gt;The easiest way to show that you're selective about who you apply to is to tell us a little bit about why you're applying. What about the company makes you want to work there? Is there a particular product that interests you, something about the company culture that makes you think it's the right place for you? Don't exaggerate; "I want to work for your company because it is the best company ever" will not get bonus points. Just be honest. I'm genuinely interested in why you're applying. Also, do some research on the company. I don't expect people to have read the entire Joel on Software archives, but you should have a basic idea of what products a company makes before applying.&lt;/p&gt;
&lt;p&gt;My previous articles got some push-back on this point. Some people told me that for them, a job is just a job, but that shouldn't be grounds for screening them out. Personally, I disagree. If you want to work for selective companies, it has to be about more than just the paycheck.&lt;/p&gt;
&lt;h3&gt;English&lt;/h3&gt;
&lt;p&gt;A lot of software development is about communication. We want to hire candidates with strong communication skills, specifically in English. The easiest way to score points here is to make sure your cover letter is written well. Proof-read it a few times, then get a friend to read it over. A well-written cover letter stands out, but a poorly written one stands out even more. Too many errors and you'll be immediately disqualified. There's nothing worse than getting an application that says "Great comunication skills".&lt;/p&gt;
&lt;h3&gt;Brains&lt;/h3&gt;
&lt;p&gt;You've got to be smart. The easiest way to show off your brains is to have had good grades in school. Just put your GPA on your resume and you're done. Good work!&lt;/p&gt;
&lt;p&gt;Of course, that's not the only way to demonstrate your intelligence. I know many incredibly smart people who just didn't do well in school. Maybe it just wasn't their thing, or they were working two jobs and didn't have time, or they dropped out to start their own company. If that's you, then you'll have to show me how bright you are. Do you solve really hard problems on a regular basis at work? Tell me about it. Did you apply to MENSA for the fun of it and get in? Impressive. Hold the record for creating the Sunday crossword puzzle with the fewest black squares? Awesome. Exceptional standardized test scores will even do in a pinch (though that might not be as widely accepted).&lt;/p&gt;
&lt;h3&gt;Selectivity&lt;/h3&gt;
&lt;p&gt;This is where we get lazy. See, we figure that if you've gotten into other selective institutions, then you're probably a pretty good applicant. It means you've been approved by a similar process. Your résumé is all you really need here. Just make sure you have an "Education" section. Even if you didn't finish college, the fact that you got in can only help.&lt;/p&gt;
&lt;h3&gt;Hardcore&lt;/h3&gt;
&lt;p&gt;What I mean by hardcore is that you've worked with a difficult technology, something that not every Bob, George, and Davie could grasp. Lower-level technologies are usually hardcore: things like significant experience in assembly, writing a graphics engine in C++, optimizing JVM load times in C. New technologies also count as hardcore. At one point Python and Ruby would have qualified. Now, Haskell and Erlang make the cut. (And of course, Lisp is always hardcore.) Usually the experience section of your résumé will cover this. A small side project or two aren't really enough to count (though you should still do them); you need several years' experience. This can be difficult for recent graduates, but remember, you don't need every one of these criteria.&lt;/p&gt;
&lt;h3&gt;Diversity&lt;/h3&gt;
&lt;p&gt;Now, before I go and get myself in trouble, I want to make it clear that I'm not talking about the usual definition of diversity that has to do with inherent characteristics of who you are. What we are looking for here is diveristy &lt;em&gt;of experience&lt;/em&gt;. Software development, at all levels, is about intense problem solving. Having a team with a diverse background of experience means having a team with more points of view.  Usually, the "Experience" section of your resume will be enough to fulfill this, though sometimes an applicant's extracurriculars will make a difference. Just show me that you're a well-rounded person.&lt;/p&gt;
&lt;h2&gt;Summary&lt;/h2&gt;
&lt;p&gt;Remember, you don't need to hit all seven of these, so don't try to make things up just to fulfill one area. Spend time on your strong suits. Better to meet four really well than stretch the truth to make five.&lt;/p&gt;
&lt;p&gt;Of course, not all companies use this particular screening process. Some may not even look at your cover letter. But spending the time to carefully craft your application will be well worth the effort either way. I find that the process of writing my cover letter helps me improve my résumé, and vice versa. For the companies that do read cover letters, you'll have a leg up, and for those that do not, having one certainly won't hurt you.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Update:&lt;/em&gt; The &lt;a href="http://hicks-wright.net/blog/how-to-get-a-job-at-fog-creek-part-2/"&gt;second article&lt;/a&gt; in the series is up!&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Hicks-Wright?a=M2L-6N8aKrg:COsqc8TDzr4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Hicks-Wright?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Hicks-Wright?a=M2L-6N8aKrg:COsqc8TDzr4:l10I13IgW5I"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Hicks-Wright?i=M2L-6N8aKrg:COsqc8TDzr4:l10I13IgW5I" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Hicks-Wright/~4/Tl-9S5JIZtY" height="1" width="1"/&gt;</description><pubDate>Wed, 15 Jul 2009 16:25:31 +0000</pubDate><guid isPermaLink="false">/blog/how-to-get-a-job-at-fog-creek-part-1/</guid><feedburner:origLink>http://hicks-wright.net/blog/how-to-get-a-job-at-fog-creek-part-1/</feedburner:origLink></item><item><title>Reddit&amp;#39;s Entitlement Complex
</title><link>http://feedproxy.google.com/~r/Hicks-Wright/~3/MUCNnwB9lbI/</link><description>&lt;p&gt;A couple of days ago, I posted a short article on the &lt;a href="http://hicks-wright.net/blog/your-resume-wont-get-you-hired/"&gt;importance of cover letters in Fog Creek's&lt;/a&gt; hiring process. I was hoping it would be an informative glimpse into how our resume screening works. I have to admit, I'm rather surprised and disappointed at the responses I got about it.&lt;/p&gt;
&lt;p&gt;Responses seemed to come from two different groups. One, which was mostly held over at &lt;a href="http://news.ycombinator.com/item?id=683514"&gt;Hacker News&lt;/a&gt;, generated good discussion on the value of cover letters in various hiring situations. These were the types of responses that I was hoping for. Some people agreed with me, some disagreed, and both gave good reasons why, which I found informative, and I'm hoping other people did as well.&lt;/p&gt;
&lt;p&gt;The other group, from the &lt;a href="http://www.reddit.com/r/programming/comments/8xfsr/your_r%C3%A9sum%C3%A9_wont_get_you_hired/"&gt;Programming Reddit&lt;/a&gt;, was far more hostile. Some people immediately assumed that I was writing the article because something was wrong with our process, that our &lt;a href="http://www.joelonsoftware.com/articles/SortingResumes.html"&gt;criteria&lt;/a&gt; are completely unreasonable, and that we should be able to determine everything we need to know from a Word-template resume. Some seemed to think that we were missing all the good candidates because of our criteria. The truth is, we've probably passed over a small few that we would have hired. But that's ok; it's better to err on the side of false negatives than false positives.&lt;/p&gt;
&lt;p&gt;Others told me that that instead of suggesting that applicants include a cover letter to increase their chances (which any career counselor will tell you is a good idea), that we should change our hiring process to make it easier for people to apply. For some companies, this might make sense; if they're just trying to find warm bodies to fill cubicles it would be exactly the right suggestion. But we like to be a bit more selective. And I'm personally motivated to be more selective. As a developer, I will often be working, directly or indirectly, with the people that I hire. That means the better developers we hire, the easier and more interesting my job will be. So if I have two candidates in front of me, one that included a cover letter about how he hand-rolled his own blog, comments, and feed aggregator for fun to learn a new framework, and another that just sends a resume with a one-liner in the body of the email, I'm going to be much more inclined to say "hire" for the guy with the cover letter, even if the second guy's resume is a bit better. Similarly, I'll be more likely to say "hire" to the Eagle Scout, triathlete developer than a candidate who bludgeons me with all of their "accomplishments". &lt;/p&gt;
&lt;p&gt;Another group of commentors seem to find writing cover letters too tedious to bother with. Instead, they'll find jobs through networking, or the jobs will just come to them. Personally, I would be highly dubious of a company that hires simply based on who you know. That seems like the kind of company where you end up working with the &lt;a href="http://thedailywtf.com/Articles/Nepotism-Trumps-Interview.aspx"&gt;boss's nephew who is "good with computers"&lt;/a&gt;. A company's hiring process is usually a pretty good indicator of what kind of talent it employs, and thus the kind of quality the company has. The higher the bar, the better the talent, the more interesting the company. I'm sure you can find exceptions, but that's all they are, exceptions to the rule.&lt;/p&gt;
&lt;p&gt;Both responses betray some sense of entitlement. They seem to think that a company should cater to its applicants, failing to understand the meaning of the word "apply". Sure, we should also &lt;a href="http://www.fogcreek.com/Jobs/Dev.html"&gt;advertise why the candidate would want to work for us&lt;/a&gt;, and we do. But good jobs are not hand outs. We want the best developers we can find, and we'll gladly pass over a few good ones to find one great one. As an employee, that's one of the best benefits a company could offer.&lt;/p&gt;
&lt;p&gt;Overall, I'm disappointed at the end result. But it did expose some interesting differences in communities. Hacker News took what was intended as helpful advice and created an interesting discussion around it, with good points and information on various views of hiring processes. Proggit, on the other hand, jumped into trolling and name-calling, and the community supported it. Personally, I don't really mind; I've been called an idiot on the internet before and I'm sure I will again. But I think an opportunity to have a good and relevant discussion was missed.&lt;/p&gt;
&lt;p&gt;This is becoming something of a series. &lt;s&gt;In a few days I'll have another post ready that goes into more detail about the criteria we use, and possibly suggest some things that candidates can do to show us that they fulfill them.&lt;/s&gt; &lt;a href="http://hicks-wright.net/blog/how-to-get-a-job-at-fog-creek-part-1/"&gt;Part One: Résumés and Cover Letters&lt;/a&gt; of "How to Get a Job at Fog Creek (and Other Selective Software Companies)" is up!&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Hicks-Wright?a=doM9pdq1qWQ:j81JhtsM2-w:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Hicks-Wright?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Hicks-Wright?a=doM9pdq1qWQ:j81JhtsM2-w:l10I13IgW5I"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Hicks-Wright?i=doM9pdq1qWQ:j81JhtsM2-w:l10I13IgW5I" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Hicks-Wright/~4/MUCNnwB9lbI" height="1" width="1"/&gt;</description><pubDate>Mon, 06 Jul 2009 12:00:00 +0000</pubDate><guid isPermaLink="false">/blog/reddits-entitlement-complex/</guid><feedburner:origLink>http://hicks-wright.net/blog/reddits-entitlement-complex/</feedburner:origLink></item><item><title>Your Résumé Won&amp;#39;t Get You Hired
</title><link>http://feedproxy.google.com/~r/Hicks-Wright/~3/fw1WCTP_ulk/</link><description>&lt;p&gt;I've been actively involved in the hiring process at work for over two years now. Résumé screens, phone interviews, coding phone interviews, lunch interviews, and technical in-person interviews, I get to do it all. Sometimes it's a minor annoyance that keeps me from coding, other times it's a nice break in the middle of a busy day.&lt;/p&gt;
&lt;p&gt;But recently I've become more and more frustrated with one section of the process, the résumé screens. The problem has to do with cover letters, or the lack thereof.&lt;/p&gt;
&lt;p&gt;In our system, a résumé screen has &lt;a href="http://www.joelonsoftware.com/articles/SortingResumes.html"&gt;seven different criteria&lt;/a&gt;, five of which must be met for the applicant to move on to the next stage. (Four is sometimes accepted, but only for obviously exceptional candidates who might not fit within the strict interpretation of the system.) Generally, a résumé can only satisfy three of those seven criteria. Sometimes we can stretch it and infer one or two more, but it's rare. So when an applicant doesn't send along a cover letter, I've got to work harder just to give them a fighting chance; it doesn't endear them to me.&lt;/p&gt;
&lt;p&gt;On the other hand, a good cover letter can show me that the applicant meets four of the five required criteria. Not only do they increase their odds in raw numbers, they also make my job easier, which can only help them.&lt;/p&gt;
&lt;p&gt;But not just any cover letter will do. It doesn't seem like it would be that obvious, but I can usually identify a "Dear [Company Name]," cover letter within a few seconds of opening it. It's better than no cover letter at all, but it almost automatically loses on two of the four criteria, meaning that the applicant has to nail the five remaining. They make my job harder, and the raw odds of them getting in are lowered.&lt;/p&gt;
&lt;p&gt;So what makes a good cover letter? There are a lot of resources out there, but for me it comes down to two simple things: tell me why you want to work at my company and tell me why you want to do the job you are applying for. Bonus points for &lt;em&gt;showing&lt;/em&gt; me those two things. That's the generic advice. Specifically for programmers, show me your previous work, your outside projects, the blog you wrote from scratch, etc.&lt;/p&gt;
&lt;p&gt;Take the time. You can still share a lot of the cover letter between companies. But make sure the company knows you care by writing a paragraph about what draws you to the company. Be specific, words like "interesting" and "exciting" don't add anything.&lt;/p&gt;
&lt;p&gt;And try to make my job easier.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Hicks-Wright?a=cj2WcmHAWTc:BjgXDX-o9sM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Hicks-Wright?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Hicks-Wright?a=cj2WcmHAWTc:BjgXDX-o9sM:l10I13IgW5I"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Hicks-Wright?i=cj2WcmHAWTc:BjgXDX-o9sM:l10I13IgW5I" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Hicks-Wright/~4/fw1WCTP_ulk" height="1" width="1"/&gt;</description><pubDate>Wed, 01 Jul 2009 17:57:39 +0000</pubDate><guid isPermaLink="false">/blog/your-resume-wont-get-you-hired/</guid><feedburner:origLink>http://hicks-wright.net/blog/your-resume-wont-get-you-hired/</feedburner:origLink></item><item><title>Fixing jQuery&amp;#39;s Opacity in Firefox
</title><link>http://feedproxy.google.com/~r/Hicks-Wright/~3/xOWx4l2QU-0/</link><description>&lt;p&gt;I think &lt;a href="http://jquery.com/"&gt;jQuery&lt;/a&gt; has uncovered a flaw in Firefox's rendering:&lt;/p&gt;

&lt;img src="http://media.hicks-wright.net/img/postbox1.png" alt="Postbox Half Opacity No Background" /&gt;

&lt;p&gt;This is a screenshot of &lt;a href="http://postbox-inc.com"&gt;Postbox&lt;/a&gt;'s website mid-transition. (Actually, I used &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/1843"&gt;Firebug&lt;/a&gt; to manually set opacity to 50%.) They're using &lt;code&gt;$.fadeOut()&lt;/code&gt; and &lt;code&gt;$.fadeIn()&lt;/code&gt; to transition between tabs on their features page. For some reason, Firefox has a lot of trouble with this, and ends up displaying strange green artifacts where there should be partially transparent text. (I'm completely guessing, but it looks to me like it might be related to ClearType.)&lt;/p&gt;
&lt;p&gt;Fortunately, it's easy to fix. The problem only occurs when the element being faded out or set to partial opacity has a transparent background, set explicitly via &lt;code&gt;background: transparent;&lt;/code&gt; or implicitly by not having a background defined at all. To fix, you just have to specify an appropriate background, often &lt;code&gt;background: white;&lt;/code&gt;. In this case:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;background: white url(http://postbox-inc.com/-/img/bg-content.png) bottom center repeat-x;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Does the trick:&lt;/p&gt;

&lt;img src="http://media.hicks-wright.net/img/postbox2.png" alt="Postbox Half Opacity" /&gt;

&lt;p&gt;Much better.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Update:&lt;/em&gt; Seems as if Safari 4 on Windows has the same problem, which is also fixed by setting the background. Chrome and, surprisingly, IE don't seem to have this problem.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Hicks-Wright?a=B4oWzXjHtGE:Uq1iWd8Gp3k:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Hicks-Wright?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Hicks-Wright?a=B4oWzXjHtGE:Uq1iWd8Gp3k:l10I13IgW5I"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Hicks-Wright?i=B4oWzXjHtGE:Uq1iWd8Gp3k:l10I13IgW5I" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Hicks-Wright/~4/xOWx4l2QU-0" height="1" width="1"/&gt;</description><pubDate>Tue, 02 Jun 2009 12:53:04 +0000</pubDate><guid isPermaLink="false">/blog/fixing-jquerys-opacity-in-firefox/</guid><feedburner:origLink>http://hicks-wright.net/blog/fixing-jquerys-opacity-in-firefox/</feedburner:origLink></item><item><title>My Language Features Are Your Libraries
</title><link>http://feedproxy.google.com/~r/Hicks-Wright/~3/_7e9HQn4RMQ/</link><description>&lt;p&gt;Today at lunch, a few of my colleagues got into a discussion of the merits of some of the new language features in the .Net family. Unfortunately, I was at the wrong end of the table to participate in the discussion, but it has spawned &lt;a href="http://blog.bitquabit.com/2009/05/20/your-language-features-are-my-libraries/"&gt;an article that I want to respond to&lt;/a&gt;. Go take a look at it, then come on back.&lt;/p&gt;
&lt;p&gt;To distill Ben's thesis, he's "annoyed that many of these 'cool' language features in C# are nothing more than libraries in Smalltalk". I can understand his annoyance. C# is being touted for having new, innovative language features while languages like Smalltalk get relatively little attention despite having similar features (though usually as a part of a library) for years.&lt;/p&gt;
&lt;p&gt;Ben goes on to show how C#'s ?? operator (which returns the left expression if that expression is not null, and otherwise returns the right expression) can be added very easily to Smalltalk.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I guess this is why, despite all of its faults, I have a lot of trouble giving up on Smalltalk. C#’s a good language, and .NET’s a good framework; but I cannot help but feel that this isn’t an issue of reinventing the wheel, as much as forgetting that we can provide programmers the tools to make their own types of locomotion.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Unfortunately, I think he is missing the bigger point. I do not disagree that giving programmers the ability to "make their own locomotion" is important. It is, in fact, completely necessary if you want a language to have useful libraries. But it is also a virtue when languages make it unnecessary to create a new five wheeled vehicle.&lt;/p&gt;
&lt;p&gt;And we've been there before. There was a time when language designers seemed to think that a good language implemented a minimal set of features. And from that mentality we got languages like C++, which couldn't even go as far as implementing a native string type. In fact, there are so many that people have created &lt;a href="http://www.and.org/vstr/comparison"&gt;comparison pages&lt;/a&gt; to help you figure out which one to use.&lt;/p&gt;
&lt;p&gt;So while I can understand his frustration that Smalltalk hasn't gotten the same attention as .Net for features that are trivially implemented, I feel that his argument is analogous to saying that I should not be excited about Python having a built in string type because C++ has always had the ability to &lt;em&gt;implement&lt;/em&gt; one.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Hicks-Wright?a=Niv0Elpo4ec:7iUozsjHKdQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Hicks-Wright?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Hicks-Wright?a=Niv0Elpo4ec:7iUozsjHKdQ:l10I13IgW5I"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Hicks-Wright?i=Niv0Elpo4ec:7iUozsjHKdQ:l10I13IgW5I" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Hicks-Wright/~4/_7e9HQn4RMQ" height="1" width="1"/&gt;</description><pubDate>Wed, 20 May 2009 15:25:56 +0000</pubDate><guid isPermaLink="false">/blog/my-language-features-are-your-libraries/</guid><feedburner:origLink>http://hicks-wright.net/blog/my-language-features-are-your-libraries/</feedburner:origLink></item><item><title>That&amp;#39;s a Wrap
</title><link>http://feedproxy.google.com/~r/Hicks-Wright/~3/7Prtt9hWVRQ/</link><description>&lt;p&gt;Last day of the year.  Must be time for a looking back/looking forward post.&lt;/p&gt;
&lt;h2&gt;Photography&lt;/h2&gt;
&lt;h3&gt;2008&lt;/h3&gt;
&lt;p&gt;The major theme of the year has been photography.  I started in 2007, but I feel that 2008 was the year I improved past being just a guy with a camera to a real photographer.  I shot my first wedding, got my first real photo job, got &lt;a href="http://www.inc.com/magazine/20081201/how-hard-could-it-be-my-style-of-servant-leadership.html"&gt;published in a national magazine&lt;/a&gt; and started a &lt;a href="http://tylergriffinphotography.com/blog/"&gt;daily photo blog&lt;/a&gt;.  I've acquired the equipment to shoot just about anything I'd like.&lt;/p&gt;
&lt;h3&gt;2009&lt;/h3&gt;
&lt;p&gt;I would like to continue improving my skills and building my own brand of photography.  I want to shoot at least two weddings this year (hopefully paid), and start selling prints of my artistic work.  I would also like to continue shooting fashion and see if I can get myself published again.&lt;/p&gt;
&lt;h2&gt;Personal Projects&lt;/h2&gt;
&lt;h3&gt;2008&lt;/h3&gt;
&lt;p&gt;The center of my personal projects in 2008 was the &lt;a href="http://ebaytoolbar.com/"&gt;eBay Toolbar&lt;/a&gt;.  I started it at Stanford for a d.school class and then let languish for almost a full year before reviving it.  Though the core functionality has not really changed, the internals have been completely refactored to make it comply with Mozilla's quality standards and make it easier to maintain.  I tried getting it added to &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/7657"&gt;addons.mozilla.org&lt;/a&gt;, but it's still an "experimental" plug-in.  Maybe I need more reviews (hint, hint) to get it promoted.&lt;/p&gt;
&lt;p&gt;I also participated, with &lt;a href="http://blog.bitquabit.com/"&gt;Benjamin&lt;/a&gt;, in the &lt;a href="http://www.djangodash.com/"&gt;DjangoDash&lt;/a&gt;, which our "Mercurial-based Code Review" tool won.  Hopefully, you should be hearing more about that in the coming months.&lt;/p&gt;

&lt;h3&gt;2009&lt;/h3&gt;

&lt;del&gt;Priority #1 is to get the ebay toolbar promoted for the simple reason that it's too hard to track how many people have it installed.  I know it's probably in the 10,000s, but I know my metrics are flawed.&lt;/del&gt;

&lt;p&gt;&lt;em&gt;UPDATE: Sent an email to the editors this morning, now it is approved!  Guess I should have made some noise earlier.&lt;/em&gt; (&lt;a href="https://addons.mozilla.org/en-US/firefox/addon/7657"&gt;link&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;Priority &lt;del&gt;#2&lt;/del&gt; #1 is to release a second project that I've been working on for a while.  The back end is pretty much complete, it's the front end that needs a lot of work.  I hope to be announcing this by Easter.&lt;/p&gt;
&lt;p&gt;I would also like to spend more time on open source projects.  I released the iTunes to Rhythmbox script in 2007; since then a few bugs have been reported that I never fixed because I'm back on Windows.  Now that I have the new computer, I might make the laptop dual-boot with Ubuntu again and get that fixed.&lt;/p&gt;
&lt;h2&gt;Work&lt;/h2&gt;
&lt;h3&gt;2008&lt;/h3&gt;
&lt;p&gt;I'm still working on &lt;a href="https://www.copilot.com/"&gt;Copilot&lt;/a&gt;, which I am still enjoying.  We started off the year by (finally) releasing free weekends.  Over the summer, the four of us on Copilot (plus an intern) got turfed to a temporary office in the new building to make space for the summer interns.  Joel gave us some rope and we used the time to help find and define Copilot's identity as the company within a company.  That helped us shift our workflow and get &lt;a href="http://blog.copilot.com/2008/10/copilot-oneclic.html"&gt;Copilot OneClick&lt;/a&gt; out the door.  Now we're back with the rest of the company and working hard to get another product out.&lt;/p&gt;
&lt;h3&gt;2009&lt;/h3&gt;
&lt;p&gt;We have a few ideas for Copilot that need to be implemented.  We'll do a pretty big refactoring to make maintenance easier and offer new products.  After that, it's unclear what we'll be working on.  We have a few ideas in the pipeline, some based on Copilot, some not, and we very well might end up working on both.&lt;/p&gt;
&lt;h2&gt;Social&lt;/h2&gt;
&lt;h3&gt;2008&lt;/h3&gt;
&lt;p&gt;This year I've found myself becoming more introverted, I think largely as a consequence of living in New York.  More and more, I'm finding large groups to be overwhelming; I'd much rather small gatherings of people.  As a result, I've not been going out as much to see what this city has to offer.&lt;/p&gt;
&lt;h3&gt;2009&lt;/h3&gt;
&lt;p&gt;One of my big goals is to get out more.  It'll require that I work on finding a balance between soothing my introvertedness and having my day consist of more than my apartment and work.  There are photography exhibits I want to see, restaurants I want to try, and parts of New York that I still haven't been to.&lt;/p&gt;
&lt;h2&gt;Exercise&lt;/h2&gt;
&lt;h3&gt;2008&lt;/h3&gt;
&lt;p&gt;I was not as active as I would have liked this year, but I did not do badly either.  For a period, Iris and I were going to the gym together at least once a week.  I also joined two soccer teams, one indoor, one outdoor.  I'd forgotten how much fun I have playing soccer.&lt;/p&gt;
&lt;h3&gt;2009&lt;/h3&gt;
&lt;p&gt;I would like to get back into endurance sports and complete at least one long distance race, preferably a triathlon.  Really that means I just need to find one online, sign up, and train.  I'll post back when I do that.&lt;/p&gt;
&lt;h2&gt;Finances&lt;/h2&gt;
&lt;h3&gt;2008&lt;/h3&gt;
&lt;p&gt;Like everyone, my 401k is hurting, but I've been able to save some money and start investing it as well.  I'm hoping that in a few years, the stock prices we see now will be looking like good deals.&lt;/p&gt;
&lt;h3&gt;2009&lt;/h3&gt;
&lt;p&gt;More of the same, hopefully.  I'd like to find a way to spend less on rent each month and I would like future photography purchases to be funded by photography-generated income, but everything else is pretty good right now.&lt;/p&gt;
&lt;h2&gt;Travel&lt;/h2&gt;
&lt;h3&gt;2008&lt;/h3&gt;
&lt;p&gt;This year I went to Florida with Iris, Italy with my family and Iris, Boston and Waterloo for work, and back home a couple of times.&lt;/p&gt;
&lt;h3&gt;2009&lt;/h3&gt;
&lt;p&gt;I want to do more skiing this year, which plans are in the works for.  I'd also like to do another big trip this summer, maybe Asia or Oceania.  I need to figure out a way to make travel photography pay for travel...&lt;/p&gt;

&amp;nbsp;

&lt;p&gt;That's about it; at least what I'll write about here.  It's been a good year, even despite the recent meltdown, and I think 2009 will also be a good year.  Happy New Year!&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Hicks-Wright?a=uSz_kdohzKM:Q2OI6z6PyMs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Hicks-Wright?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Hicks-Wright?a=uSz_kdohzKM:Q2OI6z6PyMs:l10I13IgW5I"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Hicks-Wright?i=uSz_kdohzKM:Q2OI6z6PyMs:l10I13IgW5I" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Hicks-Wright/~4/7Prtt9hWVRQ" height="1" width="1"/&gt;</description><pubDate>Wed, 31 Dec 2008 08:14:46 +0000</pubDate><guid isPermaLink="false">/blog/thats-a-wrap/</guid><feedburner:origLink>http://hicks-wright.net/blog/thats-a-wrap/</feedburner:origLink></item><item><title>Why QA is Important
</title><link>http://feedproxy.google.com/~r/Hicks-Wright/~3/lJNgwNLeaVE/</link><description>&lt;p&gt;
    &lt;a href="http://fogcreekstatus.typepad.com/.a/6a00e54ff8df878834010535f3ee29970c-pi" onclick="window.open(this.href,'_blank','scrollbars=no,resizable=yes,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false" target="_blank"&gt;&lt;img alt="Copilot" class="top" height="320" src="http://fogcreekstatus.typepad.com/.a/6a00e54ff8df878834010535f3ee29970c-320pi" style="" title="Copilot" width="289" /&gt;&lt;/a&gt; This is a diagram of most of the code bases within &lt;a href="https://www.copilot.com/"&gt;Copilot&lt;/a&gt;. Of the sixteen nodes displayed, we actively maintain fifteen. Of those, four integrate with other Fog Creek products, like &lt;a href="http://www.fogbugz.com/"&gt;FogBugz&lt;/a&gt;. In our most recent product release, Copilot OneClick, we heavily modified nine components and added two. It was the most complex release in Copilot history, yet it was the smoothest.&lt;/p&gt;
&lt;p&gt;
    Often when we&amp;#39;ve released new software, it happens in starts and fits. We would push something out only to realize that we&amp;#39;d forgotten a crucial config setting or had left in an extra bit of logging. Sometimes two new components would conflict with each other. To fix it, we would roll back to the previous working version, make our fixes, test them out on the staging server, and roll it back out.&lt;/p&gt;
&lt;p&gt;
    It sounds like we were being irresponsible, like we were pushing new code with many substantial bugs. The reality was that it was always something small and easy to overlook, which got amplified into a much larger problem by the complexity of the many interacting systems. Forget to put a default on a column in a new table and five different components could simultaneously crash.&lt;/p&gt;
&lt;p&gt;
    The problem was that Ben and I were too close too the code. With only two of us working on the project, there was never any way for us to test code without having worked on it, and that made us bad testers. We knew too much about how the application was supposed to work, which made it easy to overlook small but important details. But a couple of those small mistakes would quickly turn into an outright crisis.&lt;/p&gt;
&lt;p&gt;
    We had an outside QA analyst at the time who helped test Copilot&amp;#39;s user experience. Her input spurred changes that made Copilot much more intuitive and sleek. But she was usually testing individual components on internal servers, not the end-to-end system on production servers, except for the largest releases.&lt;/p&gt;
&lt;p&gt;
    Then in March our QA superstar, Alison, came on to the Copilot project. For the first time in three years we had a full-time, dedicated tester with enough time to do both targeted component testing as well as end-to-end system tests.&lt;/p&gt;
&lt;p&gt;
    At first I felt a little internal resistance to her feedback. I knew I wasn&amp;#39;t writing perfect code, but I didn&amp;#39;t really like someone else pointing it out to me. It took a little while to understand that she was not trying to prove me wrong, that our goals were actually identical. Soon, I began enjoying getting assigned cases from her. They were detailed reproductions of the bugs, making them easy &amp;ndash; and fun &amp;ndash; to fix.&lt;/p&gt;
&lt;p&gt;
    Soon we got into a nice pattern: I would typically work a couple hours later and kick off a build before I went home. Then, in the morning before I got in, she would start testing the new build. By the time I got in, I would have a list of things to fix, which helped me focus my time, making me a more efficient coder. As we got closer to releasing, we would push builds to the staging servers, and in a matter of hours before we knew, for sure, whether the build was ready to go to production.&lt;/p&gt;
&lt;p&gt;
    So did she find all of the bugs before we pushed to production? Not quite. We released OneClick with one significant bug: the installer could not be downloaded from Internet Explorer because IIS injects extra HTTP headers into HTTPS connections, which IE then has trouble understanding. She caught it on the production servers a little after we rolled out. The funny thing is, it&amp;#39;s a bug we&amp;#39;ve fixed before, just one line fix in ASP.Net:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Response.ClearHeaders();&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;
    So why did we miss it before going live? Because our staging server doesn&amp;#39;t use HTTPS; it&amp;#39;s not close enough to the production server. It wasn&amp;#39;t possible for her to find that given the testing environment. But that was it. Really. Nine components significantly modified, two new, and only one line needed to be changed in all of it. We didn&amp;#39;t even need to cut a new build, we just pushed out one patched file and all was fixed.&lt;/p&gt;
&lt;p&gt;
    Instead of the panic and worry that we&amp;#39;d experienced before, now pushing new code is a calm, steady process. We can be confident in the quality of the code. They key was to get another pair of eyes on the product, someone who could ask the questions that we didn&amp;#39;t think of while coding.&lt;/p&gt;
&lt;p&gt;
    Cross-posted at &lt;a href="http://blog.copilot.com/2008/11/this-is-a-diagram-of-most-of-the-code-bases-within-copilot-of-the-sixteen-nodes-displayed-we-actively-maintain-fifteen.html"&gt;&lt;span class="linkification-ext"&gt;http://blog.copilot.com/&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Hicks-Wright?a=fhZewqbCgu8:2yPWBjIDlUg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Hicks-Wright?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Hicks-Wright?a=fhZewqbCgu8:2yPWBjIDlUg:l10I13IgW5I"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Hicks-Wright?i=fhZewqbCgu8:2yPWBjIDlUg:l10I13IgW5I" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Hicks-Wright/~4/lJNgwNLeaVE" height="1" width="1"/&gt;</description><pubDate>Mon, 24 Nov 2008 13:19:40 +0000</pubDate><guid isPermaLink="false">/blog/why-qa-important/</guid><feedburner:origLink>http://hicks-wright.net/blog/why-qa-important/</feedburner:origLink></item><item><title>This is how Crazy the Market is Today
</title><link>http://feedproxy.google.com/~r/Hicks-Wright/~3/8maq-vy7-0U/</link><description>&lt;p&gt;From my dad:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;If you had purchased $1000 of Delta Air Lines stock one year ago, you would have $49 left. With Fannie Mae, you'd have $2.50 left of the original $1000. With AIG, you'd have less than $15 left. But if you had purchased $1000 worth of beer one year ago, drunk all the beer, then turned in the cans for the recycling refund, you'd have $214 cash. Based on the above, the best current investment advice is to drink heavily. It reduces anxiety too. Even better to buy in a state without a deposit and then return them into a state with a deposit refund.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I think he might be on to something...&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Hicks-Wright?a=kOkEZqwN_yQ:-EcfGYZEYnQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Hicks-Wright?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Hicks-Wright?a=kOkEZqwN_yQ:-EcfGYZEYnQ:l10I13IgW5I"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Hicks-Wright?i=kOkEZqwN_yQ:-EcfGYZEYnQ:l10I13IgW5I" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Hicks-Wright/~4/8maq-vy7-0U" height="1" width="1"/&gt;</description><pubDate>Fri, 21 Nov 2008 09:57:51 +0000</pubDate><guid isPermaLink="false">/blog/this-is-how-crazy-the-market-is-today/</guid><feedburner:origLink>http://hicks-wright.net/blog/this-is-how-crazy-the-market-is-today/</feedburner:origLink></item><item><title>Pay It Forward
</title><link>http://feedproxy.google.com/~r/Hicks-Wright/~3/_44yWemsGAM/</link><description>&lt;p&gt;A while back, &lt;a href="http://ultrafineflair.blogspot.com/"&gt;Gillian&lt;/a&gt; posted a &lt;a href="http://ultrafineflair.blogspot.com/2008/09/pay-it-forward.html"&gt;Pay It Forward chain&lt;/a&gt; on her blog after receiving a box of delicious looking caramels.  Just as the rules stipulated, she payed the favor forward to the first three people to comment on the post.  I was the first.  On Friday, my treats arrived:
&lt;a href="http://www.flickr.com/photos/hickswright/3040277234/" title="Pay It Forward by hickswright, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3019/3040277234_58b0e76dd0_b.jpg" width="710" height="471" alt="Pay It Forward" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;In the paper &lt;strike&gt;are&lt;/strike&gt; were three large, soft, wonderful chocolate chip cookies from the &lt;a href="http://www.nytimes.com/2008/07/09/dining/091crex.html"&gt;New York Times recipe&lt;/a&gt;, and in the jar a stack of &lt;a href="http://www.marthastewart.com/recipe/thin-and-crisp-chocolate-chip-cookies"&gt;Martha Stewart's Thin &amp;amp; Crisp&amp;reg;&lt;/a&gt; chocolate chip cookies.  It was a wonderful surprise and a great way to start my weekend!&lt;/p&gt;
&lt;p&gt;So now it's my turn.  The official rules are:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I agree to send something fun, cute, and nice to the first 3 blog owners who post a comment on this entry. In turn, those three will post this information and pick 3 people they want to send something to and so on. &lt;strike&gt;Unfortunately, due to postage costs, I can only pay it forward within the United States.&lt;/strike&gt; If you are interested in participating, be one of the first 3 blog owners to leave a comment!&lt;/p&gt;
&lt;p&gt;You have to promise that you will then post about this on your blog, link to me, and then send something to the first three people who comment on your blog so that this continues. When the first three have commented I will email you a request for your shipping address and I will send out something that I hope will make you smile!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Good luck!&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Hicks-Wright?a=SJcpm2xSvQY:xeWKuqUljTE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Hicks-Wright?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Hicks-Wright?a=SJcpm2xSvQY:xeWKuqUljTE:l10I13IgW5I"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Hicks-Wright?i=SJcpm2xSvQY:xeWKuqUljTE:l10I13IgW5I" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Hicks-Wright/~4/_44yWemsGAM" height="1" width="1"/&gt;</description><pubDate>Mon, 17 Nov 2008 23:20:58 +0000</pubDate><guid isPermaLink="false">/blog/pay-it-forward/</guid><feedburner:origLink>http://hicks-wright.net/blog/pay-it-forward/</feedburner:origLink></item><item><title>Photo Blog
</title><link>http://feedproxy.google.com/~r/Hicks-Wright/~3/iYWN6HYBFDg/</link><description>&lt;p&gt;I just finished putting together my new &lt;a href="http://tylergriffinphotography.com/blog/"&gt;photoblog&lt;/a&gt;, check it out!  I'm planning on publishing 1 photo per day.  I also will be adding an option to buy prints or downloads.&lt;/p&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Hicks-Wright?a=QH4N701j2TE:br1e_gLQTqE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Hicks-Wright?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Hicks-Wright?a=QH4N701j2TE:br1e_gLQTqE:l10I13IgW5I"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Hicks-Wright?i=QH4N701j2TE:br1e_gLQTqE:l10I13IgW5I" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Hicks-Wright/~4/iYWN6HYBFDg" height="1" width="1"/&gt;</description><pubDate>Sun, 09 Nov 2008 14:56:20 +0000</pubDate><guid isPermaLink="false">/blog/photo-blog/</guid><feedburner:origLink>http://hicks-wright.net/blog/photo-blog/</feedburner:origLink></item><item><title>Election Day
</title><link>http://feedproxy.google.com/~r/Hicks-Wright/~3/nOywYsth400/</link><description>&lt;h2&gt;GO VOTE!&lt;/h2&gt;

&lt;img src="http://media.hicks-wright.net/img/electoralmap.png" alt="Electoral Map" /&gt;

&lt;p&gt;Source: &lt;a href="http://www.cnn.com/ELECTION/2008/calculator/"&gt;CNN&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Hicks-Wright?a=vOAKhFqjxfo:kiUyErrhuxQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Hicks-Wright?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Hicks-Wright?a=vOAKhFqjxfo:kiUyErrhuxQ:l10I13IgW5I"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Hicks-Wright?i=vOAKhFqjxfo:kiUyErrhuxQ:l10I13IgW5I" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Hicks-Wright/~4/nOywYsth400" height="1" width="1"/&gt;</description><pubDate>Tue, 04 Nov 2008 13:44:38 +0000</pubDate><guid isPermaLink="false">/blog/election-day/</guid><feedburner:origLink>http://hicks-wright.net/blog/election-day/</feedburner:origLink></item><item><title>What Happens When Reddit Gets a Little Too Safe?
</title><link>http://feedproxy.google.com/~r/Hicks-Wright/~3/75YyWWrzdjo/</link><description>&lt;img src="http://media.hicks-wright.net/img/reddit.png" alt="Aliens!" width="710" /&gt;

&lt;p&gt;Looks like they got a little too careful.  (First observed at 5:50pm EST)&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Hicks-Wright?a=ylaCW7LE_OE:YrJju82Iebk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Hicks-Wright?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Hicks-Wright?a=ylaCW7LE_OE:YrJju82Iebk:l10I13IgW5I"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Hicks-Wright?i=ylaCW7LE_OE:YrJju82Iebk:l10I13IgW5I" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Hicks-Wright/~4/75YyWWrzdjo" height="1" width="1"/&gt;</description><pubDate>Thu, 23 Oct 2008 17:50:07 +0000</pubDate><guid isPermaLink="false">/blog/what-happens-when-reddit-gets-a-little-too-safe/</guid><feedburner:origLink>http://hicks-wright.net/blog/what-happens-when-reddit-gets-a-little-too-safe/</feedburner:origLink></item><item><title>Fixing iGoogle with User Styles
</title><link>http://feedproxy.google.com/~r/Hicks-Wright/~3/AC5JbK7kJOg/</link><description>&lt;p&gt;Recently, Google &lt;a href="http://googleblog.blogspot.com/2008/10/whats-new-with-igoogle.html"&gt;updated their iGoogle Homepage&lt;/a&gt;.  As happens with most UI changes, people were not terribly pleased with it.  One of the main complains, and my biggest problem with it, was that it added a tab sidebar that ate up screen real estate.&lt;/p&gt;

&lt;img src="http://media.hicks-wright.net/img/iGoogle.png" alt="iGoogle" /&gt;

&lt;p&gt;It is useful if you have many tabs for your homepage, but since I only use one tab, I find it obnoxious.  Worse, there is no setting to hide it automatically.  Fortunately, &lt;a href="http://lifehacker.com/5065213/igoogle-sidebar-collapse-removes-the-new-igoogle-sidebar"&gt;Lifehacker quickly came through&lt;/a&gt; with a &lt;a href="http://userscripts.org/scripts/show/30414"&gt;Greasemonkey script&lt;/a&gt;.  It works, but because it uses javascript, there's always a second between page load and script execution where the page still looks off.&lt;/p&gt;
&lt;p&gt;So I decided to fix it myself using Firefox's user styles.  First, I installed &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/2108"&gt;Stylish&lt;/a&gt; to make editing user styles easier.  Then I added the following style:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;@-moz-document url(http://www.google.com/),
               url-prefix(http://www.google.com/ig),
               url-prefix(http://www.google.com/webhp) 
{
    #doc3 td#col1, #footerwrap { display: none; }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;#doc3 td#col1&lt;/code&gt; is the table column (Gasp! Table layout?!  Really Google?) that holds the list of tabs.  Hiding it is all you need to get rid of it.  There will be a little weirdness at the bottom left over from the curve at the bottom of the column.  Hiding &lt;code&gt;#footerwrap&lt;/code&gt; will get rid of that, as well as remove the footer, making the page shorter.&lt;/p&gt;

&lt;img src="http://media.hicks-wright.net/img/iGoogle2.png" alt="iGoogle" /&gt;

&lt;p&gt;Now your iGoogle can take up the whole width of the page.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Hicks-Wright?a=5e8-7GEtJYw:rXYgjIReMOA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Hicks-Wright?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Hicks-Wright?a=5e8-7GEtJYw:rXYgjIReMOA:l10I13IgW5I"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Hicks-Wright?i=5e8-7GEtJYw:rXYgjIReMOA:l10I13IgW5I" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Hicks-Wright/~4/AC5JbK7kJOg" height="1" width="1"/&gt;</description><pubDate>Tue, 21 Oct 2008 08:31:31 +0000</pubDate><guid isPermaLink="false">/blog/fixing-igoogle-with-user-styles/</guid><feedburner:origLink>http://hicks-wright.net/blog/fixing-igoogle-with-user-styles/</feedburner:origLink></item><item><title>Democrats = Bulls?
</title><link>http://feedproxy.google.com/~r/Hicks-Wright/~3/Fo2Yzhyclvo/</link><description>&lt;p&gt;The New York Times has an &lt;a href="http://www.nytimes.com/interactive/2008/10/14/opinion/20081014_OPCHART.html"&gt;interesting piece&lt;/a&gt; on investing under the two main parties in America:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;As of Friday, a $10,000 investment in the S.&amp;amp; P. stock market index* would have grown to $11,733 if invested under Republican presidents only, although that would be $51,211 if we exclude Herbert Hoover’s presidency during the Great Depression. Invested under Democratic presidents only, $10,000 would have grown to $300,671 at a compound rate of 8.9 percent over nearly 40 years.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Looks like Wall Street should be pulling for Obama.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Hicks-Wright?a=zuPQg5pc6KQ:ZhRLUGynU6k:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Hicks-Wright?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Hicks-Wright?a=zuPQg5pc6KQ:ZhRLUGynU6k:l10I13IgW5I"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Hicks-Wright?i=zuPQg5pc6KQ:ZhRLUGynU6k:l10I13IgW5I" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Hicks-Wright/~4/Fo2Yzhyclvo" height="1" width="1"/&gt;</description><pubDate>Mon, 20 Oct 2008 21:13:56 +0000</pubDate><guid isPermaLink="false">/blog/democrats-bulls/</guid><feedburner:origLink>http://hicks-wright.net/blog/democrats-bulls/</feedburner:origLink></item><item><title>Copilot OneClick!
</title><link>http://feedproxy.google.com/~r/Hicks-Wright/~3/-kBqWUZM0zE/</link><description>&lt;p&gt;What started six weeks ago as a &lt;a href="http://sethgodin.typepad.com/seths_blog/2008/08/like-your-hair.html"&gt;Seth Godin inspired&lt;/a&gt; three week code sprint ended today as we shipped &lt;a href="https://www.copilot.com/"&gt;Copilot Oneclick&lt;/a&gt;.  OneClick makes it easier to help the people you help most often by installing a client on their machine.  You can also install it on your home machine and disable the confirmation dialog to allow remote access as long as the computer is logged in.&lt;/p&gt;
&lt;p&gt;More on the &lt;a href="http://blog.copilot.com/2008/10/copilot-oneclic.html"&gt;Copilot Blog&lt;/a&gt;.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Hicks-Wright?a=DN9HcTKGGyI:ohw7hlT9xyQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Hicks-Wright?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Hicks-Wright?a=DN9HcTKGGyI:ohw7hlT9xyQ:l10I13IgW5I"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Hicks-Wright?i=DN9HcTKGGyI:ohw7hlT9xyQ:l10I13IgW5I" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Hicks-Wright/~4/-kBqWUZM0zE" height="1" width="1"/&gt;</description><pubDate>Tue, 07 Oct 2008 18:00:02 +0000</pubDate><guid isPermaLink="false">/blog/copilot-oneclick/</guid><feedburner:origLink>http://hicks-wright.net/blog/copilot-oneclick/</feedburner:origLink></item><item><title>Double Extra Latte
</title><link>http://feedproxy.google.com/~r/Hicks-Wright/~3/xAiOQ7SUM38/</link><description>&lt;p&gt;&lt;a href="http://www.flickr.com/photos/hickswright/2888113224/" title="What do you call a latte with no coffee? by hickswright, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3236/2888113224_47f07a73e3.jpg" width="332" height="500" alt="What do you call a latte with no coffee?" class="top right"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;What do you call a latte with no coffee?  Steamed milk.&lt;/p&gt;
&lt;p&gt;Yup, that's right, I paid $3.50 to the cute European girl behind the counter of my local superdeli for a cup of steamed milk.  Of course, when I bought it, it was too hot to drink, so I waited until I got up to my office to take a sip.&lt;/p&gt;
&lt;p&gt;"Hmm...", I thought to myself, "this coffee is really mild", not wanting to believe that someone could forget the defining ingredient in a recipe that only calls for two ingredients.  But, indeed, she had.&lt;/p&gt;
&lt;p&gt;This got me to thinking.  What makes me willing to pay $3.50 for hot milk mixed with flavored water?  I can buy a gallon of milk for $3.50 and brew dozens of pots of coffee for a similar price.&lt;/p&gt;
&lt;p&gt;The answer is convenience, pure and simple.  Buying coffee means that I don't have to clean the pot, make the coffee, heat the milk, froth the milk (with a whisk, no less), combine the two, and then clean it all up when I'm done.  Instead, I just get on the train, make a quick detour on my way from the subway, chit-chat with the cute European girls, and get to my desk with a nice hot cup of coffee.&lt;/p&gt;
&lt;p&gt;But all the convenience in the world isn't worth anything if you can't execute on the basics.  I know I could probably go down right now and complain  and I would get a replacement (assuming they have any sense of customer service).  But it's too late.  I probably won't go back to get my coffee there.  I will tell other people about my bad experience.  There are some times that you get only one strike before you lose someone's business.&lt;/p&gt;
&lt;p&gt;What's worse, is they have no way to know that I am unhappy.  I don't want to go to the effort to tell them they messed up, so they can't intervene in the situation to make me feel better about my experience by giving me a free replacement.&lt;/p&gt;
&lt;p&gt;So why am I blathering on about getting stiffed on one little coffee?  Because it occurred to me that the coffee business is very much like &lt;a href="https://www.copilot.com/"&gt;Copilot&lt;/a&gt;.  Copilot makes it easy to do remote tech support.  You don't have to have physical access to the machine, wait around while your aunt finds the password to her wireless router, set up port forwarding, change her network to static IPs so DHCP won't break the port forwarding, install VNC, go to Starbucks to test it (where you'll undoubtedly get that $3.50 cup of coffee), and then clean it all up when you're done.  Anyone can do all that, but few people want to.&lt;/p&gt;
&lt;p&gt;But if Copilot's value is convenience, then it is critical that we do it right the first time.&lt;/p&gt;
&lt;p&gt;We work hard to do just that.  We &lt;a href="http://en.wikipedia.org/wiki/Eating_one%27s_own_dog_food"&gt;dog food&lt;/a&gt; extensively:  we all use it to help our friends and family, and Fog Creek uses it daily to support &lt;a href="http://www.fogbugz.com/"&gt;FogBugz&lt;/a&gt;, so if there's ever a problem, we know about it first, before it impacts our customers.  We have crash reporting and extensive logging, so if a problem does reach our customers, we know about it promptly and can proactively contact those users.  And if all else fails, we make it as easy as possible for users to contact us by putting our &lt;a href="https://www.copilot.com/support/"&gt;email address and phone number right on the website&lt;/a&gt; so we can make things right.&lt;/p&gt;
&lt;p&gt;Now we just need cute European girls...&lt;/p&gt;
&lt;p&gt;Cross posted at &lt;a href="http://blog.copilot.com/2008/09/double-extra-la.html"&gt;blog.copilot.com&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Hicks-Wright?a=F2Xje3FZuOI:SpFfmlFCbLg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Hicks-Wright?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Hicks-Wright?a=F2Xje3FZuOI:SpFfmlFCbLg:l10I13IgW5I"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Hicks-Wright?i=F2Xje3FZuOI:SpFfmlFCbLg:l10I13IgW5I" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Hicks-Wright/~4/xAiOQ7SUM38" height="1" width="1"/&gt;</description><pubDate>Thu, 25 Sep 2008 13:38:24 +0000</pubDate><guid isPermaLink="false">/blog/extra-latte/</guid><feedburner:origLink>http://hicks-wright.net/blog/extra-latte/</feedburner:origLink></item><item><title>Google Transit NYC
</title><link>http://feedproxy.google.com/~r/Hicks-Wright/~3/5UN9D6yHql8/</link><description>&lt;p&gt;Google released &lt;a href="http://www.google.com/transit"&gt;Google Transit&lt;/a&gt; for New York today.  It's pretty much what you would expect from the project, which started over 3 years ago for Portland, Oregon.  Here's a sample from a &lt;a href="http://maps.google.com/maps?f=d&amp;saddr=151+W+34th+St,+New+York,+NY+10001+(Macy%27s+East)&amp;daddr=1000+3rd+Ave.,+New+York,+NY+10022+(Bloomingdale%27s)&amp;hl=en&amp;geocode=FWnNbQIdRwOX-yHlR1Qon-a2AA%3BCZFA2rtxIAlNFSj6bQId_FyX-yGKozu_m9i8LA&amp;mra=pe&amp;mrcr=0&amp;dirflg=r&amp;date=09%2F23%2F08&amp;time=7:36am&amp;ttype=dep&amp;noexp=0&amp;noal=0&amp;sort=&amp;sll=40.742185,-73.982878&amp;sspn=0.055926,0.060511&amp;ie=UTF8&amp;z=15&amp;start=0"&gt;recent (fictional) shopping trip&lt;/a&gt;.  Kind of an obvious feature, but nice to finally have.  I wonder how &lt;a href="http://www.hopstop.com/"&gt;HopStop&lt;/a&gt; will react.&lt;/p&gt;
&lt;p&gt;Unfortunately, it's not on the iPhone version of Google Maps yet, which would require a full software update since it's baked into the system.  Hopefully they get to that soon.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Hicks-Wright?a=TC7L89DitBY:ZVVbthwcaEo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Hicks-Wright?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Hicks-Wright?a=TC7L89DitBY:ZVVbthwcaEo:l10I13IgW5I"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Hicks-Wright?i=TC7L89DitBY:ZVVbthwcaEo:l10I13IgW5I" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Hicks-Wright/~4/5UN9D6yHql8" height="1" width="1"/&gt;</description><pubDate>Tue, 23 Sep 2008 07:40:04 +0000</pubDate><guid isPermaLink="false">/blog/google-transit-nyc/</guid><feedburner:origLink>http://hicks-wright.net/blog/google-transit-nyc/</feedburner:origLink></item><item><title>Chairs and a DIY Boom
</title><link>http://feedproxy.google.com/~r/Hicks-Wright/~3/3Lv9ZrvqbNU/</link><description>&lt;p&gt;&lt;a href="http://www.flickr.com/photos/hickswright/2802436992/" title="Chairs by hickswright, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3135/2802436992_f4611db0cf.jpg" width="500" height="258" alt="Chairs" class="top" /&gt;&lt;/a&gt;
As &lt;a href="http://www.joelonsoftware.com/items/2008/06/02.html"&gt;Joel mentioned&lt;/a&gt; a few weeks ago, we're currently in the process of moving to a new office.  As our influx of interns for the summer filled the current office past its capacity,  I and the rest of the &lt;a href="http://www.copilot.com/"&gt;Copilot&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;team moved down to a temporary space in the new building.  For the summer, we've been like our own little start up, complete with Nerf weapons (more to come on that), cardboard cutouts of T-Rex and Darth Vader, and cowboy posters.&lt;/p&gt;
&lt;p&gt;The one difference is that we are also acting as a warehouse for some of the new furniture.  We have stacks and stacks of chairs, an empty minifridge, two shipping palettes worth of desks, and a family of bookshelves, all in various states of unpacking.&lt;/p&gt;
&lt;p&gt;Having all this designer furniture around, I just had to make a photo of it.  I especially loved these chairs, their bright colors and complex legs.  So after work, I walked around the office, chair in hand, until I found a suitible studio: our two glass Ikea lunch tables, set end-to-end.  I wanted the lighting to be simple, one big, soft light directly overhead and one on the background for separation, much like the &lt;a href="http://strobist.blogspot.com/2008/05/interview-platon-and-putin.html"&gt;Platon's Putin shot&lt;/a&gt; (minus the decidedly evil looking subject).&lt;/p&gt;
&lt;p&gt;The only problem was, I didn't have a way to get the light directly overhead.  I could get it close, but I could see in the pictures that it was still coming from an angle.  I needed a boom.  But I do not own a boom; all I had with me was two lightweight light stands, two umbrellas, a clamp, two ball bungies, and some gaffer's tape.  I quickly checked the &lt;a href="http://en.wikipedia.org/wiki/List_of_problems_solved_by_MacGyver"&gt;MacGyver handbook&lt;/a&gt;, but it seems he'd never run into this problem.  I'd have to do it on my own.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.flickr.com/photos/hickswright/2803313768/" title="Chairs Setup by hickswright, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3296/2803313768_020a1f2237_m.jpg" width="159" height="240" alt="Chairs Setup" class="top" /&gt;&lt;/a&gt;
&lt;a href="http://www.flickr.com/photos/hickswright/2802467305/" title="Chairs Setup by hickswright, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3074/2802467305_33bb793ba0_m.jpg" width="159" height="240" alt="Chairs Setup" class="top right" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I first put the clamp on the top of one of the stands (we'll call it the "stand"), making sure the stud was as far into the clamp as possible, to make sure it couldn't rotate and fall off.  If you look closely, you can see it's well past the hinge point. &lt;/p&gt;
&lt;p&gt;Next, I lay the light stand with the umbrella (we'll call it the "boom arm") across the back end of the clamp, using one of the knobs to make sure it didn't slip backwards.  At this point, the top side of the "boom arm" was much heavier than the bottom, and wanted to fall over.  To fix this, I used two ball bungies, one end on a leg of the "boom arm", and the other on a knob on the "stand" to provide tension.&lt;/p&gt;

&lt;br style="clear:both;" /&gt;

&lt;p&gt;Another important thing to note, especially since the photos don't show it well: the legs on the "stand" are nearly flat to the ground, so they're nice and wide.  Additionally, I made sure to keep one of the legs pointed in the same direction as the "boom arm" at all times.  This kept it from falling over, since at no point was this rig balanced correctly.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.flickr.com/photos/hickswright/2802465575/" title="Chairs Setup by hickswright, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3137/2802465575_a152d11826.jpg" width="500" height="332" alt="Chairs Setup" class="top right" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;In the final setup shot, you can see how everything was positioned:  On the boom arm is a shoot-through umbrella with an SB-800 on 1/8 power, positioned directly over the chair.  In the bottom right is the background light, a Vivitar 285HV with a gridspot on 1/16.  Camera was at 1/160 at f/8.0 with ISO 200 to kill the ambient.&lt;/p&gt;
&lt;p&gt;In post, I just cleaned up smudges on the table and removed the seam between the two tables, as it was distracting.  To make the triptych, I just resized the images slightly (I wasn't using a tripod, so there were some slight differences) so they all matched up.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Hicks-Wright?a=VPEMf0ZF5MU:Kk0SQoySN4c:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Hicks-Wright?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Hicks-Wright?a=VPEMf0ZF5MU:Kk0SQoySN4c:l10I13IgW5I"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Hicks-Wright?i=VPEMf0ZF5MU:Kk0SQoySN4c:l10I13IgW5I" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Hicks-Wright/~4/3Lv9ZrvqbNU" height="1" width="1"/&gt;</description><pubDate>Wed, 27 Aug 2008 10:23:49 +0000</pubDate><guid isPermaLink="false">/blog/chairs-and-a-diy-boom/</guid><feedburner:origLink>http://hicks-wright.net/blog/chairs-and-a-diy-boom/</feedburner:origLink></item><item><title>Italy
</title><link>http://feedproxy.google.com/~r/Hicks-Wright/~3/4eiKYXQ2-4A/</link><description>&lt;p&gt;Quick update:&lt;/p&gt;
&lt;p&gt;Today is our 7th day in Italy.  We started in Riomaggiore, one of the five towns of &lt;a href="http://en.wikipedia.org/wiki/Cinque_Terre"&gt;Cinque Terre&lt;/a&gt;.  On Monday, we hiked through the towns to Monterosso, where we cooled off after the hot hike with a swim.&lt;/p&gt;
&lt;p&gt;Tuesday was another hike, this time south to &lt;a href="http://en.wikipedia.org/wiki/Porto_Venere"&gt;Porto Venere&lt;/a&gt; at the tip of the peninsula.&lt;/p&gt;
&lt;p&gt;Wednesday morning we left Riomaggiore for &lt;a href="http://en.wikipedia.org/wiki/Gallicano"&gt;Gallicano&lt;/a&gt;, Tuscany.  On the way, we stopped in &lt;a href="http://en.wikipedia.org/wiki/Lucca"&gt;Lucca&lt;/a&gt; to ride bikes atop the city's large defensive walls.&lt;/p&gt;
&lt;p&gt;Thursday we climbed the &lt;a href="http://en.wikipedia.org/wiki/Apuan_Alps#Tuscan-Emilian_Apennines"&gt;Apuan Alps&lt;/a&gt; up to a small peak called Monte Forrato.  The peak had full 360 degree views, to the coast, to the surrounding peaks, and back to Gallicano.&lt;/p&gt;
&lt;p&gt;Yesterday was another travel day; we left Gallicano, back through Lucca, to &lt;a href="http://en.wikipedia.org/wiki/Siena"&gt;Siena&lt;/a&gt;.  We got a short tour and spent some time wandering around the city.&lt;/p&gt;
&lt;p&gt;Today we biked through Tuscany.  Very hilly, very sunny, but beautiful all around.  I was stopping every few minutes to capture yet another hilltop villa.&lt;/p&gt;
&lt;p&gt;Tomorrow we meet Iris in Florence, and spend a couple more nights in Siena.  Then we'll hit Naples, Pompei, Capri, and Rome before flying back home.&lt;/p&gt;
&lt;p&gt;Trip 50% complete.  So far: awesome!&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Hicks-Wright?a=GxVrAbidmXI:isMd5X7i8gw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Hicks-Wright?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Hicks-Wright?a=GxVrAbidmXI:isMd5X7i8gw:l10I13IgW5I"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Hicks-Wright?i=GxVrAbidmXI:isMd5X7i8gw:l10I13IgW5I" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Hicks-Wright/~4/4eiKYXQ2-4A" height="1" width="1"/&gt;</description><pubDate>Sat, 02 Aug 2008 08:01:42 +0000</pubDate><guid isPermaLink="false">/blog/italy/</guid><feedburner:origLink>http://hicks-wright.net/blog/italy/</feedburner:origLink></item><item><title>Lightroom Rocks
</title><link>http://feedproxy.google.com/~r/Hicks-Wright/~3/hGJ4MqRQoVY/</link><description>&lt;p&gt;
    I&amp;#39;ve started using &lt;a href="http://www.adobe.com/products/photoshoplightroom/"&gt;Adobe Lightroom&lt;/a&gt; more and more lately. It&amp;#39;s a change in my usual workflow. For a long time, I was using &lt;a href="http://www.adobe.com/products/creativesuite/bridge/"&gt;Adobe Bridge&lt;/a&gt;, a very competent photo organizer, for arranging and previewing all of my photos. Then, after reviewing and culling, I would edit the best in Photoshop.&lt;/p&gt;
&lt;p&gt;
    I changed over to using the Lightroom 2.0 beta (which is &lt;a href="http://labs.adobe.com/technologies/lightroom/"&gt;free&lt;/a&gt; right now) after shooting a wedding and realizing there was no way I was going to process 800 images in Photoshop before the end of the decade. Lightroom sits right between Bridge and Photoshop, a very competent organizer, with flags, tags, and ratings, mixed with a comprehensive digital darkroom. Lightroom covers all global changes you might want to make to an image: white balance, exposure, color, contrast, noise, sharpening, and lens correction, just to name the major ones. It also comes with a number of presets with different styles. The 2.0 beta has also added local changes as well: spot removal and a retouching brush that enables dodging and burning, local saturation, and tinting.&lt;/p&gt;
&lt;p&gt;
    This all leads to a workflow built around rapid prototyping. I can play with white balance, boost the exposure, bump the saturation, increase the contrast, and add a slight vignette in less than five minutes, taking the image from the camera&amp;#39;s low contrast, slightly underexposed defaults to a nice, rich photo. Along the way, I can try out different options, building on a preset or looking at what presets other people have used. My Photoshop workflow focused on getting everything just right, my Lightroom workflow still helps me get everything right, but with added creativity because I can try things out quickly and see if I like them.&lt;/p&gt;
&lt;p&gt;
    An example:&lt;/p&gt;
&lt;p&gt;
    &lt;a href="http://www.flickr.com/photos/hickswright/1443365709/" title="IMG_3638 by hickswright, on Flickr"&gt;&lt;img alt="IMG_3638" class="top" height="333" src="http://farm2.static.flickr.com/1122/1443365709_ee1c93d5e3.jpg" width="500" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
    This is one of my favorite images, which I &lt;a href="http://hicks-wright.net/blog/flames/"&gt;wrote about&lt;/a&gt; back in September. But I&amp;#39;ve always felt this image was missing something. Really, it&amp;#39;s just a little muddy; there&amp;#39;s not enough separation between the foreground and background. I&amp;#39;ve tried using Photoshop to give it a little punch, but I could never find anything I liked.&lt;/p&gt;
&lt;p&gt;
    So tonight I decided to give it a go in Lightroom. Fortunately, I&amp;#39;d kept the RAW file around, so I still had the color information. Since I&amp;#39;d been doing a lot of color correction in the wedding photos I have been processing, my first idea was to try and get the color balanced properly. Before when I&amp;#39;d worked with the color version of this file, everything had been too warm, mainly because the two main lights are flames, with a very orange light. I used the white shirt in back as a reference to get a good color. This turned the background slightly green, from the street lamps, while keeping the skin tones on the performer nice and warm. I then added a style that I am fast becoming fond of: high contrast, slight vignette, strong colors. With 3 settings changed and a little touch up to tone down the background, I got this:&lt;/p&gt;
&lt;p&gt;
    &lt;a href="http://www.imagekind.com/Showartwork.aspx?IMID=27cbf7e6-37f2-404d-bec3-c4716e504218&amp;amp;P=1"&gt;&lt;img alt="Flames" class="top" height="420" src="http://img.tylergriffinphotography.com/display/c0e5577e7dfdb01b91ccb3b6f24e6740__.jpg" style="margin-left: auto; margin-right: auto; float: none;" width="630" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
    Something about this pops so much more than the first version, the performer is separated from her surroundings by color and tone. It almost has a cross-processed feel. I&amp;#39;ve worked on this image a number of times, but without the rapid prototyping that Lightroom offers, I&amp;#39;m not sure I ever would have found a post processing that I could be completely happy with. Now, I&amp;#39;m so happy with it, I&amp;#39;m trying to &lt;a href="http://www.imagekind.com/Showartwork.aspx?IMID=27cbf7e6-37f2-404d-bec3-c4716e504218&amp;amp;amp;P=1"&gt;sell it&lt;/a&gt;!&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Hicks-Wright?a=iR0wC7Rq74E:u86nbz8JBdU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Hicks-Wright?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Hicks-Wright?a=iR0wC7Rq74E:u86nbz8JBdU:l10I13IgW5I"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Hicks-Wright?i=iR0wC7Rq74E:u86nbz8JBdU:l10I13IgW5I" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Hicks-Wright/~4/hGJ4MqRQoVY" height="1" width="1"/&gt;</description><pubDate>Mon, 30 Jun 2008 01:29:30 +0000</pubDate><guid isPermaLink="false">/blog/lightroom-rocks/</guid><feedburner:origLink>http://hicks-wright.net/blog/lightroom-rocks/</feedburner:origLink></item><item><title>Firefox Download Day
</title><link>http://feedproxy.google.com/~r/Hicks-Wright/~3/1EuCn2UaPGs/</link><description>&lt;p&gt;Happy Firefox Download Day everyone!&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Huh?&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Yeah, ok, you're right, it's not a real holiday.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Ummm....&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;You don't know what it is do you?  Fine, I'll explain.  The folks over at &lt;a href="http://mozilla.com/"&gt;Mozilla&lt;/a&gt; are trying to set the &lt;a href="http://www.spreadfirefox.com/en-US/worldrecord/"&gt;world record&lt;/a&gt; for most downloads in 24 hours.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;So what is being downloaded?&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;You didn't click on the link, did you?  Firefox 3.0, the new, speedy, less-memory-hogging, more-user-friendly version of the world's most popular open source browser.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;What are you on?&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;I'm a little over excited about it, so sue me.  But seriously, you should &lt;a href="http://www.mozilla.com/en-US/firefox/?p=downloadday"&gt;try it out&lt;/a&gt;.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Hicks-Wright?a=u2tOEHAG4Io:sco3Ggfg4y4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Hicks-Wright?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Hicks-Wright?a=u2tOEHAG4Io:sco3Ggfg4y4:l10I13IgW5I"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Hicks-Wright?i=u2tOEHAG4Io:sco3Ggfg4y4:l10I13IgW5I" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Hicks-Wright/~4/1EuCn2UaPGs" height="1" width="1"/&gt;</description><pubDate>Tue, 17 Jun 2008 19:20:15 +0000</pubDate><guid isPermaLink="false">/blog/firefox-download-day/</guid><feedburner:origLink>http://hicks-wright.net/blog/firefox-download-day/</feedburner:origLink></item><item><title>Aardvark FTW!
</title><link>http://feedproxy.google.com/~r/Hicks-Wright/~3/SBOzm_ffn9E/</link><description>&lt;p&gt;I should probably let someone else announce this so it's not shameless tooting of my own horn, but whatever:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.djangodash.com/results/"&gt;http://www.djangodash.com/results/&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;First Place - Aardvarkia (out of 52 entrants)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Benjamin Pollack&lt;/li&gt;
&lt;li&gt;Tyler Hicks-Wright&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A code review tool with Mercurial integration.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;(&lt;a href="http://www.projectaardvark.com/"&gt;Aardvark reference&lt;/a&gt; for those who didn't get it.)&lt;/p&gt;
&lt;p&gt;Some background:
&lt;a href="http://www.djangodash.com/results/"&gt;DjangoDash&lt;/a&gt; is a code sprint/competition to make more apps for the Django Python Web Framework.&lt;/p&gt;
&lt;p&gt;Ben and I have been talking about code review tools, and have tried to use a couple, including &lt;a href="http://www.review-board.org/"&gt;ReviewBoard&lt;/a&gt; from &lt;a href="http://www.vmware.com/"&gt;VMWare&lt;/a&gt; and &lt;a href="http://code.google.com/p/rietveld/"&gt;Rietveld Code Review&lt;/a&gt; by &lt;a href="http://python.org/"&gt;Python&lt;/a&gt; inventor &lt;a href="http://en.wikipedia.org/wiki/Guido_van_Rossum"&gt;Guido van Rossum&lt;/a&gt;, both of which use Subversion.  We found their workflows to be too tedious to use frequently; you have to manually create a unified diff of all your changes and upload it to the server, while making sure not to accidentally check any of those changes in.&lt;/p&gt;
&lt;p&gt;So, we decided to enter the dash with a code review tool based on Mercurial that uses its distributed nature to make the workflow easier.  Now you just make your changes, start a new review at the website (which creates a new repo on the server for you), push your changes to your review repository, and assign the review to the reviewer.  They can then accept it, in which case it gets pushed into the main repo, or reject, in which case it comes back to you and you have a chance to fix the problems.  That way, all of your changes are versioned and periodic merges are done with the main repository so the branch history is always up to date.  Moreover, a review history can be added to the check-ins after the review is approved, so the entire history is kept intact.&lt;/p&gt;
&lt;p&gt;Right now we're planning it only for internal use, but I will definitely post if we decide to go open source with it.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Hicks-Wright?a=M_ubY8A-xww:jdKrvgGHDCM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Hicks-Wright?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Hicks-Wright?a=M_ubY8A-xww:jdKrvgGHDCM:l10I13IgW5I"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Hicks-Wright?i=M_ubY8A-xww:jdKrvgGHDCM:l10I13IgW5I" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Hicks-Wright/~4/SBOzm_ffn9E" height="1" width="1"/&gt;</description><pubDate>Mon, 16 Jun 2008 19:38:20 +0000</pubDate><guid isPermaLink="false">/blog/aardvark-ftw/</guid><feedburner:origLink>http://hicks-wright.net/blog/aardvark-ftw/</feedburner:origLink></item></channel></rss>
