Everyone is wrong, regardless of the scale, scope, or implications of the context. However, where some errors are just that, accidents, others have ended up generating revolutionary discoveries. It happens in the kitchen, it happens in art and, of course, it happens in video games.

If you’re not sure about this, just look at titles like Skyrim, where players take advantage of glitches to find new ways to play and have fun, as well as how funny and unusual what we end up seeing on screen can be.

However, the title that brings us together here today goes far beyond that. This game, far from causing laughter or feeding the evil devil of the roguery of its gaming community, created a new way of playing and, subsequently, revolutionized how most similar titles look and play.

Yes sirs. We talk about Quake.



Those who are knowledgeable gamers or simply have a lot of time in front of the computer, will surely remember this title fondly. A series of games with numerous installments and versions, which first saw the light of day on June 22, 1996.

A shooting game, like many others. Objectives, quite simple: aim and kill. So what about Quake that was revolutionary in its time? It wasn’t about what the developers delivered to their audience…it was about what their audience did with the game.

It turns out that, by chance or fate, the players began to notice something unusual, but convenient. For some reason, if they moved by jumping, they could gain speed within the map. After the technique became popular, it was baptized as strafe-jumping porno français.

The technique was especially useful, especially at competitive levels, as it allowed the player to not only go faster for free. But, in addition, you exceeded the character’s maximum movement speed. Three factors were involved in this: the release of friction when walking, the diagonal movement of the character, and the manipulation of the game camera.

There is no reason to lie. Those who know about this technique are aware that it was not easy to apply it. However, when you mastered it, you were able to far outmatch your opponents.

So what was the problem here? That this function did not come from the minds of the programmers or the company that launched the title. But of, on the contrary, a programming error. Ops.



The truth is that, after making a mistake, you have two options. The option that seems most logical is to correct, of course. However, you can also take advantage of it.

When this happened, it took a while for there to be a consensus within Id Software. There were those who were in favor of fixing the bug. Others, a little more irreverent and revolutionary, bet on giving strength to this mechanic.

Let’s remember that, after all, although it was a way to obtain formidable results, this technique was not easy to apply, making it inconsistent in a normal game.


Everything changed with the arrival of Quake Live, an installment of the previous title, completely free. In this version of the game, the programmers created a feature where you legitimately increased your speed by moving around by jumping.

Over time, this mechanic made its way out of Quake, and into games using the same engine: Call of Duty and Wolfenstein: Enemy Territory being some of the most popular examples. There were even games that used derivative engines that had to be edited to somewhat limit the benefits of using staff-jumping, as its use unbalanced player conditions.

And so, a simple programming error by some careless developer gave rise to a technique that marked the gameplay for that and future generations.

Related Posts

How the Netron Data Migration Framework Turns Legacy into Relational

1. ANALYSIS: An incremental approach to reduce complexity and risk

Working with a cross-functional team of your data modelers, application developers, and business analysts, Netron consultants conduct JAD sessions to accurately identify the source-to-target data relationships that need to be migrated. Netron’s approach organizes the project into manageable portions, focusing on 10 to 20 tables at a time relating to a specific business function—greatly reducing complications and helping you to better manage your project scope. Source and target data structures are mapped and data transformation rules are captured using state transition diagrams. Information in these diagrams provides the specs that are fed into our unique Netron Data Migration Framework to produce the extract, transform, and load programs required to migrate your data.

2. CONSTRUCTION: Rapid development of data migration programs

Netron’s consultants use our proven Netron Data Migration Framework consisting of data components, templates, wizards, and tools that let us quickly develop data migration programs for moving your data from the source database to the target model. The productivity benefits of our framework will prove to be a critical success factor in your data migration. Not only does the Netron Data Migration Framework build data migration programs that correspond to the analysis just completed, the framework, in conjunction with our methodology, makes it easy to do data scrubbing or to correct analysis mistakes. Once unaccounted conditions are identified, it’s just a matter of updating the diagrams, making minor adjustments to the framework, and regenerating the programs.

3. EXECUTION: Turning legacy into relational

The generated migration programs now navigate the input data sets, performing the necessary fan-in, fan-out, data scrubbing and validation operations to produce an ouput file ready for loading into the target RDBMS. Along the way, a complete set of audit logs and error reports is produced automatically, ready for the validation steps, and highlighting any need for a further iteration.

4. VALIDATION & TESTING: Ensuring a complete and accurate migration process

With millions of records spanning the entire source database, Netron consultants take special care with the testing and validation phase of your data migration effort to ensure the programs accurately and completely transfer the data. Tasks include unit testing, examining log and audit files, data scrubbing, system testing, spot checking, and cross validation of the source and targeted databases xnxx.

5. ITERATIVE REFINEMENT: The key to successful data migration

