Follow Slashdot blog updates by subscribing to our blog RSS feed


Forgot your password?

Comment Re:Core considerations (Score 1) 150 150

Per core or Per CPU software pricing can dominate the cost calculation. We have a CFD application, and we were considering boosting the hardware. One look at the software costs discouraged us.

A costly complication is that 3-D CFD (or FEA), is an O(n^3) problem. Doubling the mesh density means 2^3=8 times the CPU time. An increase of 10 times in the mesh density requires 10^3=1000 times the CPU time. If you are pushing the extreme, small changes in the mesh density have significant cost impacts.

It makes me wonder how many research groups are paying full-cost for the commercial CFD packages. Many universities, some quasi-government labs, and many small startups will not have the money for the full-price commercial packages.

Comment Re: How much you got? (Score 1) 184 184

MariaDB. Google switched from MySQL to Oracle to MySQL to Google F1 for it's AdWords technology. See the wiki page on Adwords. Since then, many companies, including Google have switched their smaller MySQL databases to MariaDB.

There is an interesting account of the Google Oracle migration at the wayback machine.

Comment Get a trademark (Score 1) 108 108

Get a trademark on the domain name ending in .com. No one else will trademark a domain name they don't own. When someone comes around to sue you, sue them back for trademark infringement. I think there have been a few cases where Walmart has tried to eliminate pre-existing trademark owners. Walmart lost, and all the cases ended in settlements.

Comment Re:Kids don't understand sparse arrays (Score 3, Informative) 128 128

Sparse arrays is a mathematical abstraction that completely ignores the implementation details. Formally, they are any matrix that has "many" zeros (or null) values. The practical problem is that most useful optimizations around sparse arrays require closely matching implementation details against the problem to be solved. With sparse arrays, implementation details are killers.

For instance, suppose the standard solution is adopted. The sparse array will be organized as an array of linked lists representing the rows, with each row containing another linked list that contains the individual data values. What happens if you want to do a matrix multiply? A matrix multiply requires a column by row lookup and a row by column lookup. One will be an O(1) lookup, and the other will be a O(n^2) lookup. This makes a full matrix multiply an O(n^5) operation, and memory is the least of everyone's worries.

To optimize the code, it is necessary to look closely at how the matrix will be built and used. However, as soon as that starts happening, the matrix multiply decomposes into a bunch of specialized matrix operations. At this point, the abstraction starts falling apart.

For example:
a) Assume the multiplication involves a diagonal matrix. Then the optimum solution is to store the diagonal matrix as a 1xn matrix, and specialize the matrix code. This was the favoured approach from numerical methods in C and Fortran.
b) Assume the multiplication involves a tridiagonal matrix. Then the optimum solution is to store the tridiagonal matrix as a 3xn matrix, and specialize the matrix code. Again, see numerical methods in C and Fortran, or just about any good matrix library.
c) Assume the matrix operation involves a "control-systems" style matrix. One populated row, followed by a diagonal series of rows with one or two elements. The optimum solution is to develop specialized code. For most control systems problems, this matrix never changes.
d) Control systems often have a compact matrix representation involving a series of matrix multiplies. However, if the matrix multiplies are analysed, they become a much simpler sequence of equations that can often be executed in O(n^2) time instead of the longer O(n^3) time of the matrix multiplies. As such, develop specialized code. Both MatLab and Mathematica have functions where numerical operations can be broken down into there constituent formulas and saved as "C" code.
e) Assume we really need to frequently multiply a truly sparse array. Then build two sets of linked lists, one organized by row/column and another organized by column/row. Then both the row and column lookups can be done as an O(1) operation. The matrix multiply is a O(n^3) operation.
f) Just because the inputs to a matrix operation are sparse, doesn't mean the output array is sparse. I'm thinking of Singular Value Decomposition, some matrix multiplies, matrix inverses, matrix pseudo-inverses, and covariance matrices. Also, some matrices that appear in Quantum physics. In this case, matrix operations need to be further specialized to deal with creating non-sparse matrices from sparse-matrices. Additionally, some matrices may need to be rounded to sparse, even though they may be fully populated, like some covariance matrices.

