While I'm figuring out a spam-avoiding method for a project I'm working on, I'll use this post as a contact form.
To get in contact with me, just leave a message here, and I'll get back to you as soon as I can. Make sure you use a valid email, or I won't be able to respond.
Thursday, February 28, 2008
Tuesday, February 26, 2008
Obese XML Ouput
One reason why I haven't posted a live example of my Color Of Spam project yet, is that the xml output I'm getting from Mathematica right now is...well... it's so verbose it's obese! I'm still working on getting this output slimmed down to something much more reasonable. Something closer to
myIPNode
Originally uploaded by galaxygoo1
Here's a single node (a single spam hit), of the output I'm currently getting:
mathIPNode
Originally uploaded by galaxygoo1 
As you can see, it's incredibly verbose. Once I get this outputting in a structure I like, I may start posting live versions. It just takes too long to load, and parse, in this state.
myIPNode
Originally uploaded by galaxygoo1

Here's a single node (a single spam hit), of the output I'm currently getting:
mathIPNode
Originally uploaded by galaxygoo1

Labels:
color of spam,
data visualization,
Mathematica,
mathML,
xml
Monday, February 25, 2008
The Color of Spam - drifting clusters
I've made some modest progress with the Color of Spam project. Here's a sneak peak.
Labels:
AS3,
color of spam,
data visualization,
experimental,
flash,
Mathematica,
spam
Monday, February 18, 2008
array.length vs xml.length() in as3
This is one of those things that annoys me, with ActionScript 3: the syntax for getting the length of an array is different from getting the length of a generation in XML.
When getting the number on elements in an array, you use length as a property of the array rather than a method. Such as
var max = myArray.length;
But to get this from an XML object, you have to add function brackets like this
var kids = myXML.length();
I'm guessing this is because automatically tracking the number of elements in an array is much simpler than for an XML object....certainly requires less overhead if the XML object is very complex.
Call me lazy, but I don't want to have to remember that length is a property of an array and a method of an XML object. Some consistency in syntax would be nice, even if inside it acts like a property sometimes and method at other times. It gets challenging to remember all this, especially if I'm switching between AS and other languages a lot.
When getting the number on elements in an array, you use length as a property of the array rather than a method. Such as
var max = myArray.length;
But to get this from an XML object, you have to add function brackets like this
var kids = myXML.length();
I'm guessing this is because automatically tracking the number of elements in an array is much simpler than for an XML object....certainly requires less overhead if the XML object is very complex.
Call me lazy, but I don't want to have to remember that length is a property of an array and a method of an XML object. Some consistency in syntax would be nice, even if inside it acts like a property sometimes and method at other times. It gets challenging to remember all this, especially if I'm switching between AS and other languages a lot.
Friday, February 15, 2008
In Loving Memory
To laugh often and much;
to win the respect of intellingent
people and the affection of children;
to earn the appreciation of honest critics
and endure the betrayal of false friends;
to appreciate beauty;
to find the best in others;
to leave the world a bit better whether
by a healthy child, a garden patch,
or a redeemed social condition;
to know even one life has breathed
easier because you have lived.
This is to have succeeded.-- Ralph Waldo Emerson
Wednesday, February 13, 2008
just want to play
What is it about having stressful deadlines, that makes me just want to play? Not only do I want to play, but I'm getting all kinds of great ideas.
If I were less disciplined, I'd go ahead and play with my side projects. But I have to hold onto that discipline like a life line, and get the job done.
In times like these, I find it useful to keep a notebook and pen within reach at all times. If I jot down the idea quickly, I can let go of it and get back to work.
If I were less disciplined, I'd go ahead and play with my side projects. But I have to hold onto that discipline like a life line, and get the job done.
In times like these, I find it useful to keep a notebook and pen within reach at all times. If I jot down the idea quickly, I can let go of it and get back to work.
Monday, February 11, 2008
Color of Spam: dots
I'm still working on this, but here is a sneak peak at what the viz may look like.

This visualization of the XML output from Mathematica is coded in ActionScript (AS3).