Second and third iterations are a fact of data migration life—nobody gets it right the first time because complex legacy data is difficult to successfully clean and migrate on the first try. Here’s the twofold Netron Frameworks advantage: The programs we create using the Netron Data Migration Framework have built-in exception handling. And they’re designed with rapid iteration in mind. That means any problems associated with the applications are immediately documented into log and audit reports including hidden data exception and data scrubbing requirements, many of which are unknown at the start of the data migration project, as well as invalid assumptions made at the requirements gathering phase. Then the transition rules can be quickly updated and validated, and the programs regenerated and re-executed. Each iteration helps make the subsequent iteration more robust and complete than the previous one until no exceptions are found.

A services-based solution that offers:

• Incremental conversion to reduce project risk
• Business process driven JAD analysis to reduce complexity
• State transition methodology to define data transformation
• Iterative refinement for better data scrubbing
• Rigorous validation and testing
• Flexible data migration framework for rapid program development/migration
• Rules-based program generation
• Innovative analysis tools for finding business rules
• Intuitive development tools for generating better programs faster using new data

Preferred Source and Target Platforms

Source: Netron Data Migration Process can migrate data from MVS (CICS, IMS/DB and batch environments), OS/400, OS/2, Wang VS, and OpenVMS.

Target: Most Unix and all Windows server platforms. If we haven’t mentioned your platform, please contact Netron — our approach’s adaptability means that it can probably be customized to support your needs.

Supported Source and Target Databases

Source: For legacy data, any database that has Cobol access including IMS, VSAM, sequential files, DB2, and Oracle as well as proprietary legacy databases (e.g., Wang DMS or ) that are no longer fully supported by their vendors.

Target: any RDBMS that can load data from text files, or that is supported by ODBC.

Business Rule Identification and Extraction through Netron HotRod

How do you migrate from a legacy COBOL system to a modern architecture and ensure that your existing business functionality will still work?

For years you have relied on COBOL as your application development language –– and for batch processing huge amounts of data, it’s hard to beat. But now, your customers are demanding better access to their accounts; your operational units need real-time updates to their data; your supply channel partners insist on closer integration with their systems –– and it seems that just about everything needs integration with the Web.

While COBOL is still efficient at data processing, the language has become much less strategic to the future, because it has lagged in its support for the Internet, layered application architectures, distributed systems and code reuse. By comparison, modern language environments offer ready-to-use class libraries and application objects for Internet, data and Web Service access.

For these and other strategic reasons you have decided it’s time to convert your system to a modern development and deployment platform that will serve your business for the next decade. But can you afford to re-analyze, rebuild and rewrite everything from scratch? Converting to an object-oriented paradigm will require you to morph your business rules into a new class-based object architecture. The challenge in the conversion is getting the correct design requirements. The best definition of the existing requirements is in the current system, and you need to find them quickly. The most compelling reason to reuse your existing business logic is to accelerate the time to market for the replacement system. The next most compelling reason is to reduce risk –– by ensuring your requirements are complete.

The fact that your current system contains millions of lines of COBOL code compounds the problem. The presence of cloned logic further complicates the matter. You need something that can:

• quickly identify business rules in large COBOL systems
• associate the rules with the related data;
• isolate this information into a component design with an interface;
• identify and help eliminate redundancies in the rules
• provide a means to document the rule and extract it from the old system
Netron HotRod™ is the most advanced solution for identifying business logic, isolating and documenting the code that supports the business functionality, and wrapping it in an interface that can be extracted and used to create the business objects in the new architecture.

Why testing?

Verifying that all requirements are analyzed correctly

Many serious software failures are often the result of wrong, missing or incomplete requirements formulated at the requirement analysis stage. Testing, therefore, verifies that requirements are relevant, coherent, traceable, complete and testable. This is the reason why testing really begins at the outset of a project during the requirements specification phase, prior to the generation of a single line of code.

Verifying that all requirements are implemented correctly

Adequate testing ensures that software operates as expected, providing correct user response and works as per requirement specification. Comprehensive Testing reduces the risk in the marketplace, minimizes system downtime, and increases the confidence in systems for customers and department staff. The key to software testing is trying to find the myriad of failure modes.
Any software application should be examined, tested and analyzed for risk of failure as per the requirement before it is launched into the market and used by the customer.

Identifying defects and ensuring they are addressed before software deployment

It is important to identify the defects at an early stage in the software engineering lifecycle otherwise it could pose a big problem at the time of deployment of the software application. If these defects are identified early and addressed properly it will reduce the cost of development to the extent of 10x as compared to a point when it gets identified after the deployment. The other major factor associated with this problem, not measurable in absolute terms but of more significance to the organization is losing the confidence of the customer and the resulting embarrassment.

Case study

