Category Archives: Computer Science

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.

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: 

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.

The Internet Turns 35

Happy Birthday Internet!

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.

Happy Birthday!

Fun with Cellular Automata

A Family of Cellular AutomataAs 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.

Rule #30What’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.