Single Rule L-System Fractal Generator in Python for Autocad

Posted in Uncategorized on August 23rd, 2010 by Jordan – Comments Off

My first assignment at Cooper Union was to make something in AutoCad, a program used by engineers worldwide to draft architectural plans and machine parts. I decided to write a script in Python that generates the lines of an L-System fractal (as described in The Computational Beauty of Nature by Flake) I used the SDXF library for Python to write the AutoCad DXF file format. You can check out my source code here -> autol.py

Subversion Repository Index Page

Posted in Left Brain on May 28th, 2010 by Jordan – Comments Off

Back when I was working on my FRC robotics team’s web infrastructure, I wrote a simple page to display all of the subversion repositories related to my team. Realizing that there were no existing “simple” subversion repository index page generators, I decided to make the code human readable and post it here for the world to use.

See it in action!   http://svn.jperr.com

Download svnindex.py

The code was developed and tested using Python2.6, but I see no reason why it shouldn’t work in Python3.0. Likewise, I’ve developed and tested this using UNIX based machines (Mac 10.6 and Debian Linux), but it should work under Windows. The script requires the command line “svn” client to be installed and accessible by the user under which Python runs, and you must have the standard python “time” and “commands” modules installed. 99.9% of Python installations will have them pre-installed.

All you need to do to get svnindex.py running on your site:

  • Download svnindex.py (link above)
  • Modify the settings at the top of the file
  • Set up a daily cronjob to run the generation script. Something like `python /path/to/svnindex.py` works just fine.

Cooper Union

Posted in Left Brain, Right Brain on April 5th, 2010 by Jordan – Comments Off

I will be attending The Cooper Union’s Albert Nerken School of Engineering with a concentration in Electrical Engineering.

Processing Chaos

Posted in Left Brain, Right Brain on March 17th, 2010 by Jordan – Comments Off

After reading the wonderful Chaos (James Gleik), I was inspired to pick up a copy of The Computational Beauty of Nature (Gary Flake) and explore chaotic computation for myself! My tool of choice was Processing, a simplified yet powerful programming language built on Java.

I began this endeavor by exploring the Mandelbrot set with Zlata over the MIT Spark weekend. In the wee hours of Sunday morning, the first grainy images of the Mandelbrot set came into view. Uplifted by this success, we toiled tirelessly to create a full color, zoomable, and downright awesome fractal generator.

One of the best renderings from our Mandelbrot generator.

View Demo

Adding color was one of the toughest challenges we encountered. The standard RGB color notation is great for most purposes, but it really does fall short for generating the spectrum. In order to more easily generate a smooth color spectrum, we switched the project to HSL color and were able to simply scale the “H” (hue) property with each point’s iteration count.

Another interesting problem which still exists as a “bug” in the demo applet above is the lower limit imposed by the floating point datatype. As you zoom in farther and farther, the coordinates shrink down to absurdly small and precise values. Eventually, the measly floating point becomes imprecise, and the display seems pixelated. An easy fix would be switching all datatypes to doubles or bignums, but that would just take too much effort. It works!

Next I tackled the Lorenz Attractor. One of many such “strange attractors” that visualize the changes in a dynamic system by plotting the system’s state in “system space.” In the case of the Lorenz Attractor, fluid convection is represented in 3-space by the following set of equations:
From hypertextbook.com:
dx/dt = σ(y − x)
dy/dt = ρx − y − xz
dz/dt = xy − βz

As stated above, “x” is the convective flow, “y” is the horizontal temperature distribution, and “z” is the vertical temperature distribution of the system. Curiously, the orbit of point (x,y,z) over time will not “settle down” or form a repetitious cycle given certain critical values for σ, ρ, and β. Instead, the orbit forms a magnificent, infinitely complex object known as a strange attractor.

The Lorenz Attractor

View Demo

Invited to NYCSEF final round!