– Simulation model of shipping system with multiple stockpiles around South East Australia, including ship scheduling.
– 20% production increase at Western Australian gold mine.
led benchmarking team to identify major improvement opportunities for a bulk handling wharf, including implementation planning.
simulation of a wharf operation to evaluate the impact of reducing the number of berths on ship delays.
– assisted a client to document business processes using IDEF0 methodology.
led client team to review service level and technology for an auxiliary site service.
– led client teams developing Performance Measures for an Australian wide distribution project.
– assisted a Tasmanian client with shipping contract negotiations.
developed first level benchmarks for a distribution project and designed second level benchmarking procedures.
– led consultant team to assist a Western Australian client renegotiate their 45 MW electricity contract. Prepared business analysis and negotiating case. – Prepared Negotiations Summary Document and presentation materials for meetings.
– Provided strategic advice and assisted with negotiations.
part of team reporting on the redevelopment of the North Hobart oval.
– Produced project evaluation section.

Software testing

It is impossible to test a program completely.

What does it “testing a program completely” mean? Ideally, it means that at the end of the test process, the program will have been tested against all possible eventualities, and that there should not remain any errors in program functionality. All existing problems would have been resolved during the testing process.

In reality, this cannot happen. There are simply too many variables. For example:
• It is not possible to verify the reaction of any program to every combination of input information.
• It is not possible to verify every possible sequence of program workflow.
• It is not possible to reveal all design errors.
• The correctness of a program cannot be always be proved logically.

Then why should programs be tested?

Since it can never be said that a program works perfectly, why should it be tested?
A program should be tested to find the errors in it that can be addressed and solved, increasing efficiency in program functionality and confidence in program usage results.

Small or large, all program errors cost you money and time. Our job is to search for and eliminate errors for you.

Testing improves the quality and performance of any program.

When the majority of errors in a program are found and corrected, the quality of program output is improved, and so is your bottom line. This is the real purpose of testing.

We can participate in testing of program product in any development stage of the project:


• preparation for the testing automation
• development of reception tests
• stability of acquisitions analysis
• initial testing plan development

Realization of base functions

• beginning of nonformal testing
• beginning of the formal core product testing
• first nonformal estimations of tasks, resources, time and budget.

Almost alpha

• determination of testing purposes and tasks, time, resources and budget necessary; creation of prototype testing plan
• risk evaluation for the tested project
• fulfillment of basic testing.


• testing all program blocks
• testing under real operating conditions
• nonformal testing of the specific program blocks
• planning and the fulfillment of the detailed tests of the selected program blocks
• test plan revision
• analysis of testing manual and testing according to it
• discussion of specification shortcomings
• estimate amount of remaining errors
• beginning of testing for the hardware compatability
• addition of regression tests.
• the beginning of the automation of testing.


• testing program for compliance to the requirements for the stability and the completeness of Beta-version.


• final test plan approval
• the continuation of fulfillment and the deepening of test plan and automation of testing
• rapid repeated testing of the corrected program blocks
• complete cycle of hardware testing
• publication of the formal testing results
• the last analysis of user interface, its preparation for the freezing
• Beta- testing out of the company.

Freezing user interface

• regression testing
• test plan fulfillment
• extended hardware testing

Preparation for the final testing

• regression testing with all possible versions of program environment
• complete cycle of tests according to the plan for the last version of program
• hardware testing
• testing the corrections of old errors
• system reliability evaluation

Last test for integrity

• reliability evaluation during the first day of operation
• real mode testing
• test plan and errors analysis
• testing the first releases


• continuous testing during entire production period
• testing finished product
Examples of the tests, which we can make during the functional and system testing:

Collation with the specification

The correspondence of the developed program to each word of specification is checked.


Testing how correct program makes necessary calculations and produces reports.

Laboratory tests

Hiring several feature users and watching their work with product. Actually Beta-testing is done in an attempt to obtain the same result, but with Beta-testing it is not possible to watch the process, Beta-testing it is much less effective than laboratory tests.

Extreme values

Testing program reaction to the extreme values input.


Measuring time elapsed for different tasks, especially those, which clients will use most frequently.

Switching the modes

Testing how correctly program is switching from one mode to another. It is especially important for multitasking systems.

Real mode operation

We work with the program in the same regime as real users would work. The shortcomings, which were missed during the formal testing or they were considered insignificant, in the real work can prove to be very serious.

Load tests

Testing program reaction to extreme operating conditions:

• testing to the maximum volume of the input information
• testing program reaction to an increased activity
• analysis of resources requirements

Multi-user and multitask work

It is checked how product works with the parallel accomplishment of several objectives and how actions of several users are coordinated.

Working/treatment of errors

Testing program reaction to the improper, nonstandard or not predicted actions of users.


It is checked to see how complicated is it for an unauthorized user to obtain access to the system.

Compatability and format conversion

Testing ability of two products to work with the same data files or ability of successful co-existence in the computer operating memory.

Hardware configurations

Testing program operation on the computers with diverse configurations.

Installation and maintenance

Testing program installation, how simple and convenient and how long does it take on the average to complete the installation.