Interesting link of the day, courtesy of Boing Boing: FM 34-40-2 Basic Cryptanalysis. The truth is this kind of cryptography is pretty much of historical interest only, but I find historic codes to be, well, interesting.
Category Archives: Computer Science
How to See All of Europe Without Really Trying
All you have to do is rely on directions from MSN and you’ll be well on your way.
This would be slightly amusing, but is elevated by the apologies of Robert Scoble, who once again rises to the level of apologist for all things Microsoft.
Tor: An anonymous Internet communication system
This EFF-funded project sounds very interesting. It attempts to provide anonymity by making traffic analysis difficult by using something called an onion router. I’ll have to read more about it.
Tor: An anonymous Internet communication system
Tor is a toolset for a wide range of organizations and people that want to improve their safety and security on the Internet. Using Tor can help you anonymize web browsing and publishing, instant messaging, IRC, SSH, and more. Tor also provides a platform on which software developers can build new applications with built-in anonymity, safety, and privacy features.
GCHQ Challenge
The GCHQ has a bit of a Christmas challenge: break the code they have on their website, and be entered in a drawing for winning a copy of Simon Singh’s latest book. Cool. Check it out! Jeff and I might have something to do over the new year.
Early Random Number Generator Paper
Here is an interesting early paper on the justification, implementation, analysis and use of random number generators, written in 1959. The resulting machine generated about 5000 bits per second, not bad!
Via Boing Boing. By the way, random numbers are still cool.
MoleSter – a tiny file-sharing application
Not to be outdone, Matthew Skala one-upped Ed by creating MoleSter – a tiny file-sharing application. I wonder if it works… 🙂
Addendum: As my wife points out, it’s not a very attractive name. What’s really amazing is that I didn’t pick up on it.
TinyP2P
Ed Felton of freedom-to-tinker has released a tiny 15 line Python program called TinyP2P which allows you to create a simple (if not secure or scaleable) file sharing network. Get the code here. It’s cute, and might not be bad for tiny bits of file sharing.
Addendum: Actually trying to run it, I got
localhost - - [15/Dec/2004 15:53:33] "POST /RPC2 HTTP/1.0" 200 - Traceback (most recent call last): File "../tinyp2p.py", line 14, in ? for url in pxy(ar[3]).f(pw(ar[3]),0,[]): File "/u0/markv/my-python/lib/python2.3/xmlrpclib.py", line 1029, in __call__ return self.__send(self.__name, args) File "/u0/markv/my-python/lib/python2.3/xmlrpclib.py", line 1316, in __request verbose=self.__verbose File "/u0/markv/my-python/lib/python2.3/xmlrpclib.py", line 1080, in request return self._parse_response(h.getfile(), sock) File "/u0/markv/my-python/lib/python2.3/xmlrpclib.py", line 1219, in _parse_response return u.close() File "/u0/markv/my-python/lib/python2.3/xmlrpclib.py", line 742, in close raise Fault(**self._stack[0]) xmlrpclib.Fault:
Lego Logic Gates
The Goldfish Online has an extended treatise on building NOT, OR, NOR, And and NAND gates using everyone’s favorite building toy.
Casting SPELs in Lisp
Lambda the Ultimate has a link to a cute (if somewhat basic) tutorial on LISP programming. It shows how you can construct a rudimentary text adventure game in just a few lines of LISP code. Neat.
Another good vocoder paper…
Tom Duff pointed me at Traditional (?) Implementations of a Phase-Vocoder: The Tricks of the Trade by Götzen, Bernardini and Arfib. Useful Matlab code included.
Anti-Lamenessing Engine (ALE)
My perusal of freshmeat today turned up a link to the ill-named Anti-Lamenessing Engine (ALE), an image processing program that contains (among other things) an implementation of Irani and Peleg’s super resolution technique. The idea of super-resolution is to use multiple low resolution scans to generate a single improved high resolution scan. I first got interested in this as part of my interest in CCD imaging in astronomy, so it is nice to see an actual implementation.
Evesdropping on CRTs
Boing Boing mentioned a paper by Markus Kuhn on reconstructing the contents of a screen by measuring the reflected light in a room with a fast photosensor. Cool stuff, reminiscent of Ross Anderson’s work with Soft Tempest, which I experimented with briefly.
A Scheme to C compiler in 90 minutes
In a previous lifetime, I actually knew something about the compilation of functional programming languages. Hence, I found this presentation about writing a Scheme to C compiler by Mark Feeley to be rather familiar, and yet still useful and inspiring.
The Internet Turns 35
In the 1960s, computer scientists at American universities and in the U.S. Department of Defence devised a plan for a network of computers that could all communicate with each other.
After the hardware was put in place, researchers at UCLA attempted on Oct. 29, 1969, to log in to a computer at the Stanford Research Institute in Menlo Park, Calif.
…
In order to log in to the two-computer network, which was then called ARPANET, programmers at UCLA were to type in “log,” and Stanford would reply “in.”
The UCLA programmers only got as far as “lo” before the Stanford machine crashed.
Fun with Cellular Automata
As part of my dose of IT Conversations recently, I listened to this interview with Stephen Wolfram, author of the book A New Kind of Science. Wolfram is an odd duck, but I found his talk to be suprisingly good, and he raised an interesting question: do random programs do anything interesting?
He decided to try to analyze some very simple programs to see if they did indeed have interesting behavior. Instead of choosing complex machines like a Pentium, he instead used a 1D cellular automaton. If you haven’t heard of these before: here is how they work:
- The world consists of a linear array of cells. In this example, the cells form a ring, so every cell has two neighbors, and there are no funny boundary conditions.
- Each cell can be either on or or off.
- Time proceeds by steps. All cells are updated simultaneously.
- To compute the next value of a cell, the contents of it and its two neighbors are used to look up the next value in a rule table. For instance, a given rule might map the pattern ON-OFF-ON to ON.
- We graph the evolution of the “world” by displaying each successive generation as we go down the page.
There are 256 possible rulesets (since there are 8 patterns, and each pattern can be mapped to two outputs, there are 2^8 possible rulesets), so I wrote a simple program to run each ruleset on a world consisting of 128 cells evolved for 128 generations. I then cut those all together to make the quilt pattern you see on the right.
What’s surprising is that there are some really fairly complicated patterns. For instance, the pattern on the right is generated by rule 30. It displays some rather chaotic structures, even from these almost trivial rules. Wolfram suggests that very simple interactions in nature generate either very simple behavior, or behavior which is essentially equivalent to universal computation. I’m not sure whether this is idea is novel, useful or just a crackpot theory, but it was fun to kill 10 minutes writing up the simple program.