<?xml version="1.0" encoding="UTF-8"?>
<!--Generated by Squarespace Site Server v5.11.81 (http://www.squarespace.com/) on Wed, 15 Feb 2012 00:40:11 GMT--><rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rss="http://purl.org/rss/1.0/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:cc="http://web.resource.org/cc/"><rss:channel rdf:about="http://nostacktrace.com/dev/"><rss:title>/dev/notes</rss:title><rss:link>http://nostacktrace.com/dev/</rss:link><rss:description></rss:description><dc:language>en-US</dc:language><dc:date>2012-02-15T00:40:11Z</dc:date><admin:generatorAgent rdf:resource="http://www.squarespace.com/">Squarespace Site Server v5.11.81 (http://www.squarespace.com/)</admin:generatorAgent><rss:items><rdf:Seq><rdf:li rdf:resource="http://nostacktrace.com/dev/2011/12/23/fixing-ssh-host-key-verification-failed.html"/><rdf:li rdf:resource="http://nostacktrace.com/dev/2011/4/2/reflecting-on-a-year-with-osgi.html"/><rdf:li rdf:resource="http://nostacktrace.com/dev/2011/2/4/no-love-for-the-monkey-patch.html"/><rdf:li rdf:resource="http://nostacktrace.com/dev/2011/1/29/an-automatic-primary-key-in-django-that-works-with-inline-mo.html"/><rdf:li rdf:resource="http://nostacktrace.com/dev/2011/1/4/what-exactly-is-open-stack.html"/><rdf:li rdf:resource="http://nostacktrace.com/dev/2010/12/18/the-half-life-of-a-software-engineer.html"/><rdf:li rdf:resource="http://nostacktrace.com/dev/2010/12/3/sql-antipatterns.html"/><rdf:li rdf:resource="http://nostacktrace.com/dev/2010/12/1/cassandra-training.html"/><rdf:li rdf:resource="http://nostacktrace.com/dev/2010/11/18/saved-by-the-log.html"/><rdf:li rdf:resource="http://nostacktrace.com/dev/2010/10/15/how-to-respond-to-bad-tech-support-calls.html"/></rdf:Seq></rss:items></rss:channel><rss:item rdf:about="http://nostacktrace.com/dev/2011/12/23/fixing-ssh-host-key-verification-failed.html"><rss:title>fixing ssh host key verification failed</rss:title><rss:link>http://nostacktrace.com/dev/2011/12/23/fixing-ssh-host-key-verification-failed.html</rss:link><dc:creator>Norman Richards</dc:creator><dc:date>2011-12-23T14:57:00Z</dc:date><dc:subject>ssh</dc:subject><content:encoded><![CDATA[<p>When doing dev work on <span class="caps">EC2,</span> I find myself destroying and creating new <span class="caps">EC2 </span>instances many times in a day, and I find myself hitting the "Host key verification failed" message from <span class="caps">SSH </span>a bit.</p>
<script src="https://gist.github.com/1540363.js"> </script>
<p>You could turn off the check with -o "StrictHostKeyChecking no" on the command line or in your ~/.ssh/config file, but the warning ssh gives is a good one and not one you really want to turn off.  My approach has been to edit the ~/.ssh/known_hosts file and remove the old key.  <span class="caps">SSH </span>is nice enough to tell you the exact line number.  It's inelegant, but it's what I've done for years.</p>
<p>What I didn't realize is that ssh has a better solution.</p>
<script src="https://gist.github.com/1540382.js"> </script>
<p>ssh-keygen -R will update the known_hosts file, removing the old key.  The next connection will prompt you to verify and add the new key.  Much nicer.</p>
<p> </p>]]></content:encoded></rss:item><rss:item rdf:about="http://nostacktrace.com/dev/2011/4/2/reflecting-on-a-year-with-osgi.html"><rss:title>Reflecting on a year with OSGi</rss:title><rss:link>http://nostacktrace.com/dev/2011/4/2/reflecting-on-a-year-with-osgi.html</rss:link><dc:creator>Norman Richards</dc:creator><dc:date>2011-04-02T18:09:29Z</dc:date><dc:subject>osgi</dc:subject><content:encoded><![CDATA[<p>I attended a recent <a href="http://www.austinjug.org">AustinJUG</a> on OSGi.  I think OSGi is one of those technologies that is hard to really grasp and have a solid opinion of until you've used it.  I spent most of last year developing a set of applications on OSGi and learning the ins and outs of OSGi while tech editing <a href="http://manning.com/hall/">OSGi in Action</a>, so many people came to ask my thoughts.  I am most certainly not an expert, but I have used it enough to have opinions.  I thought I'd summarize here:</p>
<p> </p>
<p>OSGi does a really good job of what it does.  It does work.  You can break up your app into very independent modular components and manage them.  It's not a half-baked solution, and given the complexities of this kind of class loading, that says a lot.  There are still gotcha's with things like the context class loader. (OSGi ignores it)</p>
<p>OSGi is a very good fit for servers and services.  If you truly have lots of mostly-independent, dynamic services that need to work together, you will like what OSGi gives you.  It can be used  for webapps, but it is not a great fit.  After working with it, the developers I was working with wanted to move the web server and WAR files out of the OSGi environment.</p>
<p>OSGi does not feel like modern Java.  OSGi was designed before the Java 5 revolution.  The APIs are cumbersome and feel outdated.</p>
<p>You will want to use a some sort of framework with it.   We used the Spring OSGi integration.  I didn't enjoy that, but it seems like the best choice when keeping in mind the big picture.</p>
<p>Working with your own code is wonderful.  Working with other people's code is not so easy.  If someone isn't managing an OSGi bundle for the libraries you want to use, you will feel pain.  Even if they are, you may still have headaches.</p>
<p>Summary: OSGi works, but don't use it unless you really need it.</p>
<p> </p>
<p> </p>]]></content:encoded></rss:item><rss:item rdf:about="http://nostacktrace.com/dev/2011/2/4/no-love-for-the-monkey-patch.html"><rss:title>No love for the monkey patch</rss:title><rss:link>http://nostacktrace.com/dev/2011/2/4/no-love-for-the-monkey-patch.html</rss:link><dc:creator>Norman Richards</dc:creator><dc:date>2011-02-04T13:47:00Z</dc:date><dc:subject></dc:subject><content:encoded><![CDATA[<p>Working mostly in Python at the day job has been an interesting experience. &nbsp;For them most part integrating the new language and libraries has been fairly straightforward. &nbsp;The dynamic nature leads to efficiencies on one end, but it also introduces a whole host of annoyances. &nbsp;I spend a lot more time tracking down subtle errors that would have been immediately obvious in Java, for example. &nbsp;&nbsp;</p>
<p>Of all the things I've encountered so far, the thing that's caused me the most headache has been a dumb monkey patch made by the <a href="http://chandlerproject.org/bin/view/Projects/MeTooCrypto">M2Crypto</a>&nbsp;library. &nbsp;M2Crypto is a replacement SSL library required by own of our tools. &nbsp;It apparently provides some functionality not in the standard python SSL code. &nbsp;That's fine, except that in order to provide it's functionality, M2Crypto does this brilliant patch of urllib:</p>
<p><script src="https://gist.github.com/814425.js?file=m2crypto_hack.py"></script></p>
<p>This apparently works for most urllib use, the the urllib.urlretrieve, which we were using, fails when retrieving https URLs. &nbsp;It was a bear to track down, but once I realized that the function worked fine in a bare python and failed in the virtualenv python with all our third party libraries, it just took some time single-stepping through in the debugger to figure out where the two environments differed.</p>
<p>Since the open_https method is completely destroyed my the patch, the only option was to switch to urllib2. &nbsp;However, since&nbsp;urllib2 doesn't seem to have kept the urlretrieve function around, I had to rewrite the urlretrieve functionality on top of it. &nbsp;</p>
<p>This is exactly the kind of thing I was most afraid of when it came to working with Python - having to deal with other developers who decided it would be great to change the way base system libraries work. &nbsp;Looking at the big picture, it was really only a minor annoyance - a few lost hours at most. &nbsp;The real harm is in the feeling of instability it brings. &nbsp;I want to know exactly what the system is doing and why, and it's hard to do when one library decides to muck around with another libraries internals.</p>]]></content:encoded></rss:item><rss:item rdf:about="http://nostacktrace.com/dev/2011/1/29/an-automatic-primary-key-in-django-that-works-with-inline-mo.html"><rss:title>An automatic primary key in django that works with inline model admin</rss:title><rss:link>http://nostacktrace.com/dev/2011/1/29/an-automatic-primary-key-in-django-that-works-with-inline-mo.html</rss:link><dc:creator>Norman Richards</dc:creator><dc:date>2011-01-29T15:45:47Z</dc:date><dc:subject></dc:subject><content:encoded><![CDATA[<p>I wanted to have a UUID primary field in a django model. &nbsp;It isn't hard to create a CharField with a value that defaults to a UUID. &nbsp; The <a href="https://github.com/django-extensions/django-extensions">django_extensions</a> has a&nbsp;<a href="https://github.com/django-extensions/django-extensions/blob/master/django_extensions/db/fields/__init__.py#L189">UUIDField</a>&nbsp;is a nice all in one solution. &nbsp;It works well as a primary key, except for a messy case with InlineModelAdmin which only allows non-editable primary keys if they are an AutoField. &nbsp;&nbsp;</p>
<p>The workaround I found, after digging through the code a bit was to mimic the behavior of AutoField to trick InlineModelAdmin into doing the right thing. &nbsp;I extended UUIDField like this:</p>
<div id="_mcePaste"></div>
<div id="_mcePaste"><script src="https://gist.github.com/801935.js"> </script></div>
<p>After a bit more searching, I later found this was a <a href="http://code.djangoproject.com/ticket/13696">known bug</a>. &nbsp;More interestingly, one of the commenters on the bug had considered the same solution and rejected it. &nbsp;Take a look at the bug report for his reasoning, but the error condition he points out only occurs when the default value is None. &nbsp;If the field has a default value, as is the case with this CharField-extended model, the potentially problematic logic doesn't kick in. &nbsp;I haven't battle-tested the solution yet, but initial testing looks like it performs correctly.&nbsp;</p>
<p>&nbsp;</p>]]></content:encoded></rss:item><rss:item rdf:about="http://nostacktrace.com/dev/2011/1/4/what-exactly-is-open-stack.html"><rss:title>What exactly is open stack?</rss:title><rss:link>http://nostacktrace.com/dev/2011/1/4/what-exactly-is-open-stack.html</rss:link><dc:creator>Norman Richards</dc:creator><dc:date>2011-01-04T14:09:08Z</dc:date><dc:subject></dc:subject><content:encoded><![CDATA[<p><span class="full-image-float-right ssNonEditable"><span><img src="http://nostacktrace.com/storage/post-images/OpenStackLogo.jpg?__SQUARESPACE_CACHEVERSION=1294240350961" alt="" /></span></span>I've been struggling for a while to get a handle on <a href="http://www.openstack.org/">OpenStack</a>. &nbsp;Since <a href="http://www.rackspace.com">Rackspace</a>, the company that initially pushed the idea, is based nearby, there's been quite a lot of noise about OpenStack locally. &nbsp;I've attended several talks on OpenStack, but unfortunately I still haven't really gotten the big picture.</p>
<p>As a developer, my first question is why I should care open OpenStack. &nbsp;I'm intrigued, for sure, and my background should leave no doubt that I'm a huge open source proponent. &nbsp;However, I don't ever expect to run my own cloud. &nbsp;As a developer, if I run on Amazon EC2, I see a set of Linux boxes (open source) and a public API I can use to manage my instances. &nbsp; Whether the cloud infrastructure is open source or not, doesn't seem to matter much. &nbsp;I should be able to spin up a Linux box on the Rackspace cloud just as easily and have nearly the same view of the world. &nbsp;</p>
<p>The management of instances seems to be the key difference. &nbsp;Services like <a href="http://www.rightscale.com">Rightscale</a> go a long way to bridging the gaps between the different cloud offerings, but I can certainly see how this would all be easier if the various cloud services had a common management API. &nbsp;Unfortunately, I don't see much talk about management APIs from OpenStack. &nbsp;Maybe I've missed it, or maybe it's just too early. &nbsp;It's not really clear. What exactly is the OpenStack view of management APIs?</p>
<p>More important than the infrastructure APIs is the platform service APIs. &nbsp;I'm a huge fan of <a href="http://aws.amazon.com/s3/">S3</a> and <a href="http://aws.amazon.com/sqs/">SQS</a>, for example, both of which are big reasons I go with EC2. &nbsp;Though technically both are quite accessible outside of EC2, I would only seriously consider moving if equivalent services were available, preferably ones with standard APIs that would give me true cloud service portability. &nbsp;OpenStack has the start of this with Swift, their version of S3. &nbsp;However, I'm still a little unclear on the big picture. &nbsp;Will OpenStack create a core platform of AWS-like cloud services based around standard APIs? &nbsp;Or, is the goal to create a linux-like environment for the creation of (hopefully compatible) platform packages that can be installed into an OpenStack cloud ad hoc? &nbsp;It seems to me like the later is closer to the approach, and although that's quite an interesting possibility, I'm not sure how OpenStack then will lead to a simpler, more standardized cloud than we have now.</p>
<p>I'm not down on OpenStack. &nbsp;I just don't really understand the&nbsp;project. &nbsp; As an app developer, I'm clearly not the primary audience of OpenStack, yet. &nbsp;However, cloud platforms exist to serve the developers, and if you are designing an open platform from the ground up, I would hope to have been able to get a little bit better of a perspective on what the world of an OpenStack cloud will look like to a developer.</p>]]></content:encoded></rss:item><rss:item rdf:about="http://nostacktrace.com/dev/2010/12/18/the-half-life-of-a-software-engineer.html"><rss:title>The half-life of a software engineer</rss:title><rss:link>http://nostacktrace.com/dev/2010/12/18/the-half-life-of-a-software-engineer.html</rss:link><dc:creator>Norman Richards</dc:creator><dc:date>2010-12-18T16:31:52Z</dc:date><dc:subject></dc:subject><content:encoded><![CDATA[<p>As a software developer, staying at the same company too long can be fatal. &nbsp;It's easy for your skills to stagnate working with the same people and technologies, year after year. &nbsp;On the other hand, a track record as a job hopper can be a red flag indicating a developer who can't fit well on teams and who doesn't have any experience maintaining the systems they worked on. &nbsp; No company wants to invest in a new hire who will jump ship in 6 months.</p>
<p>From my own experience, I find that it takes about 2 years to complete a full cycle on a project. &nbsp;At first, you come in and are just learning the domain and the code base. &nbsp;Then there's period of developing fluency until you've completely mastered the codebase. &nbsp;At that point, you'll be in a position to be able to contribute to project at an architectural level, leaving plenty of time to hang around and learn the lessons from these larger-scale efforts. &nbsp;</p>
<p>Sometimes this cycle is faster, sometimes it's slower, but a couple years seems to be about right. &nbsp;After that, something needs to change. &nbsp;In a larger company, there may be opportunities on teams that are very different from what you are working on. &nbsp;I've always worked for smaller companies, and often times this change comes in the form of an acquisition, which brings new challenges. &nbsp;At one company, I transfered to the advanced research division of the acquiring organization. &nbsp;In another, I tried my hand at evangelism/product management, making a transition back into engineering when I felt I really needed to spend more time coding. &nbsp;In both of these cases, I ended up staying for 4-5 years.</p>
<p>I'm curious how this compares to other people's experience. &nbsp;</p>]]></content:encoded></rss:item><rss:item rdf:about="http://nostacktrace.com/dev/2010/12/3/sql-antipatterns.html"><rss:title>SQL Antipatterns</rss:title><rss:link>http://nostacktrace.com/dev/2010/12/3/sql-antipatterns.html</rss:link><dc:creator>Norman Richards</dc:creator><dc:date>2010-12-03T14:04:00Z</dc:date><dc:subject></dc:subject><content:encoded><![CDATA[<p><span class="full-image-float-left ssNonEditable"><span><img style="width: 225px;" src="http://nostacktrace.com/storage/post-images/sqlanti.jpg?__SQUARESPACE_CACHEVERSION=1291385341238" alt="" /></span></span></p>
<p>Despite the fact that I've actually increased the number of technical books I've been reading, I've gotten out of the habit of reviewing them. &nbsp;I thought I should try and reverse that trend, starting with one of the most helpful books I've read this year, <a href="http://www.pragprog.com/titles/bksqla/sql-antipatterns">SQL Antipatterns</a>.</p>
<p>I've never been a fan of relational databases. &nbsp;I started my career working with LDAP, and acceptance of the&nbsp;rigidness relational model didn't come easily. &nbsp;Over time, I learned to respect relational databases more and become moderately proficient with them. &nbsp;However, my policy was always that the database is nothing more than an implementation detail. &nbsp;If I ever actually noticed the database when you were writing code, something was seriously wrong with my dev model.</p>
<p>I won't debate the merits of that attitude, but it led me down a path of accepting many half-baked solutions that ended up causing my nothing but pain, but fortunately I was able to sweep those under the rug of my db abstractions and ORM mapping tools, directing the curses under my breath at that evil SQL database that I had to constantly interrupt my "real" dev work to deal with.</p>
<p>I saw many of those "solutions" in the SQL Antipatterns book, along with a discussion of the problems with each pattern and a pragmatic discussion of the alternatives. &nbsp;(sometimes the antipattern might actually be better than the alternatives) &nbsp;I won't discuss the specific antipatterns here. &nbsp;I'll just repeat that I saw many of my previous design decisions in here along with alternatives I wish I had considered. &nbsp; If you find relational databases a pain, some of that pain might be caused by the way you are doing things. &nbsp;SQL Antipatterns may just set you right. &nbsp;&nbsp;Remember, hating relational databases is not an excuse for mis-using them. &nbsp; And who knows, when you start using them better you might even find they aren't nearly as ugly as you thought.</p>
<p>&nbsp;</p>]]></content:encoded></rss:item><rss:item rdf:about="http://nostacktrace.com/dev/2010/12/1/cassandra-training.html"><rss:title>Cassandra training</rss:title><rss:link>http://nostacktrace.com/dev/2010/12/1/cassandra-training.html</rss:link><dc:creator>Norman Richards</dc:creator><dc:date>2010-12-01T13:53:00Z</dc:date><dc:subject></dc:subject><content:encoded><![CDATA[<p>I was recently working on a project that was considering <a href="http://cassandra.apache.org/">Cassandra</a> a solution for a big data problem we were having. &nbsp; We quickly discovered that although the resources online were helpful, they weren't as exhaustive as we had hoped. &nbsp;There best resource was the unreleased <a href="http://oreilly.com/catalog/0636920010852">O'Reilly Cassandra book</a> that was being written. &nbsp;We decided that the best course of action would be to attend the Cassandra training class offered by <a href="http://riptano.com/">Riptano</a>. &nbsp;Not only are they the most authoritative source for Cassandra information, they are based here in Austin, TX. &nbsp;</p>
<p>After teaching so many training classes back in the JBoss days (until Red Hat took over I was doing at least 1 class a month), being on the other side of the tables was a bit surreal. &nbsp;At several points during the lab times, I found myself starting to stand up to go check on how everyone and needing to remind myself that I wasn't in charge of the show. &nbsp;&nbsp;</p>
<p>The Riptano class is a single day class that is split between basic usage and admin/ops topics. &nbsp;As long as a day is, it's really hard to get from 0 to anywhere interesting in a single day. &nbsp;If I were redesigning the Riptano class, I would suggest that they record the morning introduction to Riptano concepts as a video and make that a pre-requisite for attending the class. &nbsp;You'd definitely have some people who show up without doing their homework, but I think you have to target the people who are there to learn first. &nbsp;Getting straight into Cassandra would have really let us get a lot deeper.</p>
<p>After the introduction to cassandra, we got started directly on some basic usage. &nbsp;Riptano smartly provides a vmware virtual machine to standardize the learning environment for students. &nbsp;(I really wish I had the luxury of doing that back when I was leading JBoss training classes. &nbsp;The lessons and labs largely focussed on using cassandra-clii, the Cassandra shell. &nbsp;The shell is very limited. &nbsp;You can only do the most basic operations with it, but anything more would require writing code. &nbsp;That's not an easy task for a platform for a datastore that aims to serve clients in a variety of languages, each with it's own different API abstractions. &nbsp; &nbsp;Having a fully-functional query language should definitely be high on the list of future Cassandra improvements I'd like to see. &nbsp;</p>
<p>The labs were helpful, but we only had time to explore the data model of the twissandra demo app. &nbsp;It was enough to get a taste of how to navigate related column families. &nbsp;With Cassandra you have to maintain your own indexing (No join's for you!)&nbsp;and carefully design your model around your access model. &nbsp;It would have been very enlightening to try and design a usable data model, but that was clearly beyond the scope of the class.&nbsp;</p>
<p>The rest of the class focussed largely on ops issues. &nbsp;We played with different replication factors with a multi-node cluster, learning how Cassandra balances data between nodes and how it deals with nodes entering and leaving. &nbsp;This was really practical information. &nbsp;As I've only prototyped Cassandra code, I can speak to how well the class prepares you for deploying Cassandra in production, but it was very helpful to me. &nbsp; The slow part of the afternoon was the hour or so that we spent talking about the JMX MBeans and Java memory management. &nbsp;(Cassandra is written in Java) &nbsp;I assume this was helpful to those in the class without a Java background, but I found myself nodding off a bit here.&nbsp;</p>
<p>The conclusion? &nbsp;I think the class is a good value for the money, especially since the trainer was an actual Cassandra developer who could answer technical questions without resorting to hand waving. &nbsp;I would recommend it to anyone new to Cassandra. &nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>]]></content:encoded></rss:item><rss:item rdf:about="http://nostacktrace.com/dev/2010/11/18/saved-by-the-log.html"><rss:title>Saved by the log</rss:title><rss:link>http://nostacktrace.com/dev/2010/11/18/saved-by-the-log.html</rss:link><dc:creator>Norman Richards</dc:creator><dc:date>2010-11-19T00:04:00Z</dc:date><dc:subject></dc:subject><content:encoded><![CDATA[<p>I have a tendency to obsess a bit about logging. &nbsp;Sometimes I'm really comfortable with my code that I let my laziness override my judgement, but I generally try to log my code well enough that I can go back and answer just about any question I want to about a system.</p>
<p>One of my dev tasks earlier this year was to write a system that asynchronously archived user data by email. &nbsp;I'm no stranger to SMTP, but I'm not exactly a mail guru either. &nbsp;When I wrote the code, I knew we were going to have integration issues. &nbsp;In a moment of paranoia I decided that instead of just logging the work being done and and the important result codes that I would log every outgoing SMTP session in a special log directory, indexed by time and and event id to make sure I could quickly answer any questions about a transaction. &nbsp;&nbsp;Dealing with these logs is a bit of a hassle. &nbsp;I periodically tar them up and ship them out to S3, but as I watch the data grow I've often wondered if maybe I weren't just overdoing it a bit.</p>
<p>The logs have come in handy from time to time, but over the last couple weeks having them around has saved me in some really big ways these last few weeks. &nbsp;I've had three big issues these last few weeks, ranging from authentication, to mime-type issues to "are we sure we are actually sending anything at all" problems. &nbsp;In each case, the problem has been in the receiving party's side. &nbsp;With the extensive logging, it's been trivial to dig up the exact bits we sent out in seconds, while we wait and wait (often for days) for the other guys to figure out what is going on in their own system.</p>
<p>This all has made me wonder if perhaps I'm not being paranoid enough. &nbsp;There are a lot of integration points in the code I'm working on that really has very poor log coverage. &nbsp;If a problem did crop up, I wouldn't be able to directly answer a question about what exactly the system did or didn't do, and until now I probably wouldn't have thought much of it. &nbsp;That's a pretty scary thought, and it's making me rethink my whole approach to logging.</p>]]></content:encoded></rss:item><rss:item rdf:about="http://nostacktrace.com/dev/2010/10/15/how-to-respond-to-bad-tech-support-calls.html"><rss:title>How to respond to bad tech support calls</rss:title><rss:link>http://nostacktrace.com/dev/2010/10/15/how-to-respond-to-bad-tech-support-calls.html</rss:link><dc:creator>Norman Richards</dc:creator><dc:date>2010-10-15T13:53:14Z</dc:date><dc:subject></dc:subject><content:encoded><![CDATA[<p><a href="http://xkcd.org/806/">Today's xkcd on unhelpful tech support</a>&nbsp;reminded me of a dilemma I had recently determining the proper response to tech support agent at Time Warner who clearly didn't seem to have much experience. &nbsp;Our cable modem died, and it was clear I needed them to come replace it. &nbsp;I understand that they might need to do some verification of my assessment first, as it does make sense that you don't send a truck out or send new hardware out just because a customer thinks his cable box is bad. &nbsp;I have no issue with walking through standard troubleshooting steps just to be sure. &nbsp;</p>
<p>What go me going was, after going through a number of "this might possibly be interesting troubleshooting steps if the lights on the cable modem were on" checks on my computer, the tech support person asked:</p>
<blockquote>
<p>Have you optimized your web browser?</p>
</blockquote>
<p>Huh? &nbsp;I paused for a while lost in thought, trying to figure out what that means. &nbsp;Optimized my web browser? &nbsp;Is he asking if I've installed some Time Warner browser plugin to serve ads to me? &nbsp;Have I updated the latest version of my browser? &nbsp;What in the world could that mean? &nbsp;(feel free to pause for a second and take a guess)</p>
<p>It turns out the Time Warner agent was asking trying to ask if I had cleared my browser cache and cookies. Silly me - I thought a cache was supposed to be a performance optimization by reducing the need for reloading pages over the network. &nbsp;Of course, in some cases that could be a useful troubleshooting step, but would it be possible to actually say that rather than make up nonsense term?</p>
<p>It's funny, but my real dilemma was trying to figure out how to respond. &nbsp;Should I just hold back and politely say yes? &nbsp;Should I come up with a snarky response like "No, do I need to charge my flux capacitor first?" I ended up going halfway with the simple "I'm not sure that means anything", but I can't help but feel I missed the chance to give a truly quality response. &nbsp;</p>
<p>&nbsp;</p>]]></content:encoded></rss:item></rdf:RDF>
