| Andrew Cooke | Contents | RSS | Twitter | Previous

C[omp]ute

Welcome to my blog, which was once a mailing list of the same name and is still generated by mail. Please reply via the "comment" links.

Always interested in offers/projects/new ideas. Eclectic experience in fields like: numerical computing; Python web; Java enterprise; functional languages; GPGPU; SQL databases; etc. Based in Santiago, Chile; telecommute worldwide. CV; email.

© 2006-2013 Andrew Cooke (site) / post authors (content).

Numbering Permutations

Permalink | Comment on this post

Previous Entries

For comments, see relevant pages (permalinks).

Teenage Engineering - Low Price Synths

From: andrew cooke <andrew@...>

Date: Sun, 22 Mar 2015 22:22:28 -0300

http://www.theverge.com/2015/1/22/7868157/teenage-engineering-pocket-operator-synthesizers

Andrew

Permalink

GCHQ Can Do Whatever It Wants

From: andrew cooke <andrew@...>

Date: Sat, 21 Mar 2015 13:52:59 -0300

https://www.techdirt.com/articles/20150320/04052830372/uk-government-admits-intelligence-services-allowed-to-break-into-any-system-anywhere-any-reason.shtml

Andrew

Permalink

Dublinesque

From: andrew cooke <andrew@...>

Date: Thu, 19 Mar 2015 22:00:54 -0300

I'm reading this book (in Spanish), and it's rather good.  Here is an accurate
review -
http://www.theguardian.com/books/2012/jun/15/dublinesque-enrique-vila-matas-review

Also, a book by the author of the review, that sounds interesting -
http://www.amazon.com/A-Reader-Reading-Alberto-Manguel/dp/0300172087

Andrew

Permalink

A Cryptographic SAT Solver

From: andrew cooke <andrew@...>

Date: Thu, 19 Mar 2015 21:14:39 -0300

http://www.msoos.org/cryptominisat2/

Cute idea.

Andrew

Permalink

Security Challenges

From: andrew cooke <andrew@...>

Date: Thu, 19 Mar 2015 19:20:32 -0300

https://honeynet.org/challenges

Andrew

Permalink

Word Lists for Crosswords

From: andrew cooke <andrew@...>

Date: Mon, 16 Mar 2015 20:31:23 -0300

If you use a computer to help with crosswords (I guess this is an admission of
guilt) then you may be frustrated with /usr/share/dict/words.

Happily, it's easy to generate new lists.  Simply download scowl from
http://wordlist.aspell.net/ and generate a couple of lists like this:

  ./mk-list english 50 > words-50
  ./mk-list english 95 > words-95

words-50 is a good starting place; words-95 is for when you get desperate.

Andrew

Permalink

3D Printing and Speaker Design

From: andrew cooke <andrew@...>

Date: Wed, 11 Mar 2015 08:05:27 -0300

I was brainstorming what I could do in my spare time if I quite work.  3D
printing seems to be more and more popular, and I've been toying with the idea
of writing GPU code to model air pressure / flow, so why not combine the two?

The idea is to model some complex shape (selected using, say, genetic
algorithms) that gives an optimal response when used as a speaker housing.
The hope is that an arbitrary shape would allow exact tuning to match the
speaker, giving good response in a small package.

3D printing should allow "arbitrary" shapes to be developed.  Size limitations
mean that it would be restricted to smaller speakers for now, but that might
change.

Andrew

Permalink

Searchable Snowden Archive

From: andrew cooke <andrew@...>

Date: Tue, 10 Mar 2015 23:39:12 -0300

https://snowdenarchive.cjfe.org/greenstone/cgi-bin/library.cgi

Andrew

Permalink

XCode Backdoored; Derived Apps Have Malware (CIA)

From: andrew cooke <andrew@...>

Date: Tue, 10 Mar 2015 12:27:00 -0300

https://firstlook.org/theintercept/2015/03/10/ispy-cia-campaign-steal-apples-secrets/

Andrew

Permalink

Rowhammer - Hacking Software Via Hardware (DRAM) Bugs

From: andrew cooke <andrew@...>

Date: Mon, 9 Mar 2015 22:02:59 -0300

http://googleprojectzero.blogspot.com/2015/03/exploiting-dram-rowhammer-bug-to-gain.html

You can flip bits (with some hopefully quite low probability) in DRAM by
targetting nearby bits.  And then it's just hard work.

Andrew

Permalink

Immutable SQL Database (Kinda)

From: andrew cooke <andrew@...>

Date: Sun, 8 Mar 2015 20:33:05 -0300

I want to share an idea that has proved extremely useful - having a database
that never changes existing values.


The context is a suite of programs used to calibrate seismometers.  These
follow the "unix pattern" of being command line tools with small actions,
which need to be used together, in certain sequences, to achieve the required
result.

The commands share a fair amount of state (for example, the definition of "the
current calibration"), which is written to a database.

In addition, there's a background process that can schedule new tasks to run,
which removes the need for the operator to manually execute all tasks.

So in a typical use case, the operator will run separate commands to:

  1 - indicate that a new calibration is being defined
  2 - add signals to the calibration (a "signal" is used to measure the
      response of the equipment - typically they are sine or random)
  3 - indicate when the calibration should start.

the background scheduler can then take over and execute commands to:

  4 - trigger the signals by sending appropriate commands to hardware
  5 - collect the resulting data
  6 - calculate the system response from the data
  7 - compare the system response with the nominal response
  8 - do end-of-calibration housekeeping tasks (like email results)

Clearly steps 1-3 define entries in the database, which are used by later
tasks.  But later steps can also add information - for example, it is only
after triggering the hardware that we get exact timing data.


Now, the trick is, that rather than modify the existing information, later
tasks "extend" the database records.

This complicates reading somewhat, since a task that needs a particular
parameter has to read back through the task history to find the most recent
value.  But that code can be automated and becomes a 1-off cost.

The advantage is that it is always possible to restart the process from some
known point.  This is HUGELY useful for debugging, which would otherwise be
extremely time consuming (since you would need to either try to reverse and
database mutations or re-run the entire series of commands).


One obvious objection is that the database grows over time.  But the amount of
data is so low that this is not an issue in practice (and, if it becomes one,
it would be relatively simple to have a regular purge of old data).

Andrew

Permalink