[slashdot] Python Error cost trading loss $400 million

23 10 2013


How To Lose $172,222 a Second For 45 Minutes

Posted by Soulskill on Tuesday October 22, 2013 @08:14PM
from the step-one-accrue-at-least-$172,222 dept.

An anonymous reader writes"Investment firm Knight Capital made headlines in 2012 for losing over $400 million on the New York Stock Exchange because of problems with their algorithmic trading software. Now, the owner of a Python programming blog noticed the release of a detailed SEC report into exactly what went wrong (PDF). It shows how a botched update rollout combined with useless or nonexistent process guidelines cost the company over $172,000 a second for over 45 minutes. From the report: ‘When Knight used the Power Peg code previously, as child orders were executed, a cumulative quantity function counted the number of shares of the parent order that had been executed. This feature instructed the code to stop routing child orders after the parent order had been filled completely. In 2003, Knight ceased using the Power Peg functionality. In 2005, Knight moved the tracking of cumulative shares function in the Power Peg code to an earlier point in the SMARS code sequence. Knight did not retest the Power Peg code after moving the cumulative quantity function to determine whether Power Peg would still function correctly if called. … During the deployment of the new code, however, one of Knight’s technicians did not copy the new code to one of the eight SMARS computer servers. Knight did not have a second technician review this deployment and no one at Knight realized that the Power Peg code had not been removed from the eighth server, nor the new RLP code added. Knight had no written procedures that required such a review.’"


100x Faster DB Queries

23 09 2013


Oracle Promises 100x Faster DB Queries With New In-Memory Option
Posted by timothy on Monday September 23, 2013 @06:00AM
from the now-report-back-on-the-double dept.

Hugh Pickens DOT Com writes"ZDNet reports that Oracle’s Larry Elison kicked off Oracle OpenWorld 2013 promising a 100x speed-up querying OTLP database or data warehouse batches by means of a ‘dual format’ for both row and column in-memory formats for the same data and table. Using Oracle’s ‘dual-format in-memory database’ option, every transaction is recorded in row format simultaneously with writing the same data into a columnar database. ‘This is pure in-memory columnar technology,’ said Ellison, explaining that means no logging and very little overhead on data changes while the CPU core scans local in-memory columns. Ellison followed up with the introduction of Oracle’s new M6-32 ‘Big Memory Machine,’ touted to be the fastest in-memory machine in the world, hosting 32 terabytes of DRAM memory and up to 384 processor cores with 8-threads per core."

iOS7 Lockscreen Bypass

20 09 2013

Forbes’ Andy Greenberg wrote an article on the way someone bypass iPhone’s Lockscreen. Here’s the excerpt :

As the video shows, anyone can exploit the bug by swiping up on the lockscreen to access the phone’s “control center,” and then opening the alarm clock. Holding the phone’s sleep button brings up the option to power it off with a swipe. Instead, the intruder can tap “cancel” and double click the home button to enter the phone’s multitasking screen. That offers access to its camera and stored photos, along with the ability to share those photos from the user’s accounts, essentially allowing anyone who grabs the phone to hijack the user’s email, Twitter, Facebook, or Flickr account.

Read more :

“ss -n” is faster than “netstat -na” on high load servers?

12 09 2013

# ss -n |grep ESTAB |wc -l

# ss -n |grep CLOSE-WAIT |wc -l

# ss -n |grep FIN-WAIT |wc -l

# ss -V
ss utility, iproute2-ss061002

Float and Double: 1/3 + 2/3 = 0.99999999….

31 07 2013

Rob Eamon wrote about why 1/3 + 2/3 = 0.99999999….

Some excerpts:

Roedy Green’s Java Glossary (http://mindprod.com/jglossfloatingpoint.html) discusses floating point in Java at some length. He offers insight on why developers should not be surprised at the inaccuracy of floating point:

[0.1 is a repeater fraction in binary.] It is like the repeater fraction 1/3 = 0.33333 in base 10. When you add 0.333333… to 0.666666… why are you not astonished to get 0.999999… rather than 1.0, even though you just added 1/3 + 2/3 to get 1? Yet, with Java floating point you are astonished when you add 0.1 + 0.1 and get something other than 0.2.

It is clear that when using float and double types in Java, some care must be taken to ensure proper behavior for the task at hand. For financial applications, where accuracy is paramount, float and double may need to be avoided altogether.

Here’s the full article :


My fizzbuzz in C

11 04 2013

This is my version of the fizzbuzz test, written in C:

char *arr[] = {"%d\n", "fizz\n", "buzz\n", "fizzbuzz\n"}; 
for (int i=1; i<=100; i++) printf(arr[!(i%3)+2*!(i%5)], i);

or rephrased in a more readable format:

char *arr[] = {"%d\n", "fizz\n", "buzz\n", "fizzbuzz\n"}; 

int i, index;

for (i=1; i<=100; i++)
	index = !(i%3) + 2 * !(i%5);
	printf( arr[index], i);

tcp-ip How the TIME_WAIT state works

31 01 2013

serverframework.com has written an interesting article about how the TIME_WAIT state really works. The link will get you there: