tag:blogger.com,1999:blog-112189562024-03-13T20:02:02.080-07:00My Fevered BrainMusings, mutterings, natterings, smatterings; Twinkling, sprinkling, sparkling, darkling.Robhttp://www.blogger.com/profile/07182206965704673189noreply@blogger.comBlogger176125tag:blogger.com,1999:blog-11218956.post-32779163174247954702019-02-27T09:44:00.003-08:002019-02-27T09:44:33.748-08:00In Happy Birthday MemoriamWithout a calendar popping up reminders, I'd never remember anything.<br />
<br />
Reminders popped up yesterday about two things. First was my brother's birthday is today. This morning, after I got to work, I opened up Facebook Messenger and sent him a quick "happy birthday" wish.<br />
<br />
The other reminder I received was that yesterday was the anniversary of my mother's death. Couldn't find an app for sending her my thoughts.Robhttp://www.blogger.com/profile/07182206965704673189noreply@blogger.com0tag:blogger.com,1999:blog-11218956.post-77585863644507344172017-05-25T14:31:00.000-07:002017-05-25T14:31:05.081-07:00Walking Down Memory LaneIn October of 2007, I was working at Netflix managing the testing team for the website. I presented a paper on the challenges of scaling up a software delivery effort as a business grows at the Pacific Northwest Software Quality Conference. Someone I met at the conference and who I connected with on LinkedIn reached out to me and prompted me to look back at the paper.<br />
<br />
On re-reading it, I remembered that I knew many things that I've since forgotten I've learned there. Just in case you, dear reader, might also be interested I am reproducing that paper here. Something I found amusing was how I managed to find citations I could use in footnotes to make it look more like research rather than the retrospective that it clearly is.<br />
<br />
<hr />
<div>
<div class="page" title="Page 591">
<div class="layoutArea">
<div class="column">
<h2>
<span style="font-family: "tt8375o00"; font-size: 16.000000pt;">Scaling Quality</span></h2>
<h3>
<span style="font-family: "tt8377o00"; font-size: 14pt;"><u>Abstract</u></span></h3>
<span style="font-family: "tt8376o00"; font-size: 12.000000pt;">When we develop software to support our business’ customers, we hope to make our products
successful. We want to build software that will: be used, make user’s lives easier, do what it is
supposed to do, and perform acceptably. If we are fortunate enough to be successful, the user
base grows, and we have to learn how to scale the systems to support the increasing load.
Everyone knows the three key subjects to study to deliver scalable software: design, coding and
testing. However, there’s a fourth scalability subject that’s often overlooked. That is scaling the
development and quality teams themselves.
</span><br />
<span style="font-family: "tt8376o00"; font-size: 12.000000pt;"><br /></span>
<span style="font-family: "tt8376o00"; font-size: 12.000000pt;">With more cooks in the kitchen, the development environment needs to evolve. Communication
within the organization has to move past the ‘prairie-dogs popping over the cubicle wall’ style.
The code base has to be organized so that functional teams can build, test and deploy
independently. Most importantly, the new process needs to stay as nimble as the process that
fostered your current success. The pace of business innovation and deployment of systems to
support it cannot be bogged down by process and bureaucracy.
</span><br />
<span style="font-family: "tt8376o00"; font-size: 12.000000pt;"><br /></span>
<span style="font-family: "tt8376o00"; font-size: 12.000000pt;">Software tools that deliver operational insight and continuous testing aid and inform how the
product is developed and delivered at all levels: product management, design, server
engineering, production engineering, operations, and of course, quality assurance. This paper
examines how Netflix has navigated between the Scylla of growing system demands and the
Charybdis of chaos at the hands of ever-larger teams.</span></div>
</div>
</div>
<div class="page" title="Page 592">
<div class="layoutArea">
<div class="column">
<h3>
<span style="font-family: "tt8377o00"; font-size: 14.000000pt;"><u>Introduction
</u></span></h3>
<span style="font-family: "tt8376o00"; font-size: 12.000000pt;">Some organizations become victims of their own success. Instincts that serve a startup team well
can cause problems in a larger team if careful attention isn’t paid to how things are done as an
organization grows. Deployability will not scale where the development engineer is also the QA,
configuration, release and operations engineer. As the systems increase and grow and more
people are working together on them, it becomes less likely that the organization can deploy
code that “worked on my box.”</span><br />
<h3>
<span style="font-family: "tt8377o00"; font-size: 14.000000pt;"><u>The Environment
</u></span></h3>
<h4>
<span style="font-family: "tt8378o00"; font-size: 13.000000pt;">People
</span></h4>
<span style="font-family: "tt8376o00"; font-size: 12.000000pt;">The corporate culture at Netflix is all about High Performance. As the company has grown, the
management team’s most important task has been to find and nurture star performers. As the
complexity and volume of work increases, there are two ways to grow to meet the challenge of
getting more done.
</span><br />
<span style="font-family: "tt8376o00"; font-size: 12.000000pt;"><br /></span>
<span style="font-family: "tt8376o00"; font-size: 12.000000pt;">One is to add reasonably competent junior people (who are plentiful) and layers of management
to guide them. As the number of people and the layers of management grow, the complexity,
interconnections and overhead of coordination grows even faster. This leads to chaos. The usual
response to the pain resulting from chaos is more rules and more process. More process requires
more people to do the “real” work alongside an ever increasing volume of process work. This
leads to diminishing returns for each addition to the team.
</span><br />
<span style="font-family: "tt8376o00"; font-size: 12.000000pt;"><br /></span>
<span style="font-family: "tt8376o00"; font-size: 12.000000pt;">The alternative is to find and hire senior engineers (who are scarce) who can handle increasing
complexity without the need for close supervision or rigid process. This allows the organization
to scale more efficiently. The time and effort needed to hire is significantly greater when hiring
only people that raise the performance bar. This is true because you’re recruiting out of a smaller
pool to start with. It’s also true that as you raise the bar with each successive hire, you’re further
shrinking the pool for the next hire. However, it’s the more effective way to meet the challenge
of increasing complexity because you minimize the additional coordination cost and maximize
the additional work done per person added to the team.
</span><br />
<span style="font-family: "tt8376o00"; font-size: 12.000000pt;"><br /></span>
<span style="font-family: "tt8376o00"; font-size: 12.000000pt;">The consequences of this approach are openly communicated to all job candidates from the very
beginning of their job search at Netflix. Reason number six on the company website’s “8 great
reasons to work at Netflix” page states:</span><br />
<blockquote class="tr_bq">
<span style="font-family: "tt8376o00"; font-size: 12.000000pt;">“At Netflix, adequate performance gets a generous severance package.”</span><span style="font-family: "tt8379o00"; font-size: 8.000000pt; vertical-align: 6.000000pt;">1</span></blockquote>
<span style="font-family: "tt8376o00"; font-size: 12.000000pt;">Here, the expectation is set immediately that there is no safe haven, that there is no cushy corner
you can expect to hide in that you’ll be able to retire from. In a High Performance culture,
everyone needs to be contributing to the bottom line all of the time. Anyone not pushing the
envelope of their discipline can expect to be replaced by someone that will.</span></div>
</div>
</div>
<div class="page" title="Page 593">
<div class="layoutArea">
<div class="column">
<h4>
<span style="font-family: "tt8378o00"; font-size: 13.000000pt;">Pace of Innovation
</span></h4>
<span style="font-family: "tt8376o00"; font-size: 12.000000pt;">Rapid change is in the DNA of Netflix. We use agile processes, not necessarily any particular
brand of Agile Process. It’s a core competitive advantage to be able to deploy new features and
functions every two weeks. This presents a significant challenge to both the work and mentality
of the quality assurance team. In some ways, the most important skill of a QA engineer isn’t her
ability to test, but her ability to decide what to test. We focus our limited testing resources on
those changes that present the largest risk to the business. This means that we rely on our ability
to: quickly detect bugs in production, find the root cause, correct the problem and deploy the fix
to handle those defects not detected before deployment. A great luxury of being a web based
application is that deploying new code is transparent to users and immediately fixes the problem
for the entire user base. Contrast this with the world of shrink-wrap software, where a new
release means shoving around a big pile of atoms (CDs, boxes, documentation, etc.) and not just
bits. Even in the case of electronically delivered patches, you have to solve a number of
problems with delivery, authentication and authorization that are free when your core business
revolves around a website.</span><br />
<h4>
<span style="font-family: "tt8378o00"; font-size: 13.000000pt;">Nimble Processes
</span></h4>
<span style="font-family: "tt8376o00"; font-size: 12.000000pt;">If you run with scissors and you trip, you have to be good at recovering. The ability to change
the application so often is a double-edged sword. Repeated success with short release cycles
trains business owners to rely on vision becoming working code in record time. Keeping serious
defects at bay can become a challenge when the flow of requirements becomes too mercurial.
However, this nimbleness is a great competitive advantage because you can quickly react to
changes in the market. More importantly, you can also quickly iterate on proposed improvements
to the service. With these costs and benefits in mind, experimentation has become the core value
driving how Netflix continuously improves the website and supporting systems.
</span><br />
<span style="font-family: "tt8376o00"; font-size: 12.000000pt;"><br /></span>
<span style="font-family: "tt8376o00"; font-size: 12.000000pt;">We test not only the quality of the software, but the quality of the members’ experience. In the
process of creating any given feature, we will develop variations on how it works, and test those
variations on prospective, new and existing members before rolling them out as the standard
experience. We instrument code to collect metrics around whatever member behavior that
feature is supposed to drive, and we pick the version with the biggest lift in the desired behavior.
The ability to assess all of the variations during the QA cycle becomes a great challenge. To that
end, developers build in URL-parameter based hooks and other shortcuts that a software tester
can use to force the presentation of a given customer experience. Manual and automated
software tests can reproducibly verify specific versions of a member experience without lengthy
set up and tear down operations in the database or a long series of UI interactions.
</span><br />
<span style="font-family: "tt8376o00"; font-size: 12.000000pt;"><br /></span>
<span style="font-family: "tt8376o00"; font-size: 12.000000pt;">By being good at creating and verifying partitioned customer experiences (A/B tests), we can:
</span><br />
<ul>
<li style="font-family: 'TT837Co00'; font-size: 12.000000pt;">
<span style="font-family: "tt8376o00"; font-size: 12.000000pt;">understand what is important to the users
</span><br />
</li>
<li style="font-family: 'TT837Co00'; font-size: 12.000000pt;">
<span style="font-family: "tt8376o00"; font-size: 12.000000pt;">understand how well we’ve addressed those needs
</span><br />
</li>
<li style="font-family: 'TT837Co00'; font-size: 12.000000pt;">
<span style="font-family: "tt8376o00"; font-size: 12.000000pt;">iterate quickly, honing in on the most relevant and rewarding solutions</span></li>
</ul>
</div>
</div>
</div>
<div class="page" title="Page 594">
<div class="layoutArea">
<div class="column">
<span style="font-family: "tt8376o00";">In order to support this degree of experimentation across a growing number of functional silos, it’s important to have tools that let us walk through the exponentially growing number of variations of: browser, feature, test cell and customer state. To that end, we’re using the Selenium framework to test different presentations of customer experiences undergoing A/B </span><span style="font-family: "tt8376o00"; font-size: 12pt;">testing.</span><span style="font-family: "tt8379o00"; font-size: 8pt; vertical-align: 6pt;">2 </span><span style="font-family: "tt8376o00"; font-size: 12pt;">This allows us to programmatically walk through the same basic flows while validating
that all customers will have the correct experience.</span><br />
<span style="font-family: "tt8376o00"; font-size: 12pt;"><br /></span>
<span style="font-family: "tt8376o00"; font-size: 12.000000pt;">Selenium is a powerful framework for testing browser based applications. Being written in
JavaScript and running in the actual target browser, any test scripts will have access to all of the
components that make up the rendered page. The inherent power of this model can be leveraged
by judicious design and development of the code that creates the user interface. By providing a
clear and consistent framework for rendering the site, it becomes simpler to discover and verify
that the right content is being displayed in the right places on the page.
</span><br />
<span style="font-family: "tt8376o00"; font-size: 12.000000pt;"><br /></span>
By providing a ‘real end-user browser experience’ to test against, and by providing tools as part
of the website itself to drive a test into a specific user experience, one set of scripts can verify
that common functionality doesn’t break, even across many variations of the user experience.<br />
<h3>
<span style="font-family: "tt8377o00"; font-size: 14.000000pt;"><u>Scaling Systems
</u></span></h3>
<h4>
<span style="font-family: "tt8378o00"; font-size: 13.000000pt;">Components
</span></h4>
<span style="font-family: "tt8376o00"; font-size: 12.000000pt;">In the beginning, everything lived in the web application, all of the classes were available to each
other, and that was good enough. Then, the needs of the application grew. There were more
features, customers and movies. A monolithic application could no longer scale. This was not
good. The testability of the application was impaired because in order to test anything, you had
to spin up the whole web server and all of its supporting components.
</span><br />
<span style="font-family: "tt8376o00"; font-size: 12.000000pt;"><br /></span>
<span style="font-family: "tt8376o00"; font-size: 12.000000pt;">As the computational needs of different parts of the application have become more intense, the
carrying capacity of an individual web server in terms of the number of simultaneous customers
has shrunk. Upgrading the web server hardware has helped expand capacity in counterpoint to
this trend. Migrating to a 64-bit OS and JVM helped to crack the 1.6GB effective maximum heap
size imposed by the 2Gb process space limit of a 32 bit OS. However, as Parkinson’s Law</span><span style="font-family: "tt8379o00"; font-size: 8.000000pt; vertical-align: 6.000000pt;">3 </span><span style="font-family: "tt8376o00"; font-size: 12.000000pt;">has
been applied, the base heap consumption of a web server immediately following startup has risen
from on the order of 400mb to on the order of 2GB. A ‘fully loaded’ 32 bit server carrying 1,600
customer sessions consumed approximately 1.2GB of the 1.6GB available. When the application
first migrated from 32 bit to 64 bit, the 8GB heap was able to comfortably support up to 6,400
customer sessions. This has dwindled over the last year down to 2,400 customer sessions per
server as the per-customer data used to customize the site presentation and the computational
cost of that customization have grown.
</span><br />
<span style="font-family: "tt8376o00"; font-size: 12.000000pt;"><br /></span>
<span style="font-family: "tt8376o00"; font-size: 12.000000pt;">A major effort is underway to abstract business logic out of the core web application into
dedicated middle-tier servers. This is in order to meet the challenges of greater data volumes,
more personalization and more customers. This will enable improved scalability of the web
application, and improved testability of the business logic that drives the web application. It will
improve the scalability of the application because individual components serving individual
functions can be horizontally scaled. Testability of the business logic is improved because the
presentation layer will reside in the front-end and all business logic must be accessed through a
well defined API.</span></div>
</div>
</div>
<div class="page" title="Page 595">
<div class="layoutArea">
<div class="column">
<h4>
<span style="font-family: "tt8378o00"; font-size: 13.000000pt;">Operational Insight
</span></h4>
<span style="font-family: "tt8376o00"; font-size: 12.000000pt;">When many developers are modifying the same code base, you cannot foresee and test all of the
possible interactions. This is why it is important to build the application on a foundation of
insight into the runtime operating environment. For example, developers have built a ‘tracer’
class that can be used to instrument method calls. The data gathered and summarized in hourly
buckets includes:
</span><br />
<ul>
<li style="font-family: 'TT837Co00'; font-size: 12.000000pt;">
<span style="font-family: "tt8376o00"; font-size: 12.000000pt;">minimum, maximum and mean execution time
</span><br />
</li>
<li style="font-family: 'TT837Co00'; font-size: 12.000000pt;">
<span style="font-family: "tt8376o00"; font-size: 12.000000pt;">the number of executions
</span><br />
</li>
<li style="font-family: 'TT837Co00'; font-size: 12.000000pt;">
<span style="font-family: "tt8376o00"; font-size: 12.000000pt;">a histogram for the number of executions taking <10 10-50="" 50-100="" milliseconds="" msec="" span=""></10></span><br />
<span style="font-family: "tt8376o00"; font-size: 12.000000pt;">msec, and on up to > 10 seconds.</span><br />
</li>
</ul>
</div>
</div>
<div class="layoutArea">
<div class="column">
<span style="font-size: 11pt;"></span></div>
</div>
</div>
<div class="page" title="Page 596">
<div class="layoutArea">
<div class="column">
<span style="font-family: "tt8376o00";">Tools like these can be used both during the QA cycle and during the triage of production problems. The ability to see what’s going on inside the system at production runtime is invaluable in recovering quickly and effectively from performance issues. It is also invaluable in understanding the change in the performance profile of an application over time.</span><br />
<h3>
<span style="font-family: "tt8376o00";"><u>Scaling Teams</u></span></h3>
<h4>
<span style="font-family: "tt8376o00";">Team Communications</span></h4>
<span style="font-family: "tt8376o00";">Four years ago, the web quality assurance team was four QA engineers and a manager. This was the only QA team in the company at the time. Back end systems developers did their own testing. The web QA manager was also in charge of the engineers who built the user interface of the website. There were three functional silos and everyone working on the website was on the same wing of the same floor. There was even room for the data warehouse team in the same space. The QA engineers and production engineers were sitting in the middle of the developers for their silo, along with the product managers for that silo. If there were questions or clarifications, they were to be had by sticking your head up over the cubicle wall and asking.</span><br />
<span style="font-family: "tt8376o00";"><br /></span>
<span style="font-family: "tt8376o00";">Fast forward four years, and what was Web Engineering is now Product Development. This team now covers two floors of a much larger building, split into twelve different functional silos. The three QA teams have three managers, fourteen QA engineers (with open requisitions) and a configuration and release engineer. A separate QA team for the back end systems has also grown from non-existence to eight members. Six product managers and six designers provide work for the functional silos, but now they’re all sitting clustered together instead of living with their teams. The QA engineers and eight production engineers are still sitting among the developers they support, but there are many more developers being supported. The number of interested parties has grown, but the number of interconnections has grown faster. As the QA engineers have become more specialized, the need to share expertise with peers has become more critical.</span><br />
<h4>
<span style="font-family: "tt8376o00";">Component Organization</span></h4>
<br />
<span style="font-family: "tt8376o00";">With a monolithic web application and many development teams, coordination becomes a major source of overhead. Push schedules across the different functional silos must be coordinated because tightly coupled classes and business logic spread across the web application and the database require that we deploy the whole world at once. To allow functional silos to push when they’re ready instead of all pushing at the same time, we must break down the monolith into independent services running in separate processes on separate machines. This enforces </span><span style="font-family: "tt8376o00"; font-size: 12pt;">encapsulation, reduces coupling and increases the cohesion of each service. This allows for more
focused triage in the event of a system issue. If something melts down, only the team responsible
for the problem area has to stop new development work to figure it out.</span><br />
<h3>
<span style="font-family: "tt8378o00"; font-size: 13.000000pt;">QA Team Organization
</span></h3>
<span style="font-family: "tt8376o00"; font-size: 12.000000pt;">Four years ago, every QA engineer on the team did everything:
</span><br />
<ul>
<li style="font-family: 'TT837Co00'; font-size: 12.000000pt;">
<span style="font-family: "tt8376o00"; font-size: 12.000000pt;">tested features
</span><br />
</li>
<li style="font-family: 'TT837Co00'; font-size: 12.000000pt;">
<span style="font-family: "tt8376o00"; font-size: 12.000000pt;">built and shared what test automation and tools that we had
</span><br />
</li>
<li style="font-family: 'TT837Co00'; font-size: 12.000000pt;">
<span style="font-family: "tt8376o00"; font-size: 12.000000pt;">shared responsibility for builds
</span><br />
</li>
<li style="font-family: 'TT837Co00'; font-size: 12.000000pt;">
<span style="font-family: "tt8376o00"; font-size: 12.000000pt;">shared responsibility for deployments
</span><br />
</li>
<li style="font-family: 'TT837Co00'; font-size: 12.000000pt;">
<span style="font-family: "tt8376o00"; font-size: 12.000000pt;">pitched in on production monitoring tools and triage of site emergencies</span></li>
</ul>
<div>
<span style="font-family: "tt837co00";"></span><br />
<div>
<span style="font-family: "tt837co00";">An experiment in the fall of 2004 spun out the tool building and test automation function into a dedicated role. That experiment met with some limited successes, and still shows promise for future investment. We have gained some traction in having:</span></div>
<span style="font-family: "tt837co00";">
</span></div>
<ul>
<li style="font-family: 'TT837Co00'; font-size: 12.000000pt;"><span style="font-family: "tt8376o00"; font-size: 12.000000pt;">a consistently running nightly regression
</span><br />
</li>
<li style="font-family: 'TT837Co00'; font-size: 12.000000pt;">
<span style="font-family: "tt8376o00"; font-size: 12.000000pt;">a greater awareness among developers of the need for unit tests
</span><br />
</li>
<li style="font-family: 'TT837Co00'; font-size: 12.000000pt;">
<span style="font-family: "tt8376o00"; font-size: 12.000000pt;">a greater focus on capturing QA’s expertise in automated tests instead of tribal
</span><br />
<span style="font-family: "tt8376o00"; font-size: 12.000000pt;">knowledge</span></li>
</ul>
<div>
<span style="font-family: "tt8376o00";"></span><br />
<div>
<span style="font-family: "tt8376o00";">In the fall of 2005, another experiment dedicated one person to configuration and release duties. That experiment has been a complete success. The tool of yesterday was a Word document describing all of the manual steps needed to build, deploy and restart a web server from the command line of each server in the farm. The tool of today allows for selection of a particular build from a particular branch with push-button build, deploy and restart, on multiple QA or production servers simultaneously, all triggered and monitored from a simple and intuitive web interface.</span></div>
<span style="font-family: "tt8376o00";">
<div>
<br /></div>
<div>
Now, every QA engineer can spend their time focused on the tasks that maximize the mitigation of business risk:</div>
</span></div>
<ul>
<li style="font-family: 'TT837Co00'; font-size: 12.000000pt;"><span style="font-family: "tt8376o00"; font-size: 12.000000pt;">testing features
</span><br />
</li>
<li style="font-family: 'TT837Co00'; font-size: 12.000000pt;">
<span style="font-family: "tt8376o00"; font-size: 12.000000pt;">building automated tests
</span><br />
</li>
<li style="font-family: 'TT837Co00'; font-size: 12.000000pt;">
<span style="font-family: "tt8376o00"; font-size: 12.000000pt;">pitching in on production monitoring tools and triage of site emergencies</span><br />
</li>
</ul>
</div>
</div>
<div class="layoutArea">
<div class="column">
<span style="font-size: 11pt;"></span></div>
</div>
</div>
<div class="page" title="Page 597">
<div class="layoutArea">
<div class="column">
<div style="font-family: TT837Co00; font-size: 16px;">
<span style="font-family: "tt8376o00"; font-size: 12pt;">It’s time for another experiment. The team has grown from three full time engineers and a hands- on manager to ten engineers and a full-time manager. The single manager has become a choke- point for all of the relevant information that needs to flow from the development teams through QA to the operational teams. To address this, splitting the team is proposed.</span></div>
<div style="font-family: TT837Co00; font-size: 16px;">
<span style="font-family: "tt8376o00"; font-size: 12pt;"><br /></span></div>
<div style="font-family: TT837Co00; font-size: 16px;">
<span style="font-family: "tt8376o00"; font-size: 12pt;">Instead of a single QA organization concerned with the health of the entire website, two teams are formed, each focused on one aspect of the whole. The first is concerned with “Customers” and the second is concerned with “Movies”. The Customer team has responsibility for all parts of the system that are about the subscribers: signing them up, maintaining their account information and queues, Customer Service tools and managing who they associate with via the Friends feature. The Movie team has responsibility for all parts of the system that are about the movies: merchandising, metadata (titles, actors, inventory levels, etc.), ratings, recommendations and instant viewing.</span></div>
<div style="font-family: TT837Co00; font-size: 16px;">
<span style="font-family: "tt8376o00"; font-size: 12pt;"><br /></span></div>
<span style="font-family: "tt8376o00"; font-size: 12.000000pt;">Within these teams there is still the issue of solving the business problem of more engineers
producing more code deployed as more components. To address this, a virtual split of the two
QA teams is proposed. This is a further specialization within each sub-team, but not
specialization by functional area. This split will focus the orientation of the QA engineers into
two areas: functional QA and operational QA.
</span><br />
<span style="font-family: "tt8376o00"; font-size: 12.000000pt;"><br /></span>
<span style="font-family: "tt8376o00"; font-size: 12.000000pt;">These are not job descriptions for which specific engineers are hired to do each type of testing.
The following table describes more the nature of a tester and how they approach their job within
the context of a particular functional silo.
</span><br />
<span style="font-family: "tt8376o00"; font-size: 12.000000pt;"><br /></span>
</div>
</div>
<table style="border-collapse: collapse;"><colgroup><col style="width: 28.853755%;"></col><col style="width: 35.573123%;"></col><col style="width: 35.573123%;"></col>
</colgroup><tbody>
<tr>
<td style="border-bottom-color: rgb(0.000000%, 0.000000%, 0.000000%); border-bottom-width: 0.480000pt; border-left-color: rgb(0.000000%, 0.000000%, 0.000000%); border-left-width: 0.480000pt; border-right-color: rgb(0.000000%, 0.000000%, 0.000000%); border-right-width: 0.480000pt; border-style: solid; border-top-color: rgb(0.000000%, 0.000000%, 0.000000%); border-top-width: 0.480000pt;"><div class="layoutArea">
<div class="column">
<span style="font-family: "tt837eo00"; font-size: 12.000000pt;">Attribute
</span></div>
</div>
</td>
<td style="border-bottom-color: rgb(0.000000%, 0.000000%, 0.000000%); border-bottom-width: 0.480000pt; border-left-color: rgb(0.000000%, 0.000000%, 0.000000%); border-left-width: 0.480000pt; border-right-color: rgb(0.000000%, 0.000000%, 0.000000%); border-right-width: 0.480000pt; border-style: solid; border-top-color: rgb(0.000000%, 0.000000%, 0.000000%); border-top-width: 0.480000pt;"><div class="layoutArea">
<div class="column">
<span style="font-family: "tt837eo00"; font-size: 12.000000pt;">Functional
</span></div>
</div>
</td>
<td style="border-bottom-color: rgb(0.000000%, 0.000000%, 0.000000%); border-bottom-width: 0.480000pt; border-left-color: rgb(0.000000%, 0.000000%, 0.000000%); border-left-width: 0.480000pt; border-right-color: rgb(0.000000%, 0.000000%, 0.000000%); border-right-width: 0.480000pt; border-style: solid; border-top-color: rgb(0.000000%, 0.000000%, 0.000000%); border-top-width: 0.480000pt;"><div class="layoutArea">
<div class="column">
<span style="font-family: "tt837eo00"; font-size: 12.000000pt;">Operational
</span></div>
</div>
</td>
</tr>
<tr>
<td style="border-bottom-color: rgb(0.000000%, 0.000000%, 0.000000%); border-bottom-width: 0.480000pt; border-left-color: rgb(0.000000%, 0.000000%, 0.000000%); border-left-width: 0.480000pt; border-right-color: rgb(0.000000%, 0.000000%, 0.000000%); border-right-width: 0.480000pt; border-style: solid; border-top-color: rgb(0.000000%, 0.000000%, 0.000000%); border-top-width: 0.480000pt;"><div class="layoutArea">
<div class="column">
<span style="font-family: "tt8376o00"; font-size: 12.000000pt;">Testing Perspective
</span></div>
</div>
</td>
<td style="border-bottom-color: rgb(0.000000%, 0.000000%, 0.000000%); border-bottom-width: 0.480000pt; border-left-color: rgb(0.000000%, 0.000000%, 0.000000%); border-left-width: 0.480000pt; border-right-color: rgb(0.000000%, 0.000000%, 0.000000%); border-right-width: 0.480000pt; border-style: solid; border-top-color: rgb(0.000000%, 0.000000%, 0.000000%); border-top-width: 0.480000pt;"><div class="layoutArea">
<div class="column">
<span style="font-family: "tt8376o00"; font-size: 12.000000pt;">Inward looking (back towards
the developers and product
managers)
</span></div>
</div>
</td>
<td style="border-bottom-color: rgb(0.000000%, 0.000000%, 0.000000%); border-bottom-width: 0.480000pt; border-left-color: rgb(0.000000%, 0.000000%, 0.000000%); border-left-width: 0.480000pt; border-right-color: rgb(0.000000%, 0.000000%, 0.000000%); border-right-width: 0.480000pt; border-style: solid; border-top-color: rgb(0.000000%, 0.000000%, 0.000000%); border-top-width: 0.480000pt;"><div class="layoutArea">
<div class="column">
<span style="font-family: "tt8376o00"; font-size: 12.000000pt;">Outward looking (forward
towards the NOC and the
production systems)
</span></div>
</div>
</td>
</tr>
<tr>
<td style="border-bottom-color: rgb(0.000000%, 0.000000%, 0.000000%); border-bottom-width: 0.480000pt; border-left-color: rgb(0.000000%, 0.000000%, 0.000000%); border-left-width: 0.480000pt; border-right-color: rgb(0.000000%, 0.000000%, 0.000000%); border-right-width: 0.480000pt; border-style: solid; border-top-color: rgb(0.000000%, 0.000000%, 0.000000%); border-top-width: 0.480000pt;"><div class="layoutArea">
<div class="column">
<span style="font-family: "tt8376o00"; font-size: 12.000000pt;">Testing Focus
</span></div>
</div>
</td>
<td style="border-bottom-color: rgb(0.000000%, 0.000000%, 0.000000%); border-bottom-width: 0.480000pt; border-left-color: rgb(0.000000%, 0.000000%, 0.000000%); border-left-width: 0.480000pt; border-right-color: rgb(0.000000%, 0.000000%, 0.000000%); border-right-width: 0.480000pt; border-style: solid; border-top-color: rgb(0.000000%, 0.000000%, 0.000000%); border-top-width: 0.480000pt;"><div class="layoutArea">
<div class="column">
<span style="font-family: "tt8376o00"; font-size: 12.000000pt;">Reviews changes at the feature
and functional level
</span></div>
</div>
</td>
<td style="border-bottom-color: rgb(0.000000%, 0.000000%, 0.000000%); border-bottom-width: 0.480000pt; border-left-color: rgb(0.000000%, 0.000000%, 0.000000%); border-left-width: 0.480000pt; border-right-color: rgb(0.000000%, 0.000000%, 0.000000%); border-right-width: 0.480000pt; border-style: solid; border-top-color: rgb(0.000000%, 0.000000%, 0.000000%); border-top-width: 0.480000pt;"><div class="layoutArea">
<div class="column">
<span style="font-family: "tt8376o00"; font-size: 12.000000pt;">Reviews changes at the system
level and integrated systems
level
</span></div>
</div>
</td>
</tr>
<tr>
<td style="border-bottom-color: rgb(0.000000%, 0.000000%, 0.000000%); border-bottom-width: 0.480000pt; border-left-color: rgb(0.000000%, 0.000000%, 0.000000%); border-left-width: 0.480000pt; border-right-color: rgb(0.000000%, 0.000000%, 0.000000%); border-right-width: 0.480000pt; border-style: solid; border-top-color: rgb(0.000000%, 0.000000%, 0.000000%); border-top-width: 0.480000pt;"><div class="layoutArea">
<div class="column">
<span style="font-family: "tt8376o00"; font-size: 12.000000pt;">Guardian of...
</span></div>
</div>
</td>
<td style="border-bottom-color: rgb(0.000000%, 0.000000%, 0.000000%); border-bottom-width: 0.480000pt; border-left-color: rgb(0.000000%, 0.000000%, 0.000000%); border-left-width: 0.480000pt; border-right-color: rgb(0.000000%, 0.000000%, 0.000000%); border-right-width: 0.480000pt; border-style: solid; border-top-color: rgb(0.000000%, 0.000000%, 0.000000%); border-top-width: 0.480000pt;"><div class="layoutArea">
<div class="column">
<span style="font-family: "tt8376o00"; font-size: 12.000000pt;">... the member experience
</span></div>
</div>
</td>
<td style="border-bottom-color: rgb(0.000000%, 0.000000%, 0.000000%); border-bottom-width: 0.480000pt; border-left-color: rgb(0.000000%, 0.000000%, 0.000000%); border-left-width: 0.480000pt; border-right-color: rgb(0.000000%, 0.000000%, 0.000000%); border-right-width: 0.480000pt; border-style: solid; border-top-color: rgb(0.000000%, 0.000000%, 0.000000%); border-top-width: 0.480000pt;"><div class="layoutArea">
<div class="column">
<span style="font-family: "tt8376o00"; font-size: 12.000000pt;">... business continuity
</span></div>
</div>
</td>
</tr>
<tr>
<td style="border-bottom-color: rgb(0.000000%, 0.000000%, 0.000000%); border-bottom-width: 0.480000pt; border-left-color: rgb(0.000000%, 0.000000%, 0.000000%); border-left-width: 0.480000pt; border-right-color: rgb(0.000000%, 0.000000%, 0.000000%); border-right-width: 0.480000pt; border-style: solid; border-top-color: rgb(0.000000%, 0.000000%, 0.000000%); border-top-width: 0.480000pt;"><div class="layoutArea">
<div class="column">
<span style="font-family: "tt8376o00"; font-size: 12.000000pt;">Strongest Testing Style
</span></div>
</div>
</td>
<td style="border-bottom-color: rgb(0.000000%, 0.000000%, 0.000000%); border-bottom-width: 0.480000pt; border-left-color: rgb(0.000000%, 0.000000%, 0.000000%); border-left-width: 0.480000pt; border-right-color: rgb(0.000000%, 0.000000%, 0.000000%); border-right-width: 0.480000pt; border-style: solid; border-top-color: rgb(0.000000%, 0.000000%, 0.000000%); border-top-width: 0.480000pt;"><div class="layoutArea">
<div class="column">
<span style="font-family: "tt8376o00"; font-size: 12.000000pt;">Black box, but not necessarily
all black box testing
</span></div>
</div>
</td>
<td style="border-bottom-color: rgb(0.000000%, 0.000000%, 0.000000%); border-bottom-width: 0.480000pt; border-left-color: rgb(0.000000%, 0.000000%, 0.000000%); border-left-width: 0.480000pt; border-right-color: rgb(0.000000%, 0.000000%, 0.000000%); border-right-width: 0.480000pt; border-style: solid; border-top-color: rgb(0.000000%, 0.000000%, 0.000000%); border-top-width: 0.480000pt;"><div class="layoutArea">
<div class="column">
<span style="font-family: "tt8376o00"; font-size: 12.000000pt;">White box, but also production
monitoring and production
operational tools
</span></div>
</div>
</td>
</tr>
<tr>
<td style="border-bottom-color: rgb(0.000000%, 0.000000%, 0.000000%); border-bottom-width: 0.480000pt; border-left-color: rgb(0.000000%, 0.000000%, 0.000000%); border-left-width: 0.480000pt; border-right-color: rgb(0.000000%, 0.000000%, 0.000000%); border-right-width: 0.480000pt; border-style: solid; border-top-color: rgb(0.000000%, 0.000000%, 0.000000%); border-top-width: 0.480000pt;"><div class="layoutArea">
<div class="column">
<span style="font-family: "tt8376o00"; font-size: 12.000000pt;">Answers the question...
</span></div>
</div>
</td>
<td style="border-bottom-color: rgb(0.000000%, 0.000000%, 0.000000%); border-bottom-width: 0.480000pt; border-left-color: rgb(0.000000%, 0.000000%, 0.000000%); border-left-width: 0.480000pt; border-right-color: rgb(0.000000%, 0.000000%, 0.000000%); border-right-width: 0.480000pt; border-style: solid; border-top-color: rgb(0.000000%, 0.000000%, 0.000000%); border-top-width: 0.480000pt;"><div class="layoutArea">
<div class="column">
<span style="font-family: "tt8376o00"; font-size: 12.000000pt;">“Does it do what we said we
want it to do?”
</span></div>
</div>
</td>
<td style="border-bottom-color: rgb(0.000000%, 0.000000%, 0.000000%); border-bottom-width: 0.480000pt; border-left-color: rgb(0.000000%, 0.000000%, 0.000000%); border-left-width: 0.480000pt; border-right-color: rgb(0.000000%, 0.000000%, 0.000000%); border-right-width: 0.480000pt; border-style: solid; border-top-color: rgb(0.000000%, 0.000000%, 0.000000%); border-top-width: 0.480000pt;"><div class="layoutArea">
<div class="column">
<span style="font-family: "tt8376o00"; font-size: 12.000000pt;">“Will this behave how we need
it to when we roll it out?”
</span></div>
</div>
</td>
</tr>
<tr>
<td style="border-bottom-color: rgb(0.000000%, 0.000000%, 0.000000%); border-bottom-width: 0.480000pt; border-left-color: rgb(0.000000%, 0.000000%, 0.000000%); border-left-width: 0.480000pt; border-right-color: rgb(0.000000%, 0.000000%, 0.000000%); border-right-width: 0.480000pt; border-style: solid; border-top-color: rgb(0.000000%, 0.000000%, 0.000000%); border-top-width: 0.480000pt;"><div class="layoutArea">
<div class="column">
<span style="font-family: "tt8376o00"; font-size: 12.000000pt;">Bonus Points
</span></div>
</div>
</td>
<td colspan="2" rowspan="1" style="border-bottom-color: rgb(0.000000%, 0.000000%, 0.000000%); border-bottom-width: 0.480000pt; border-left-color: rgb(0.000000%, 0.000000%, 0.000000%); border-left-width: 0.480000pt; border-right-color: rgb(0.000000%, 0.000000%, 0.000000%); border-right-width: 0.480000pt; border-style: solid; border-top-color: rgb(0.000000%, 0.000000%, 0.000000%); border-top-width: 0.480000pt;"><div class="layoutArea">
<div class="column">
<span style="font-family: "tt8376o00"; font-size: 12.000000pt;">Build tools to help figure out how to fix the system when we
find that we answered these questions incorrectly.
</span></div>
</div>
</td>
</tr>
</tbody></table>
<div class="layoutArea">
<div class="column">
<span style="font-family: "tt8376o00"; font-size: 12.000000pt;"><br /></span>
<span style="font-family: "tt8376o00"; font-size: 12.000000pt;">The expected benefits are:
</span><br />
<ol>
<li style="font-family: 'TT8376o00'; font-size: 12.000000pt;">
<span style="font-size: 12pt;">Each sub-team improves their load sharing among the team members by raising
awareness of these two sets of attributes within the role of each QA engineer. Each team
member identifies their strengths and weaknesses relative to these attributes and seeks
other team members to shore up their weak points.
</span><br />
</li>
<li style="font-family: 'TT8376o00'; font-size: 12.000000pt;">
<span style="font-size: 12pt;">Each sub-team is able to better identify risks to the business from each major functional
area because of the many eyes on the narrowed but shared focus (Customer vs. Movies).
</span><br />
</li>
<li style="font-family: 'TT8376o00'; font-size: 12.000000pt;">
<span style="font-size: 12pt;">Each sub-team is able to flexibly distribute testing load over a given push cycle without
negotiations at the level of the functional silo engineering managers having to take place.
</span><br />
</li>
</ol>
<span style="font-family: "tt8376o00"; font-size: 12.000000pt;">The intent is not to remove the barriers between the functional silos, but to lower them. If you
compare this to college, every QA engineer should have a Major which corresponds to her
functional silo, and she also has a Minor within the Customer or Movie teams that they can pitch
in on when there is more business risk in someone else’s area. This proposal lets the QA
engineers more flexibly address areas where the most business risk exists within a smaller, more
focused team instead of trying to allocate resources and cross train for the whole site.</span></div>
</div>
<div class="layoutArea">
<div class="column">
<h3>
<span style="font-family: "tt8377o00"; font-size: 14pt;"><u>Conclusion</u></span></h3>
</div>
</div>
</div>
<div class="page" title="Page 598">
<div class="layoutArea">
<div class="column">
<span style="font-family: "tt8376o00"; font-size: 12.000000pt;">As a software product grows, development organizations face challenges that grow as fast or
faster. Blindly throwing more people at these challenges can result in a tangled mess of toes
being trod upon and defects slipping into production. Throwing intelligent people that know how
to get things done at these challenges can delay the day of reckoning. This solution relies on
personal heroics and sheer talent. However, the scalable solution is to use these talented people
to decompose the problem in two dimensions. First, simplify the application by breaking it down
into smaller units that can be tested in an automated fashion and can independently move
forward as the part of the business it serves needs it to. Second, simplify the team by breaking
down into smaller units focused on individual components instead of the whole system.
</span><br />
<span style="font-family: "tt8376o00"; font-size: 12.000000pt;"><br /></span>
<span style="font-family: "tt8376o00"; font-size: 12.000000pt;">A lot can be learned from movies. For example, there are lessons to be found in </span><span style="font-family: "tt837fo00"; font-size: 12.000000pt;">The Wizard of
Oz </span><span style="font-family: "tt8376o00"; font-size: 12.000000pt;">that can be applied to how to scale a software quality team. Dorothy is a perfect example of
what can be done with a small team. She starts out all alone, lost and bewildered in a land that
someone else has built. She does what any good QA engineer would do: she starts asking
intelligent questions. Along the way, she builds a team that has all the right skills to solve a
variety of problems, where the strengths and weaknesses of the team members all compliment
each other. Eventually, the team gets to where she thinks it needs to be. They’ve reached the
oracle that knows all the answers and can fix all their problems. However, she then learns that
her journey has just begun. This all powerful wizard she’s been seeking out is merely a clever
man who built an automated system so as to </span><span style="font-family: "tt837fo00"; font-size: 12.000000pt;">appear </span><span style="font-family: "tt8376o00"; font-size: 12.000000pt;">oracular. Dorothy wakes from her dream
just as the real fun in Oz starts, where real problems get solved in a repeatable manner by
attacking the most important ones in an intelligent fashion. </span><br />
<span style="font-family: "tt8376o00"; font-size: 12.000000pt;"><br /></span><span style="font-family: "tt8376o00"; font-size: 12.000000pt;"><br /></span>
<br />
<div class="layoutArea" style="-webkit-text-stroke-width: 0px; color: black; font-family: Times; font-size: medium; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: start; text-decoration-color: initial; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;">
<div class="column">
</div>
</div>
<br />
<div class="layoutArea" style="-webkit-text-stroke-width: 0px; color: black; font-family: Times; font-size: medium; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: start; text-decoration-color: initial; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;">
<div class="column">
<div style="margin: 0px;">
<span style="font-family: "tt837ao00"; font-size: 6pt; vertical-align: 5pt;">1 </span><span style="font-family: "tt837bo00"; font-size: 10pt;">Netflix. 2007. “8 Great Reasons to Work at Netflix.” Retrieved June 25, 2007 (</span><span style="color: #1a1a1a; font-family: "tt837bo00"; font-size: 10pt;">http://www.netflix.com/Jobs?id=5366#reason6</span><span style="font-family: "tt837bo00"; font-size: 10pt;">)</span></div>
<div class="layoutArea" style="-webkit-text-stroke-width: 0px; color: black; font-family: Times; font-size: medium; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: start; text-decoration-color: initial; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;">
<div class="column">
<div style="margin: 0px;">
<span style="font-family: "tt837ao00"; font-size: 6pt; vertical-align: 5pt;">2 </span><span style="color: #1a1a1a; font-family: "tt837bo00"; font-size: 10pt;">http://www.openqa.org/selenium/</span><br />
<span style="font-family: "tt837ao00"; font-size: 6pt; vertical-align: 5pt;">3 </span><span style="font-family: "tt837bo00"; font-size: 10pt;">Wikipedia. 2007. “Parkinson’s Law”. Retrieved June 26, 2007 (</span><span style="color: #1a1a1a; font-family: "tt837bo00"; font-size: 10pt;">http://en.wikipedia.org/wiki/Parkinson's_law</span><span style="font-family: "tt837bo00"; font-size: 10pt;">)</span></div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
Robhttp://www.blogger.com/profile/07182206965704673189noreply@blogger.com0tag:blogger.com,1999:blog-11218956.post-6947329141302997282016-12-17T08:52:00.002-08:002016-12-17T08:52:45.312-08:00A Letter To President Obama<div class="tr_bq">
I read Joe Klein's "<a href="http://time.com/4594954/amazing-grace/">Amazing Grace</a>" article in the Dec 19 edition of Time, and was inspired to send the following letter to our outgoing President today:</div>
<br />
<hr />
Dear President Obama,<br />
<br />
You may recall that you spoke at OPOWER's Arlington headquarters in March of 2010. Just a few months later, in June of 2010, I was hired to help build the engineering team for OPOWER's San Francisco office. That was the first time I missed you.<br />
<br />
In the two weeks leading up to June 24 of 2010, I was ramping up on my new job at the Arlington office. As I was leaving the next day, my boss took me and another co-worker out to lunch on that Thursday. He offered me the choice of where to go. Two of his suggestions were Guajilo Mexican food or Ray's Hell Burger. I thought Mexican sounded good, so we walked there. A short while later, black SUVs showed up and a Secret Service agent posted himself inside the door of Gualjilo's to make sure nobody left while you and Dmitry Medvedev enjoyed a burger and fries next door at Ray's. This was the second time I missed you.<br />
<br />
Now we come to the end of your term, and I can't help but already be missing you for a third time. I will most miss your clarity of vision, our steady progress towards broader public good and the compassion and leadership you demonstrated and modelled for our whole nation. Whether in the face of good, bad or sometimes ugly events, I always felt reassured by your hand at the wheel.<br />
<br />
I have grave fears that the same legislative engine that so vigorously opposed all the good that you've accomplished in spite of them will now spitefully dismantle it all in concert with the President Elect. These fears have caused me to question the 22nd Amendment. However, you have inspired in me great hope that what has been done once can be done again. That anything undone can be re-done with sufficient clarity of vision, steady progress, compassion and leadership.<br />
<br />
Respectfully and Thankfully,<br />
<br />
Rob Fagen
<br />
<hr />
Robhttp://www.blogger.com/profile/07182206965704673189noreply@blogger.com0tag:blogger.com,1999:blog-11218956.post-71910004626976776892016-03-23T11:38:00.001-07:002016-04-07T05:21:42.343-07:00Getting Screwed (a little) By StarbucksOn April 12, 2016, Starbucks is adjusting their customer loyalty program. Instead of one Star per purchase, with a free item every 12 stars, you will now earn 2 Stars per dollar you spend, and need to collect 125 Stars for a free item. Additionally, at the transition any Stars you have on April 12 will be multiplied by 11.<br />
<br />
I did a little analysis of whether the transition and ongoing purchases are more or less rewarding under the new regime. It is (unsurprisingly) sensitive to what your average purchase is. Here's the numbers:<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOV6ZY47ad5peEsYZ351XB1RqNfR8pWEPVsJ1CNec2ohqc4SwqD_5roUKtruexHrvC-vmNclWa8M6BHP-hEoPFPYhl2jCmh1r47NaVvoRhdR7mPpckk0raVZgAjms_bQzjZf5f/s1600/Untitled.png" imageanchor="1"><img border="0" height="106" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOV6ZY47ad5peEsYZ351XB1RqNfR8pWEPVsJ1CNec2ohqc4SwqD_5roUKtruexHrvC-vmNclWa8M6BHP-hEoPFPYhl2jCmh1r47NaVvoRhdR7mPpckk0raVZgAjms_bQzjZf5f/s400/Untitled.png" width="400" /></a><br />
<br />
Not to spoil the surprise, but if your average purchase is less than $5.21, you will not be receiving as many rewards as you used to. For example, someone who spends $3.50 per day will now have to spend $62.50 for a freebie instead of $42. They are getting a 5.6% return on their purchases instead of the 8.3% they used to. That's a pretty big haircut.<br />
<br />
Then again, you're spending $3.50 for something with a make-at-home cost of less than $0.50 plus the amortization of whatever equipment you use. If you buy a $400 espresso maker and it lasts for four years of daily-weekday coffee (250/year), that's an extra $0.40, for less than $1.00 total.<br />
<br />
Actually, if you're going to go that route, the new Starbucks rewards plan is a great change for you. You'll now get a free bag of beans after every five bags instead of every 12.Robhttp://www.blogger.com/profile/07182206965704673189noreply@blogger.com0tag:blogger.com,1999:blog-11218956.post-23469036754144672022016-03-17T11:49:00.001-07:002016-03-17T11:49:33.405-07:00Fight back against net anti-neutralityI just sent this message to the FCC via <a href="https://www.battleforthenet.com/?org=dp">demandprogress.org</a> -- I would recommend you do as well.
<br />
<blockquote>
Dear FCC, </blockquote>
<blockquote>
Please don't let self-interested actors gut your brave and excellent work in preventing them from violating one of the internet's most fundamental operating principles: net neutrality.
As a collaborative form of communication, the internet has thrived when all connected networks have been fair, balanced and unbiased towards the traffic passing over them. </blockquote>
<blockquote>
Previously, the attempts to capture the internet focused on charging content providers for unimpeded data transmission to the customers of an ISP. When that consumer requests content from a paying content provider, service is fast and efficient. When that consumer requests content from a non-paying content provider, service is throttled. This was stopped by last year's ruling. </blockquote>
<blockquote>
Now, networks are implementing plans where total data for a customer is capped, followed by a reduction in level of service when the cap is exceeded. They are exempting their own content or the content of a paying content provider from affecting those caps.
The equation is the same whether the network constraint is on the service provided or the source of the data. The outcome is identical if the behavior at the consuming endpoint is impaired when a non-exempt data source serves data. The outcome is against the Title II rules. </blockquote>
<blockquote>
Please act to enforce the rules and keep the internet open and thriving.
</blockquote>
Robhttp://www.blogger.com/profile/07182206965704673189noreply@blogger.com0tag:blogger.com,1999:blog-11218956.post-33555231800797820282015-05-26T13:35:00.001-07:002015-05-26T13:37:47.866-07:00A Mathematical Riddle I Thought Of At RandomA bit more than ten-thousand, or just seventeen.<br />
What is the number that you think I mean?
<br />
<br />
<br />
<div id="spoiler" style="display: none;">
The base ten number 10001 one more (a bit in binary notation) than ten-thousand.<br>The binary number 10001 in base ten is seventeen.
</div>
<button onclick="if(document.getElementById('spoiler') .style.display=='none') {document.getElementById('spoiler') .style.display=''}else{document.getElementById('spoiler') .style.display='none'}" title="Click to show/hide content" type="button">Answer!</button>
<br />
<br />
Robhttp://www.blogger.com/profile/07182206965704673189noreply@blogger.com0tag:blogger.com,1999:blog-11218956.post-31200355156043483192014-03-12T15:48:00.001-07:002014-03-12T15:48:36.567-07:00And so it begins...Welcome to the <a href="http://news.yahoo.com/candy-crush-saga-maker-king-seeks-7-56-105839209--sector.html">harbinger of the next financial crisis</a>.<br />
<br />
King Digital Entertainment, maker of Candy Crush (and a bunch of other stuff that hasn't been nearly as successful) is going public with a multi-billion dollar valuation and 600+ employees.<br />
<br />
Granted that they are profitable, and so the half billion dollars they raise will give them infinite runway. However, I have but three words: this. seems. crazy.<br />
<br />
<supernatural-being-of-your-choice> bless them, and I hope they're successful, but my gut tells me we've reached the peak. I think I'm heading towards a lot more cash.</supernatural-being-of-your-choice>Robhttp://www.blogger.com/profile/07182206965704673189noreply@blogger.com0tag:blogger.com,1999:blog-11218956.post-1558205490445679082013-11-05T10:21:00.001-08:002013-11-05T10:21:25.388-08:00Brilliant or sociopathic: you decideGot an email from someone at work, and it included a number of attachments. Turns out there were no real attachments, just all of the images that this person includes in their email signature. I turn to my neighbor and ask "Am I a crotchety old fart if I don't like seeing all these images pasted into email signatures? <a href="http://tools.ietf.org/html/rfc3676#section-4.3">Doesn't anyone read RFCs any more</a>?". He did tell me I was a crotchety old fart, but he did agree it was kind of ridiculous the number and size of images in signatures these days.<br />
<br />
Then, inspiration struck. Stick a google display ad in your signature. Stick an Amazon affiliate block in your email signature. Clickthru rates will stink, but think of the pageviews!Robhttp://www.blogger.com/profile/07182206965704673189noreply@blogger.com0tag:blogger.com,1999:blog-11218956.post-55078097878727649352013-06-03T17:27:00.002-07:002013-06-03T17:28:42.454-07:00Huffington Post is just as stupid as Vallejo<div class="tr_bq">
So I was reading about the guy who painted a crosswalk in Vallejo and got arrested for vandalism.</div>
<br />
<a href="http://www.huffingtonpost.com/2013/06/01/anthony-cardenas-paint-crosswalk_n_3372018.html">HuffPo had an article.</a><br />
<br />
<a href="http://www.huffingtonpost.com/social/AlwaysCanadian/anthony-cardenas-paint-crosswalk_n_3372018_258249249.html">Some yahoo made a comment about it:</a><br />
<blockquote class="tr_bq">
<span style="background-color: #f1e5f5; font-family: Arial; font-size: 13px; line-height: 16px;">I hate to be the sole voice stating that I feel the sentence for painting an unauthorised cross-walk was well deserved. There must have been a reason why the City did not paint one at that location in the first place, especially when there are three others. Maybe there was a visibility issue, a curve in the road, different elevation, bushes, anything that makes it harder for approaching cars to see pedestrians at that location. A crosswalk ( basically lines painted on a road) would not give any protection to the pedestrian if the driver of the car can't stop in time. </span><span style="background-color: #f1e5f5; font-family: Arial; font-size: 13px; line-height: 16px;">Look at it from this point of view : What if some unfortunate child stepped onto a unauthorized crosswalk, thinking it safe, but was invisible to the driver?</span></blockquote>
I tried to post a reply:<br />
<blockquote>
I took a quick look at <a href="http://goo.gl/maps/3qH6T">google maps for that area</a>, and if you look at this stretch of Sonoma Boulevard between Nebraska and Curtola Parkway, it's as straight as an arrow. Furthermore, there are a total of seventeen intersections in that stretch of road, all with crosswalks. Fourteen of the seventeen have all four crosswalks. Only two of the seventeen don't have crosswalks over Sonoma. This intersection at Illinois has one crosswalk over Sonoma already. Seems to me that the painter was just making Illinois consistent with 80% of the other similar crossings. </blockquote>
<blockquote>
He was clearly doing both his neighborhood and the city a favor. </blockquote>
However, HuffPo's implementation of using twitter and/or G+ to log in is totally broken. I have no idea if I've actually authorized HuffPo to recognize those credentials, because it's totally broken and I couldn't post my comment.Robhttp://www.blogger.com/profile/07182206965704673189noreply@blogger.com0tag:blogger.com,1999:blog-11218956.post-49719722755229246502012-08-17T17:07:00.000-07:002012-08-17T17:07:54.450-07:00Blockquotes on io9Some yahoo over there claimed that they don't blockquote on io9. This is an example of a blockquote in the very article being complained about...<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSWPrPrRoADJuLy05-j4bbwPqalxoELIjL3TKt4dMIWOMazWQUTMF4_vSlTuzHFVIjx4SD3GhgROqhEErKaB0H6MzYb4CWr-8On6PPhQ3Ra4XswdZY70cCHKY9yodxfkAONbfB/s1600/Screen+shot+2012-08-17+at+5.06.58+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="86" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSWPrPrRoADJuLy05-j4bbwPqalxoELIjL3TKt4dMIWOMazWQUTMF4_vSlTuzHFVIjx4SD3GhgROqhEErKaB0H6MzYb4CWr-8On6PPhQ3Ra4XswdZY70cCHKY9yodxfkAONbfB/s320/Screen+shot+2012-08-17+at+5.06.58+PM.png" width="320" /></a></div>
<br />Robhttp://www.blogger.com/profile/07182206965704673189noreply@blogger.com0tag:blogger.com,1999:blog-11218956.post-13241425471862493712012-08-14T09:55:00.001-07:002012-08-14T09:55:24.741-07:00Democracy for people, not for corporations<span style="background-color: white; color: #333333; font-family: arial, sans-serif; font-size: 13px; line-height: 19px;">I’m part of a growing national movement to take back America and limit the power of corporations over our lives. I’m writing to invite you to join me, at: </span><a href="http://org2.democracyinaction.org/dia/track.jsp?v=2&c=r2D0WmXuok%2BDWluAHde2C1VgitYhnDKZ" style="background-color: white; color: #1155cc; font-family: arial, sans-serif; font-size: 13px; line-height: 19px;" target="_blank">http://j.mp/FSFPfriends</a><span style="background-color: white; color: #333333; font-family: arial, sans-serif; font-size: 13px; line-height: 19px;"> </span><br style="background-color: white; color: #333333; font-family: arial, sans-serif; font-size: 13px; line-height: 19px;" /><br style="background-color: white; color: #333333; font-family: arial, sans-serif; font-size: 13px; line-height: 19px;" /><span style="background-color: white; color: #333333; font-family: arial, sans-serif; font-size: 13px; line-height: 19px;">We’re fighting back against the Supreme Court’s decision that gave corporations the same rights as people. The only way to overrule the Supreme Court is by amending the U.S. Constitution, so that’s what we’re going to do. </span><br style="background-color: white; color: #333333; font-family: arial, sans-serif; font-size: 13px; line-height: 19px;" /><br style="background-color: white; color: #333333; font-family: arial, sans-serif; font-size: 13px; line-height: 19px;" /><span style="background-color: white; color: #333333; font-family: arial, sans-serif; font-size: 13px; line-height: 19px;">Our movement is just getting started, but we’ve already scored some major successes: seven states have officially called for an amendment, and so have 2,000 public officials, 300 cities, towns, and counties, and more than 2,000 business leaders.</span><br style="background-color: white; color: #333333; font-family: arial, sans-serif; font-size: 13px; line-height: 19px;" /><br style="background-color: white; color: #333333; font-family: arial, sans-serif; font-size: 13px; line-height: 19px;" /><span style="background-color: white; color: #333333; font-family: arial, sans-serif; font-size: 13px; line-height: 19px;">It costs nothing to be part of it, and the email load is light, about one message every two weeks. Will you please join me? </span><br style="background-color: white; color: #333333; font-family: arial, sans-serif; font-size: 13px; line-height: 19px;" /><br style="background-color: white; color: #333333; font-family: arial, sans-serif; font-size: 13px; line-height: 19px;" /><span style="background-color: white; color: #333333; font-family: arial, sans-serif; font-size: 13px; line-height: 19px;">We’ve got to do something. This campaign will make a real difference, if you’ll help out.</span><br style="background-color: white; color: #333333; font-family: arial, sans-serif; font-size: 13px; line-height: 19px;" /><br style="background-color: white; color: #333333; font-family: arial, sans-serif; font-size: 13px; line-height: 19px;" /><span style="background-color: white; color: #333333; font-family: arial, sans-serif; font-size: 13px; line-height: 19px;">Sign up here: </span><a href="http://org2.democracyinaction.org/dia/track.jsp?v=2&c=hw2biqrQce6HZHxNxKzfylVgitYhnDKZ" style="background-color: white; color: #1155cc; font-family: arial, sans-serif; font-size: 13px; line-height: 19px;" target="_blank">http://j.mp/FSFPfriends</a><span style="background-color: white; color: #333333; font-family: arial, sans-serif; font-size: 13px; line-height: 19px;"> </span>Robhttp://www.blogger.com/profile/07182206965704673189noreply@blogger.com0tag:blogger.com,1999:blog-11218956.post-54271839033053898852012-02-29T15:17:00.001-08:002012-02-29T15:38:52.916-08:00Incredible Summary of Where Software Testing Could ImproveI ran across an article today about "<a href="http://blog.utest.com/testing-roundtable-whats-the-biggest-weakness-in-the-way-companies-test/2012/02/?ls=Newsletter&mc=February_2012">What is the biggest weakness in software testing today?</a>" Noah Sussman put forth the most succinct and clear articulation on the real cost of software testing I've ever seen. Seems like I've been stumbling along for years trying to make the point he does in a mere 212 words.<br />
<div>
<br /></div>
<div>
<blockquote>
<strong>Noah Sussman, Technical Lead, <a href="http://www.etsy.com/" style="color: #00a8cc;" target="_blank">Etsy</a>:</strong><img alt="" class="alignright wp-image-17680" height="187" src="http://blog.utest.com/wp-content/uploads/2012/02/Noah1.jpeg" style="border-bottom-color: rgb(238, 238, 238); border-bottom-style: solid; border-bottom-width: 1px; border-image: initial; border-left-color: rgb(238, 238, 238); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(238, 238, 238); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(238, 238, 238); border-top-style: solid; border-top-width: 1px; display: inline; float: right; margin-bottom: 2px; margin-left: 5px; margin-right: 0px; margin-top: 3px; max-width: 100%; padding-bottom: 1px; padding-left: 1px; padding-right: 1px; padding-top: 1px;" title="Noah" width="187" />A surprising number of organizations seem to dramatically underestimate the costs of software testing.<br />
Testability is a feature and tests are a second feature. Having tests depends on the testability of an application. Thus, “testing” entails the implementation and maintenance of two separate but dependent application features. It makes sense then that testing should be difficult and expensive. Yet many enterprise testing efforts do not seem to take into account the fact that testing an application incurs the cost of adding two new, non-trivial features to that application.<br />
There also seems to be a widespread misconception that testing somehow makes application development easier. In fact the opposite is true.<br />
If I may mangle Kernighan: testing is much more difficult than writing the code in the first place. To implement testability and then write tests, one needs first to understand the architecture of the application under test. But testing also requires doing hard things — like input partitioning and path reduction — that are beyond the scope of the application. The reality is that to get good tests, you’re going to have to ask some of your best people to work on the problem (instead of having them work on user-facing application features). Yet many organizations seem not yet to have recognized this.</blockquote>
<br />
Awesome. Thank you Noah. </div>Robhttp://www.blogger.com/profile/07182206965704673189noreply@blogger.com0tag:blogger.com,1999:blog-11218956.post-89745759961191491722012-01-05T18:02:00.000-08:002012-01-05T18:02:46.860-08:00Education Today and Tomorrow<a href="http://sfbrightworks.org/"><img border="0" height="168" src="http://sfbrightworks.org/public/images/diagram800.jpg" width="320" />
<br />This is an amazing model for education</a>. I heard it on <a href="http://kalwnews.org/audio/2012/01/05/crosscurrents-january-5-2012_1566256.html">KALW Cross Currents today</a>. I'm so inspired by it. It's the kind of teaching I'd like to do if I were a teacher. It's the kind of school that I wish I had gone to.Robhttp://www.blogger.com/profile/07182206965704673189noreply@blogger.com0tag:blogger.com,1999:blog-11218956.post-29276591145734402112011-12-28T14:03:00.000-08:002011-12-28T14:04:35.296-08:00The sequence below was seen <a href="http://io9.com/5871657/best-and-worst-science-fictionfantasy-movies-of-2011">in the comments on io9</a>, and I thought it was somewhat brilliant:<br />
<br />
<br />
<div class="comment cid_45550045 aid_2267816 p_0 cr l_2" style="background-color: white; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-color: rgb(238, 238, 238); border-top-style: solid; border-top-width: 1px; clear: both; font-family: Georgia, Times, 'Liberation Serif', serif; font-size: 13px; line-height: 18px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 1em; padding-left: 0px; padding-right: 0px; padding-top: 1em; position: relative; vertical-align: baseline; width: 640px;">
<div class="header" style="border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; float: left; font-family: inherit; font-size: 1.15em; font-style: inherit; margin-bottom: 0.5em; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline; width: 640px;">
<div class="byline" style="border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; float: left; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; overflow-x: hidden; overflow-y: hidden; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-overflow: ellipsis; vertical-align: baseline; width: 480px;">
<a class="noHrefOverride avatarimg" href="http://io9.com/people/brandoncreek/" rel="nofollow" style="border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #791265; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none; vertical-align: baseline;" title="Brandon Creek"><img class="avatar CommenterImage" height="26" src="http://cache.gawkerassets.com/assets/images/commenter/2260000/2267816_32.jpg" style="border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 10px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: middle;" width="26" /> </a><cite style="border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"><a class="sn_link" href="http://io9.com/people/brandoncreek/" id="c45550045_author" rel="nofollow" style="border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #791265; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none; vertical-align: baseline;" title="Comments by Brandon Creek">Brandon Creek</a></cite> <span class="replyto" style="border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #aaaaaa; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0.5em; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"><a class="tc cn_jumpto jumpto_45548482 ui-light" href="http://io9.com/5871657/best-and-worst-science-fictionfantasy-movies-of-2011#" style="border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #791265; font-family: inherit; font-size: 14px; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none; vertical-align: baseline;">@DonRivers</a></span></div>
<div class="tools" style="border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; float: right; font-family: inherit; font-size: 14px; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: right; vertical-align: baseline; width: 130px;">
<a class="commenticon icon_reply tc cn_reply" href="http://io9.com/5871657/best-and-worst-science-fictionfantasy-movies-of-2011#" style="background-image: url(http://cache.io9.com/assets/base.v10/img/ui/icon-reply.png); background-repeat: no-repeat no-repeat; border-bottom-color: initial !important; border-bottom-style: initial !important; border-bottom-width: 0px !important; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #791265; cursor: pointer; display: inline-block; font-family: inherit; font-style: inherit; height: 14px; margin-bottom: 0px; margin-left: 0.5em; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none; vertical-align: middle; width: 12px;" title="Reply to this comment"></a></div>
</div>
<div class="ctext clearfix" style="border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #666666; font-family: inherit; font-size: 15px; font-style: inherit; line-height: 1.5em; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;">
<span class="ctedit" style="border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"><a class="commentImage" href="http://cache.gawker.com/assets/images/comment/8/2011/12/722e3354aa2e75d36a92f398824628ca/original.jpg?1307463786" rel="lytebox" style="border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #791265; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none; vertical-align: baseline;"><img src="http://cache.gawker.com/assets/images/comment/8/2011/12/722e3354aa2e75d36a92f398824628ca/340x.jpg?1307463786" style="border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; float: left; font-family: inherit; font-style: inherit; margin-bottom: 15px; margin-left: 0px; margin-right: 40px; margin-top: 0px; max-height: 500px; max-width: 300px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;" /></a><br /> </span><br />
<div class="metatext smalltype commentMessage ui-light" style="border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; float: right; font-family: inherit; font-size: 12px; font-style: inherit; line-height: 18.2px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;">
</div>
<div style="border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; clear: both; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;">
</div>
</div>
<span class="please_leave_a_message" style="border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"></span></div>
<div class="comment cid_45550231 aid_2066135 p_0 cr l_3" style="background-color: white; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-color: rgb(238, 238, 238); border-top-style: solid; border-top-width: 1px; clear: both; font-family: Georgia, Times, 'Liberation Serif', serif; font-size: 13px; line-height: 18px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 1em; padding-left: 0px; padding-right: 0px; padding-top: 1em; position: relative; vertical-align: baseline; width: 640px;">
<span class="threadbullet" style="background-color: #af8f9d; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"></span><br />
<div class="header" style="border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; float: left; font-family: inherit; font-size: 1.15em; font-style: inherit; margin-bottom: 0.5em; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline; width: 640px;">
<div class="byline" style="border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; float: left; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; overflow-x: hidden; overflow-y: hidden; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-overflow: ellipsis; vertical-align: baseline; width: 480px;">
<a class="noHrefOverride avatarimg" href="http://io9.com/people/onathanatos/" rel="nofollow" style="border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #791265; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none; vertical-align: baseline;" title="onathanatos"><img class="avatar CommenterImage" height="26" src="http://cache.gawkerassets.com/assets/images/commenter/2060000/2066135_32.jpg" style="border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 10px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: middle;" width="26" /> </a><cite style="border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"><a class="sn_link" href="http://io9.com/people/onathanatos/" id="c45550231_author" rel="nofollow" style="border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #791265; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none; vertical-align: baseline;" title="Comments by onathanatos">onathanatos</a></cite> <span class="replyto" style="border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #aaaaaa; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0.5em; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"><a class="tc cn_jumpto jumpto_45550045 ui-light" href="http://io9.com/5871657/best-and-worst-science-fictionfantasy-movies-of-2011#" style="border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #791265; font-family: inherit; font-size: 14px; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none; vertical-align: baseline;">@Brandon Creek</a></span></div>
<div class="tools" style="border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; float: right; font-family: inherit; font-size: 14px; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: right; vertical-align: baseline; width: 130px;">
<a class="commenticon icon_reply tc cn_reply" href="http://io9.com/5871657/best-and-worst-science-fictionfantasy-movies-of-2011#" style="background-image: url(http://cache.io9.com/assets/base.v10/img/ui/icon-reply.png); background-repeat: no-repeat no-repeat; border-bottom-color: initial !important; border-bottom-style: initial !important; border-bottom-width: 0px !important; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #791265; cursor: pointer; display: inline-block; font-family: inherit; font-style: inherit; height: 14px; margin-bottom: 0px; margin-left: 0.5em; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none; vertical-align: middle; width: 12px;" title="Reply to this comment"></a></div>
</div>
<div class="ctext clearfix" style="border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #666666; font-family: inherit; font-size: 15px; font-style: inherit; line-height: 1.5em; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;">
<span class="ctedit" style="border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"><a class="commentImage" href="http://cache.gawker.com/assets/images/comment/8/2011/12/d1505e489eeb664d78eb59f2a344a311/original.jpg?1307463786" rel="lytebox" style="border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #791265; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none; vertical-align: baseline;"><img src="http://cache.gawker.com/assets/images/comment/8/2011/12/d1505e489eeb664d78eb59f2a344a311/340x.jpg?1307463786" style="border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; float: left; font-family: inherit; font-style: inherit; margin-bottom: 15px; margin-left: 0px; margin-right: 40px; margin-top: 0px; max-height: 500px; max-width: 300px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;" /></a><br /> </span><br />
<div class="metatext smalltype commentMessage ui-light" style="border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; float: right; font-family: inherit; font-size: 12px; font-style: inherit; line-height: 18.2px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;">
</div>
<div style="border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; clear: both; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;">
</div>
</div>
<span class="please_leave_a_message" style="border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"></span></div>
<div class="comment cid_45550353 aid_2267816 ue p_0 cr l_4" style="background-color: white; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-color: rgb(238, 238, 238); border-top-style: solid; border-top-width: 1px; clear: both; font-family: Georgia, Times, 'Liberation Serif', serif; font-size: 13px; line-height: 18px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 1em; padding-left: 0px; padding-right: 0px; padding-top: 1em; position: relative; vertical-align: baseline; width: 640px;">
<span class="threadbullet" style="background-color: #af8f9d; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"></span><br />
<div class="header" style="border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; float: left; font-family: inherit; font-size: 1.15em; font-style: inherit; margin-bottom: 0.5em; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline; width: 640px;">
<div class="byline" style="border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; float: left; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; overflow-x: hidden; overflow-y: hidden; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-overflow: ellipsis; vertical-align: baseline; width: 480px;">
<a class="noHrefOverride avatarimg" href="http://io9.com/people/brandoncreek/" rel="nofollow" style="border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #791265; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none; vertical-align: baseline;" title="Brandon Creek"><img class="avatar CommenterImage" height="26" src="http://cache.gawkerassets.com/assets/images/commenter/2260000/2267816_32.jpg" style="border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 10px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: middle;" width="26" /> </a><cite style="border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"><a class="sn_link" href="http://io9.com/people/brandoncreek/" id="c45550353_author" rel="nofollow" style="border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #791265; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none; vertical-align: baseline;" title="Comments by Brandon Creek">Brandon Creek</a></cite> <span class="replyto" style="border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #aaaaaa; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0.5em; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"><a class="tc cn_jumpto jumpto_45550231 ui-light" href="http://io9.com/5871657/best-and-worst-science-fictionfantasy-movies-of-2011#" style="border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #791265; font-family: inherit; font-size: 14px; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none; vertical-align: baseline;">@onathanatos</a></span></div>
<div class="tools" style="border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; float: right; font-family: inherit; font-size: 14px; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: right; vertical-align: baseline; width: 130px;">
<a class="commenticon icon_reply tc cn_reply" href="http://io9.com/5871657/best-and-worst-science-fictionfantasy-movies-of-2011#" style="background-image: url(http://cache.io9.com/assets/base.v10/img/ui/icon-reply.png); background-repeat: no-repeat no-repeat; border-bottom-color: initial !important; border-bottom-style: initial !important; border-bottom-width: 0px !important; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #791265; cursor: pointer; display: inline-block; font-family: inherit; font-style: inherit; height: 14px; margin-bottom: 0px; margin-left: 0.5em; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none; vertical-align: middle; width: 12px;" title="Reply to this comment"></a></div>
</div>
<div class="ctext clearfix" style="border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #666666; font-family: inherit; font-size: 15px; font-style: inherit; line-height: 1.5em; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;">
<span class="ctedit" style="border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;">Is this one of those "Try to Spot the Difference" <br />games. I love those! </span><br />
<div class="metatext smalltype commentMessage ui-light" style="border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; float: right; font-family: inherit; font-size: 12px; font-style: inherit; line-height: 18.2px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;">
</div>
<div style="border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; clear: both; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;">
</div>
</div>
<span class="please_leave_a_message" style="border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"></span></div>
<div class="comment cid_45550400 aid_2066135 ue p_0 cr l_5" style="background-color: white; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-color: rgb(238, 238, 238); border-top-style: solid; border-top-width: 1px; clear: both; font-family: Georgia, Times, 'Liberation Serif', serif; font-size: 13px; line-height: 18px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 1em; padding-left: 0px; padding-right: 0px; padding-top: 1em; position: relative; vertical-align: baseline; width: 640px;">
<span class="threadbullet" style="background-color: #af8f9d; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"></span><br />
<div class="header" style="border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; float: left; font-family: inherit; font-size: 1.15em; font-style: inherit; margin-bottom: 0.5em; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline; width: 640px;">
<div class="byline" style="border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; float: left; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; overflow-x: hidden; overflow-y: hidden; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-overflow: ellipsis; vertical-align: baseline; width: 480px;">
<a class="noHrefOverride avatarimg" href="http://io9.com/people/onathanatos/" rel="nofollow" style="border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #791265; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none; vertical-align: baseline;" title="onathanatos"><img class="avatar CommenterImage" height="26" src="http://cache.gawkerassets.com/assets/images/commenter/2060000/2066135_32.jpg" style="border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 10px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: middle;" width="26" /> </a><cite style="border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"><a class="sn_link" href="http://io9.com/people/onathanatos/" id="c45550400_author" rel="nofollow" style="border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #791265; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none; vertical-align: baseline;" title="Comments by onathanatos">onathanatos</a></cite> <span class="replyto" style="border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #aaaaaa; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0.5em; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"><a class="tc cn_jumpto jumpto_45550353 ui-light" href="http://io9.com/5871657/best-and-worst-science-fictionfantasy-movies-of-2011#" style="border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #791265; font-family: inherit; font-size: 14px; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none; vertical-align: baseline;">@Brandon Creek</a></span></div>
<div class="tools" style="border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; float: right; font-family: inherit; font-size: 14px; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: right; vertical-align: baseline; width: 130px;">
<a class="commenticon icon_reply tc cn_reply" href="http://io9.com/5871657/best-and-worst-science-fictionfantasy-movies-of-2011#" style="background-image: url(http://cache.io9.com/assets/base.v10/img/ui/icon-reply.png); background-repeat: no-repeat no-repeat; border-bottom-color: initial !important; border-bottom-style: initial !important; border-bottom-width: 0px !important; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #791265; cursor: pointer; display: inline-block; font-family: inherit; font-style: inherit; height: 14px; margin-bottom: 0px; margin-left: 0.5em; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none; vertical-align: middle; width: 12px;" title="Reply to this comment"></a></div>
</div>
<div class="ctext clearfix" style="border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #666666; font-family: inherit; font-size: 15px; font-style: inherit; line-height: 1.5em; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;">
<span class="ctedit" style="border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;">Did...did we just become friends...? </span></div>
</div>Robhttp://www.blogger.com/profile/07182206965704673189noreply@blogger.com0tag:blogger.com,1999:blog-11218956.post-70337562571041206072011-11-14T17:55:00.001-08:002011-11-14T17:59:37.626-08:00From the Ironic Juxtaposition DepartmentFlipping through the feed for Gawker, I see this from two hours ago:<br />
<br />
<a href="http://gawker.com/5859476/watch-a-12+year+old-put-your-startup-to-shame">Watch a 12-year-old put your startup to shame</a><br />
<br />
and I see this from six hours ago:<br />
<br />
<a href="http://gawker.com/5859366/why-did-this-22+year+old-entrepreneur-commit-suicide">Why did this 22-year-old entrepreneur commit suicide?</a><br />
<br />
The profundity of the comments regarding the pressures of the technology business were matched only by the depth of snarkiness of the comments about the 12-year-old.Robhttp://www.blogger.com/profile/07182206965704673189noreply@blogger.com0tag:blogger.com,1999:blog-11218956.post-90134534563522895652011-11-09T08:56:00.000-08:002011-11-09T09:06:00.802-08:00Reading Revolution<table><tbody><tr><td width="40%">Presented with an upcoming vacation, and presented with the<a href="http://articles.businessinsider.com/2011-09-29/tech/30217013_1_amazon-ceo-jeff-bezos-prime-program"> ever falling price of kindles</a>, I'm in that uncomfortable zone where an original Kindle for $79 is totally in my price range (anything less than three digits is really attractive to me for some reason).</td><td><br /><iframe src="http://rcm.amazon.com/e/cm?t=myfevbra-20&o=1&p=8&l=as1&asins=B0051QVESA&ref=tf_til&fc1=000000&IS2=1&lt1=_blank&m=amazon&lc1=0000FF&bc1=000000&bg1=FFFFFF&f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe><br /></td></tr><tr><td><br />However, you can get what is essentially a tablet with the new Kindle Fire, for only $200. The thing I worry about is that when will that $200 be down to $99 or less. Probably soon.<br /></td><td><br /><iframe src="http://rcm.amazon.com/e/cm?t=myfevbra-20&o=1&p=8&l=as1&asins=B0051VVOB2&ref=tf_til&fc1=000000&IS2=1&lt1=_blank&m=amazon&lc1=0000FF&bc1=000000&bg1=FFFFFF&f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe><br /></td></tr></tbody></table><br />I know that it's kind of a high-class problem having to decide between what gadget you should get for some ridiculously low price. I'll probably just get some paper books for this vacation and wait for the free Kindle that will get bundled with the New York Times some time in the near future.<table></table>Robhttp://www.blogger.com/profile/07182206965704673189noreply@blogger.com0tag:blogger.com,1999:blog-11218956.post-12559278598372571962011-09-01T11:12:00.000-07:002011-09-01T11:15:06.564-07:00Messing around with MySqlOdd moment today. I was fooling around with mysql date functions and ran the following:
<br />
<br /><pre>
<br />mysql> select now()+0 from dual;
<br />+-----------------------+
<br />| now()+0 |
<br />+-----------------------+
<br />| 20110901111111.000000 |
<br />+-----------------------+
<br />1 row in set (0.00 sec)
<br /></pre>
<br />
<br />It looked funny at first glance, but then I realized that I'd run the query at exactly 11:11:11 on 2011-09-01
<br />
<br />No, this is not really that big of a deal. Just tickled my coincidence antennae.Robhttp://www.blogger.com/profile/07182206965704673189noreply@blogger.com0tag:blogger.com,1999:blog-11218956.post-88397773002707073292011-08-26T09:04:00.000-07:002011-08-26T09:10:45.575-07:00Debt Crisis? Which Kind?I was sniffing around the dusty corners of my LinkedIn profile, and recalled a group that I'd started three years ago when I was at Netflix: <a href="http://www.linkedin.com/groups?home=&gid=161996">Software Quality People Who Run With Scissors</a>.
<br />
<br />Seems like I was looking in on the group about once a year, since there were some folks who had asked to join and it had been a year since the last batch of folks was all added at once.
<br />
<br />Anyway, I dusted it off and made it an open group. To try and seed the discussion, I <a href="http://www.linkedin.com/groups/Agile-has-idea-technical-debt-161996.S.67963069">posted the following reaction</a> I had to an idea I heard at a recent Meetup:
<br />
<br /><blockquote>Agile has the idea of technical debt. An elaboration heard recently resonated with me. There are three kinds: design debt, quality debt and test debt.
<br />
<br />Design debt is the more commonly thought of type of technical debt. You're compromising your current work in some way that will affect the future flexibility or maintainability of the system.
<br />
<br />Quality debt is just another way to think about bugs in the system. I suppose you could also map them as "unintentional design debt". They are work you can either do now or defer until later, but that deferral has a cost in either maintainability, customer experience or business process disruption.
<br />
<br />Test debt was the one that was most interesting to me. This is measured by the total time needed to regress the product after every iteration. This is the most insidious of the three types of debt. If you're developing software in an agile fashion, but you're not building automated tests to support the effort, this debt can grow without bound and it grows very quickly. It becomes either a crushing workload or an exercise in triage as to which parts of the regression suite are most important to run.
<br />
<br />You can't ever have a project without some kind of debt (well, you could, but you'd either never ship anything useful or you'd never iterate enough to make it significantly better). However, being aware of how much debt you're carrying and thinking about the cost to your team's productivity is an important exercise.</blockquote>
<br />
<br />Robhttp://www.blogger.com/profile/07182206965704673189noreply@blogger.com0tag:blogger.com,1999:blog-11218956.post-77854188770588332342011-08-19T12:30:00.000-07:002011-08-19T12:36:52.697-07:00Moved to CheggToday's my one-month anniversary at <a href="www.chegg.com">Chegg</a>. I'm managing the test engineering and release engineering teams. We're doing a lot of interesting work in "helping students save time, save money and get smarter" <-- blatant mention of company mission.
<br />
<br />Anyway, I'm looking for Software Engineers in Test to help scale the test engineering efforts to match the growth of the company and the increasing velocity of change. Want to help? <a href="http://goo.gl/p5KiA">Click for the details</a>.Robhttp://www.blogger.com/profile/07182206965704673189noreply@blogger.com0tag:blogger.com,1999:blog-11218956.post-69298186206921970022011-07-21T08:12:00.001-07:002011-07-21T08:15:57.399-07:00Potential 'Curb' MomentI had a potential 'Curb Your Enthusiasm' moment this morning (but I'm not Larry David, so nothing actually happened).<br /><br />I get to the office building and enter the lobby. I call the elevator, and two elevators arrive, side by side. A gentleman had come into the lobby right behind me, mesmerized by his smartphone. He's right in front of the left-hand elevator, I'm right in front of the right-hand elevator. I enter the right-hand elevator, and for some reason, he follows me in. I punch 14, and he punches 5 while continuing to be absorbed in his email or texting.<br /><br />Impulse: "Why didn't you take the other elevator? Now I have to stop on the way up when we both could have gone directly to our floors!"<br /><br />Impulse control: <crickets>Robhttp://www.blogger.com/profile/07182206965704673189noreply@blogger.com0tag:blogger.com,1999:blog-11218956.post-32704403637397545192011-04-15T10:15:00.000-07:002011-04-15T10:18:36.296-07:00Great Ideas Are Always ReinventedLast night, we had a recruiting happy hour for OPOWER. In discussing the beverages at hand, and idea arose for the bourbarita -- a bourbon based margarita. We thought it was novel. Silly us. The <a href="http://www.theohreally.com/?page_id=1284">first mention in google</a> is from 2006, and there's a <a href="http://thecarolinafoodproject.blogspot.com/2007/11/to-great-white-north.html">North Carolina foodie's blog with a recipe</a> from 2007.<br /><br />Haven't tried one yet, but maybe some day.Robhttp://www.blogger.com/profile/07182206965704673189noreply@blogger.com0tag:blogger.com,1999:blog-11218956.post-14904327322958678082011-03-07T09:12:00.000-08:002011-03-07T09:17:33.060-08:00Words you wouldn't expect to be in a spell checkerI was typing an email a few minutes ago, and used the word 'automagically'. Much to my surprise, in Chrome and Safari, the spellchecker didn't fire, but the one in Firefox did.<br /><br />I guess Firefox is for spelling conservatives and Chrome/Safari are on the other side of the aisle. You'd think that there would be some kind of standard for a single shared spell-checking resource on a person's computer.Robhttp://www.blogger.com/profile/07182206965704673189noreply@blogger.com0tag:blogger.com,1999:blog-11218956.post-17927910558166503102011-02-03T22:41:00.000-08:002011-02-03T22:44:30.565-08:00Oops, I Did It AgainDecided to post another <a href="http://seekingalpha.com/article/250796-what-do-you-get-when-you-buy-netflix">Netflix based screed over on Seeking Alpha</a>.<br /><br />Why do I keep doing it? I think it's because of all the closed-minded opinions that I keep seeing blathered all over the interwebs.<br /><br />Of course, how am I really that different with the blathering, except that I'm blathering in a positive vein, and I'm hoping that sharing my past experiences inside the company will help someone understand that there's really something new going on here.<br /><br />Of course, it could all come crashing down tomorrow, and then won't I look foolish...Robhttp://www.blogger.com/profile/07182206965704673189noreply@blogger.com0tag:blogger.com,1999:blog-11218956.post-71882088984172457792011-01-18T19:17:00.001-08:002011-01-18T19:21:59.589-08:00What I Like about DCOne of the great things about being in Washington DC is that there are many moment of "oh! that's cool!"<br /><br />For example, when I was walking to dinner on my last trip out in December, I came across the NPR building. Just your basic stell and glass office building with the lower-case 'npr' all lit up on the side. I heard in my head the voices of the radio personalities and I smiled.<br /><br />Today, walking back from the Metro, in the block before I got to my hotel, I looked in to a lobby and saw the logo for the American Dental Association, which was exactly the same as the logo that I've been seeing on my tubes of Crest toothpaste since I was a child.<br /><br />There've been a lot of these kind of moments: National Education Association, Daughters of the American Revolution, Monday's run past the USAID/Customs shared building.<br /><br />There is something very special about our nation's capital. Just wish it wasn't quite so cold.Robhttp://www.blogger.com/profile/07182206965704673189noreply@blogger.com0tag:blogger.com,1999:blog-11218956.post-27669714681010607582011-01-18T19:15:00.000-08:002011-01-18T19:17:27.156-08:00Another article on Seeking AlphaI wrote another little article over on SA. It was about <a href="http://seekingalpha.com/article/246891-netflix-transparency-accessibility-and-corporate-responsibility">Netflix's change in policy towards releasing results and conference call questions</a>.<br /><br />I think it's a great step forward, and it generated some interesting discussion about whether it is a step forward, or whether it just gores the oxen of the "establishment".Robhttp://www.blogger.com/profile/07182206965704673189noreply@blogger.com0