Posted in Left Brain on March 11th, 2010 by Jordan – Comments Off

I just found out that my year long research project on the trends in Integrated Information in evolving neural networks has been accepted into the NYCSEF (New York City Science and Engineering Fair) final round at the Museum of Natural History.

The preliminary round took place last Sunday (3/7/10). This round included live, interrogation style judging by three separate judges. I am honored that they were impressed with my work.

A cell phone shot of me being interviewed by a student from S.I. Tech at NYCSEF.

Bresenham’s Line Algorithm

Posted in Left Brain on February 16th, 2010 by Jordan – Comments Off

Bresenham’s line algorithm is the best known way to render a continuous and straight line through a raster display. I started out allowing floating point operations, but quickly decided to implement the algorithm using only integers. I didn’t like the online explanations and tutorials of the algo, so I decided to write something that I conceptually understood. View my code here.

My algorithm works by increasing an “error” variable by y0 – y1 every iteration. Should the error ever rise above x0-x1, the error is decreased by x0 – x1 and the drawn Y value is increased by 1.

Started to Paint a Mural

Posted in Right Brain on January 20th, 2010 by Jordan – Comments Off

I decided to lighten up my rather industrial looking brick wall with a splash of color. Literally. I’m not completely sure if my landlords will be happy with it, but paint isn’t that hard to scrape off!




Zlata and I have put in close to 6 hours on the mural so far. I can’t wait for school finals to be over so that we can continue.


David Lynch is Awesome!

Posted in Right Brain on January 8th, 2010 by Jordan – 2 Comments

I was recently exposed to the fascinating visual and auditory art of David Lynch. His 1990 film “Wild At Heart” struck a chord with me with it’s array of outcast characters and it’s foray into the darker and more insane side of human social behavior. I am making an effort to watch more of Lynch’s creations.

Rewriting Stuyvesant’s Computer Science Website

Posted in Left Brain on December 20th, 2009 by Jordan – Comments Off

I have been given the responsibility of redesigning and rewriting Stuyvesant High School’s computer science website (cs.stuy.edu).

We are leaning towards writing a bare-bones server using Python’s WSGI specification. The specifics are still being worked out, but this new web presence will need to:

  • Serve a “presentable” site to the public complete with teacher bios, course descriptions, syllabus, and possibly a calendar.
  • Serve special class pages with editable sections and some sort of source code browser to authenticated users.

Since every teacher at Stuy would rather edit files in Emacs than bother with a buggy AJAX admin interface, most configuration and static content will be kept in plain-text files. Again, the specifics have not been worked out. More to come!

Intel Submission: Observing Integrated Information in Evolving Neural Networks

Posted in Left Brain on December 20th, 2009 by Jordan – Comments Off

I have completed a research paper on the how integrated information behaves during artificial evolution of neural networks in Polyworld. Mad props to Virgil Griffith (with his integrated information calculator) and Larry Yeager (author of the aforementioned Polyworld) for their incredible insight and willingness to help out a mere high school student.

Download the full paper as PDF (400k)

Abstract:

Evolution has proven to be a wildly successful autonomous process for creating intelligent systems in the natural world and in simulation. Since the early 1960s, re- searchers have used artificial evolution to find ingenious and novel solutions to complex problems such as series prediction and flight control. Recently, artificial evolution has been applied to neural networks with the aim of evolving more robust artificial intel- ligence. Several metrics have been proposed to chart the emergence of intelligence in these evolved networks. This work analyzes the behavior of a new metric, integrated information (φ). Observed data is analyzed, interpreted, and compared to more con- ventional properties of the artificial neural network. The data analysis shows that φ increases over evolutionary time and is therefore promising as a heuristic measure.

Experimental Data:

Results from Integrated Information experiments. The data set includes anatomical neural network sampled from 5,202 Polyworldians, at death, from three genetically independent simulations. Each data point represents a 200 time step bin size. *First sample for which p < 0.01