This visualization of the XML output from Mathematica is coded in ActionScript (AS3).
Labels:
actionscript,
color of spam,
data visualization,
experimental,
flash,
Mathematica
Sunday, February 10, 2008
The Color of Spam project, Mathematica code
Spam! The scourge of the internet! We constantly battle it.
One form of spam that drives me nuts, is form/comment spam. Some time ago I started collecting the ip addresses of spammers who abuse web forms at galaxygoo. The ip address of the spammer is included in the body of the email.
To extract this data, I've been tinkering with Mathematica. Below, is a snapshot of what my code currently looks like. It imports from a mailbox, where I've saved the spam, and extracts the string for the ip address from the body of email.
The syntax of Mathematica is a bit different from other languages I've worked with, and I'm constantly learning. I'm sure there are much better ways to do this, but this is what I have so far.

Working with Mathematica differs from programming with a compiler, since in Mathmatica you run one "line" of code at a time. Where I would comment out a line in ActionScript when testing, in Mathematica I can run each line indepenently. Just click on the line, and execute it. So the structure of a Mathematica document can be a little different than code writen to be compiled and run all at once.
I've added numbers, since the notebook doesn't have line numbers in the code. At (1), what I've done is use the string "ip address: " and told Mathematica to extract the string following it from the body of the email messages in the mailbox.
Now that I've extracted the ip addresses from all the email messages in the mailbox, I can drop the string "ip address: ", which is what the lines at (2) do.
While line (3) isn't needed, for the project, it's kind of cool that we can look at the available elements of the contents of mailbox.
In line (4) I extract the dates, and then interpolate them with ip addresses in line (5). This results in something like a shuffled deck of cards, where every other element in the resulting array is an "ip address".
To break these out into paired elements, I use line (6). The whole thing can be exported in XML, which is in mathML format with line (7).
One form of spam that drives me nuts, is form/comment spam. Some time ago I started collecting the ip addresses of spammers who abuse web forms at galaxygoo. The ip address of the spammer is included in the body of the email.
To extract this data, I've been tinkering with Mathematica. Below, is a snapshot of what my code currently looks like. It imports from a mailbox, where I've saved the spam, and extracts the string for the ip address from the body of email.
The syntax of Mathematica is a bit different from other languages I've worked with, and I'm constantly learning. I'm sure there are much better ways to do this, but this is what I have so far.