In the end, sparse matrices are simply a descriptive term for a bunch of application-specific optimizations. Sparse matrices devolve into numerical optimizations that no-one cares about unless they are looking at an application that requires the specific numerical optimization. I'm not surprised high-school CS coders don't "understand" them.

Comment Re:Social Media Outage (Score 3, Interesting) 371 371

Unfortunately, that doesn't stop people. All they need to do is create a fake Facebook profile. The scam is:

1. Acquire targets name, some basic information.
2. Create Facebook profile.
3. Post some cat pictures, get friends.
4. Run a scam / Post defamatory post
5. ***
6. Profit / Watch target get fired

Non-participation in social networks is no protection.

Comment Re:Bruce Schneier the paranoid cryptographer (Score 1) 157 157

My suspicion is this news story is cover for the fact another leak occurred and compromised current operations.

The US intelligence agencies would have to assume that after Snowden, their undercover operatives were compromised. Any serious spy agency would not trust a renegade spy hiding in Russia and a bunch of foreign journalists to hold onto state secrets indefinitely. Even if they believed that Snowden was well intentioned, every spy agency in the world will be trying to get a copy of Snowden's database. As such, the assumption would have to be that the database was (or will soon be) compromised.

The only reason to worry about current operations is that another leak occurred. I'm thinking that the OPM leak might be worse than reported, or alternatively, yet another leak has happened.

Comment Getting rid of some of these accidents is hard (Score 2) 74 74

I do a great deal of driving. About once a week, someone tries an unsafe lane-change with me opposite. Yesterday, someone attempted to change lanes with me directly beside them. No turn signals or anything. As far as I could figure out, the lady had no clue she had even done a lane change.

It is really hard to detect, react, and prevent someone trying to lane change on top of you, or to prevent someone from rear-ending you. I really hope someone figures out something better than what we have right now.

Comment Re:Good heavens (Score 1) 86 86

Simple, short, clear: "Russian Billboard detects Cops!"

Headlines are supposed to be simple and short. Other alternatives are:

Russian Billboard hides advertisement when it recognizes cops.


Russian Billboard hides advertisement for banned products, when it recognizes cops.

Sentences with dependent clauses are often more difficult to read than sentences without dependent clauses. Thus, the first sentence "Russian Billboard detect Cops!" is very straightforward to read. The second variation is slightly more complicated, because it has one dependent clause. The third variation has two dependent clauses, "for banned products, when it recognizes cops". This makes the sentence complicated to read, gives the story away, and is less likely to attract readers to the article.

Comment This might not be a good idea ... (Score 5, Interesting) 94 94

The problem with R is that everything is a vector. When you hit something as big as a multi-terabyte database, the vector doesn't fit in memory anymore. An interpreted language like R, and even many compiled languages, expect memory accesses to be quick. However, if the data accesses are requiring SQL calls, then the R-SQL server marriage will be very slow. I'm sure they will be able to do some small demonstrations that look quick, but once the database becomes large, then things will be very slow.

On the good news side, there are some operations like average and standard deviation that reduce into loops of sums. Those should map onto SQL queries relatively well.

On the bad news side, a popular operation is to build a covariance matrix. With a large data set, it is easy to create a covariance matrix that does not fit into RAM.

R would be a better match against an distributed database (NoSQL, MongoDB), where the memory requirements of the vectors could be split across multiple computers. Although, that too might require some changes to R.

Comment Is this an Arduino product? (Score 2) 42 42

Whatever happened to the Arduino vs Arduino suit?

What makes hardware is great software support. I would hate to wind up with a piece of hardware that can only run a small fraction of the Arduino software.

Also, along those lines, is OpenWRT a friendly enough distribution to make the user experience as easy as it is with the old Arduino?

Your good nature will bring you unbounded happiness.