Working with Mathematica differs from programming with a compiler, since in Mathmatica you run one "line" of code at a time. Where I would comment out a line in ActionScript when testing, in Mathematica I can run each line indepenently. Just click on the line, and execute it. So the structure of a Mathematica document can be a little different than code writen to be compiled and run all at once.
I've added numbers, since the notebook doesn't have line numbers in the code. At (1), what I've done is use the string "ip address: " and told Mathematica to extract the string following it from the body of the email messages in the mailbox.
Now that I've extracted the ip addresses from all the email messages in the mailbox, I can drop the string "ip address: ", which is what the lines at (2) do.
While line (3) isn't needed, for the project, it's kind of cool that we can look at the available elements of the contents of mailbox.
In line (4) I extract the dates, and then interpolate them with ip addresses in line (5). This results in something like a shuffled deck of cards, where every other element in the resulting array is an "ip address".
To break these out into paired elements, I use line (6). The whole thing can be exported in XML, which is in mathML format with line (7).
Labels:
color of spam,
galaxygoo,
ip address,
Mathematica,
mathML,
spam,
xml
Thursday, February 7, 2008
spinoff 1a
Just a little sketch of an idea. It's really simple, but will help me remember the idea when I finally have time to code it.
The only code in it is for the "replay" button, which points to the first frame on the timeline. It's been so long since I've done time line code like this. Rather than try to remember how to do it in AS1 or AS2, I did it in AS3.
Download file
The only code in it is for the "replay" button, which points to the first frame on the timeline. It's been so long since I've done time line code like this. Rather than try to remember how to do it in AS1 or AS2, I did it in AS3.
Download file
The Ballet and Flash
I've spent a lot of time in theaters. Performing. Designing and building sets. Experiencing the magic from the house. But tonight at the ballet, before settling into our seats and the curtain rose, I was especially entranced by the mechanics of it all backstage.
There was this great wall of ropes, for raising and lowering elements of the set onto the stage. I tried to trace where the ropes led, but they went up farther than I could see. I could imagine the ropes moving back-drops and large set pieces. In a way, they reminded me of tweening and actionscripted motion graphics in Flash.
During the performance, there was a moment when the dancers reminded me of MovieClips moving back and forth through layers. I started thinking about how to code it, but quickly decided to think about it later and just enjoy the ballet.
Wednesday, February 6, 2008
Getting Personal
After years of friends and colleagues suggesting that I make more personal posts on GalaxyGoo, I'm finally exploring this idea here. This is new for me, so please be patient with my attempts to open up more.
When I told my 8-year-old about this blog, she immediately said "underground can mean secret! Is it a secret?" Well, it's not really a secret, but it's not meant to be mainstream. I also think of underground in the context of a journey. I'm on my way somewhere. To be honest, I'm not completely sure where yet.
I also think of underground as being back stage. The walls are plain and the edges are rough. There are costumes everywhere, and curtain isn't for a few hours yet. I'm still me, not the character I'm playing on stage.
When I'm writing for GalaxyGoo, I'm not writing as an individual person. I'm the leader of an organization, and it's not really appropriate for me to get too personal in that setting.
So, I've started this personal project. I hope you get something from it.
When I told my 8-year-old about this blog, she immediately said "underground can mean secret! Is it a secret?" Well, it's not really a secret, but it's not meant to be mainstream. I also think of underground in the context of a journey. I'm on my way somewhere. To be honest, I'm not completely sure where yet.
I also think of underground as being back stage. The walls are plain and the edges are rough. There are costumes everywhere, and curtain isn't for a few hours yet. I'm still me, not the character I'm playing on stage.
When I'm writing for GalaxyGoo, I'm not writing as an individual person. I'm the leader of an organization, and it's not really appropriate for me to get too personal in that setting.
So, I've started this personal project. I hope you get something from it.
Odd Day
Two things have got me feeling a little odd today.
First, I quickly found and fixed a bug that I was expecting to spend all day on. For some reason, this gave me an uneasy feeling that I haven't been able to shake. I keep thinking that there must be something I forgot, and I'm having a hard time moving my brain onto anything else.
Second, I got a message that my grand-aunt passed away last night. She was very old, so it wasn't unexpected. Still, I have this vague feeling that the array holding the generations of my family has shifted in the stack of life.
I'm sure that tonight, the Ballet will lift my spirits. A friend of mine is dancing, and it's always a treat to see her perform.
First, I quickly found and fixed a bug that I was expecting to spend all day on. For some reason, this gave me an uneasy feeling that I haven't been able to shake. I keep thinking that there must be something I forgot, and I'm having a hard time moving my brain onto anything else.
Second, I got a message that my grand-aunt passed away last night. She was very old, so it wasn't unexpected. Still, I have this vague feeling that the array holding the generations of my family has shifted in the stack of life.
I'm sure that tonight, the Ballet will lift my spirits. A friend of mine is dancing, and it's always a treat to see her perform.
Monday, February 4, 2008
confessions of a closet Project Runway fan
Those of you who have met me, might guess that fashion doesn't occupy much space in my brain. I just don't have time to be bothered, and when I do bother, I'm more interested in style than fashion. What can I say? I'm a geek!
But I have to confess that I love Project Runway!
Why? Because they make stuff! I love watching their challenges and creative processes . . . from challenge, to idea, to the completion of a tangible object. It makes me want to go dig out my sewing machine, and create something.
But I have to confess that I love Project Runway!
Why? Because they make stuff! I love watching their challenges and creative processes . . . from challenge, to idea, to the completion of a tangible object. It makes me want to go dig out my sewing machine, and create something.
The most interesting part for me is how they understand the geometry of clothing. How the two dimensional pieces of fabric combine into a three dimensional garment that fits on a body. Very cool!
Labels:
"project runway",
creative process,
fashion,
geometry
Subscribe to:
Posts (Atom)


