Something Self-Similar ….

see src in post

I named my home-studio “Self-Similarity Studios” because I’ve always had an affinity for things in science and nature that affect this quality. “AS ABOVE …. SO BELOW” Think about a rock. Hold it in your hand…what color is it? What shape does it have? Note that the rock you are holding and a mountain (or significantly large hill) MAY look alike….just on different scales. Two inches of a shoreline, viewed from above, with a few hundred bits of sand – MAY look like … two MILES of shoreline from 100 stories above, with a few hundred large rocks. Rocks, mountains, trees, shells, coastlines….they all exhibit a self-similarity. This is where nature and artificiality intersect and dove-tail in strange and striking ways. (More images, experiments and abstraction forthcoming)

I briefly had access to tools that could render graphics quickly (and cost-free) – this was the Silicon Graphics Lab at Cal Poly, donated by SGI, the lab ran about 30 workstations, each running SPARC SOLARIS 7 and all wired into a mainframe capable of doing the massive amounts of calculations needed to draw a frame (or a million, as in a feature-length CGI-animated motion picture) required to not only calculate and store (print; if need be) but depict images that elicit pure aesthetic beauty.

Ahhh….where Logic and Art intersect. On the chipset just beneath my fingers and the never-ending-thought-machine hard-wired to my skull and backbone.

To me; numbers are a simple, spiritual truth. People use numbers to lie all the time; but one can NEVER be deprived of its “one-ness” Carl Sagan said, “The simplest thought like the concept of the number one; is an elaborate logical underpinning. The brain has it’s own language for testing the elegance and consistency of the world.” One is one. QED.
If WWWIII begins at dawn; two will be a prime number. If x is an odd integer, then x + 2 will also be odd. The square root of 2 will be irrational; The sum of The Cantor Set DsubH will be transcendental. Our universe could be obliterated in an instant, but there will still be five and only five regular solids.*
I don’t know about you but I take comfort in that.

Anyway….I had access to this lab for a year; these machines, combined, would still (many years later) dwarf the computing power of yours or my CPU. These machines were used for Raytracing; most famously 1st used in entertainment/(Art!) by John Laseter; the Academy Award winning producer of the short “Luxo Jr.” (and founder of PIXAR).

a frame from luxo jr
How real does this frame look TO YOU?

Luxo is just a lamp, but it took parallel processors days to make him look up, or turn, or jump. Why? – A raytraced image is a 3D scene (Picture the two lamps)….There is ambient and natural light reflected off them, they also project their own artificial light. That’s a lot of photons bouncing around a simple scene – to make it look real; Laseter perfected a technique whereby:
FOR (EVERY PIXEL ON THE SCREEN)
DO (~a million calculations to determine it’s color in RGB Space)
….or a few billion for one frame
….or difficult-to-express numbers for a 3-min short film.

I never got to build or try a ray-tracer…they took about an hour to render just one frame. Till recently a complete developer environment was required to render computer graphics —Visual Studio, a UNIX lab, Something big and expensive from Microsoft, SGI, Sun — all in my interest faded when I didn’t have access to the tools; I never really got the chance to explore it–I STILL have unsolved problems from back then. Only now can an affordable computer be had, open-source IDE’s set up, and LOGIC be used to make art: Fast and CHEAP.

The featured picture was created using the Processing java template library. If you have the JDK (see column two) you can build things like this yourself.

Here is the SRC (Source Code) It uses (to me) the complex compsci-concept of recursion; whereby by a function (in this case a procedure) calls itself. It will render a slightly different image every-time it runs and is easily customize-able; I hope you enjoy it as much as I enjoyed designing the algorithm
/*Algorithm by cwelke @Tapper7.com for Self-Similarity Studios
Last stable build: using Processing API, JDK 1.8, win8.1 5/26/15
Dist under The GNU Public License - compliant with ANSI/ISO std.*/
void setup(){
size(1000, 700);
background(#0F1A0A);
noStroke();
float dec = 0.6;
selfS(width*dec, height*dec, 400);
}//end setup
void selfS(float x, float y, float sz){
float angle, nx, ny;
//last int is transparency--rand switches tint
fill(lerpColor (#002900, #006600, random(1)), 300);
ellipse(x, y, sz, sz);
float rec = 0.6;
if(sz > 1){//recurse to base::do(while px_sz > 1)
angle = random(TWO_PI);
nx = x + sz*rec * sin(angle);
ny = y + sz*rec * cos(angle);
selfS(nx, ny, sz*rec);
angle = random(TWO_PI);
nx = x + sz*rec * sin(angle);
ny = y + sz*rec * cos(angle);
selfS(nx, ny, sz*rec);
angle = random(TWO_PI);
nx = x + sz*rec * sin(angle);
ny = y + sz*rec * cos(angle);
selfS(nx, ny, sz*rec);
}//endIF
}//end selfS

Here is the program run a second time:

only three parameter changes - colors & size
Run again with three parameter changes – colors & size

As long as we are at it check this out:

a recursive forest snap 1
Real…or Artificial?

Same logic – run a second time:

tree snap 2
Algorithmus Eleganten

The source:
/*orig. src by Zack Marlow-McCarthy*/
//modified, formatted, built, debugged and run by Tapper @Tapper7.com
//last stable build at SSStudios 5/27/15
//Processing API builds on JDK 1.8 running win8.1
//rights+compliance: ANSI/ISO std style, Creative Commons & The GNU Public License
float angleRandom1 = .8;
float angleRandom2 = 1/angleRandom1;
float lengthRandom1 = 1.01;
float lengthRandom2 = .08;
void setup(){
size(800,640);
//blue mist mod 5/27
background(#B2B2FF);
smooth();
}
void draw(){
translate(width/2,height);
rotate(PI);
strokeWeight(0);
if(mousePressed == true){
fill(126,20);
rect(-width/2,0,width,height);
strokeWeight(1);
pushMatrix();
translate(random(-width/2,width/2),0);
rotate(random(-PI/9,PI/9));
branch(30,PI/2, 0,0);
popMatrix();
}
}
void branch(float branchLength,float angle,float startX,float startY){
if(branchLength<1){//base case fill(#004A00); noStroke(); ellipse(startX,startY,5,10); stroke(0); }else{ float randomNess = random(0,100); strokeWeight(branchLength/2); float endX = cos(angle)*branchLength; float endY = sin(angle)*branchLength; line(startX,startY,startX+endX,startY+endY); startX += endX; startY += endY; if(randomNess>0 && randomNess<90){ branch(branchLength/(random(lengthRandom1,lengthRandom1+lengthRandom2)), angle*random(angleRandom1, angleRandom2), startX,startY); }else if(randomNess>=90 && randomNess<94){ branch(branchLength/(random(lengthRandom1,lengthRandom1+lengthRandom2)), angle*random(angleRandom1, angleRandom2),startX,startY); branch(branchLength/(random(lengthRandom1,lengthRandom1+lengthRandom2)), angle*random(angleRandom1, angleRandom2),startX,startY); }else if(randomNess>=94 && randomNess<98){
branch(branchLength/(random(lengthRandom1,lengthRandom1+lengthRandom2)), angle*random(angleRandom1, angleRandom2),startX,startY);
branch(branchLength/(random(lengthRandom1,lengthRandom1+lengthRandom2)), angle*random(angleRandom1, angleRandom2),startX,startY);
branch(branchLength/(random(lengthRandom1,lengthRandom1+lengthRandom2)), angle*random(angleRandom1, angleRandom2),startX,startY);
}else{
branch(branchLength,angle,startX,startY);
}//end else
}//end if
}//end recursion

*Proofs to come….[] -t

Cal Poly San Luis Obispo News Archive Part 3: Genius Abuse

Let’s take a break from murder and rape for a bit…I want to relate a unique anecdote….this was not a news item but another thing that happened that indicated massive corruption to me early on….

It’s February, a brand new millennium. I have a great professor who had the ability to help me understand object-oriented-design. without his help, I would’ve flunked out of my computer science classes, placed on probation and booted. He’s a good guy, a great teacher. He saved my ass.

He’s also a genius. Unquestionably. with that normally comes w/ quirkiness – strange behavior. This associate professor had worked at IBM, JPL (and subsequently NASA)…most Cal Poly professors have PhD’s…it’s likely required. Let’s call him “Carl” (in honor of Carl Sagan). Carl graduated from CalTech – with the only doctorate they offer: (clinical science and medical science programs are avail, but the MD is granted via UCLA or USC)

From CalTech’s Graduate Program online reference:
   
    Doctor of Philosophy

The degree of Doctor of Philosophy is conferred by the Institute primarily in recognition of breadth of scholarship, depth of research, and the power to investigate       problems independently and efficiently, rather than for the completion of definite courses of study through a stated period of residence. The work for the degree         must consist of research and the preparation of a thesis describing it, and of systematic studies of an advanced character, primarily in science or engineering.

Translation: there is no program….you present a comprehensive study and solution for a real world scientific problem with NO HELP OR ADVICE, all by yourself. Carl never said what it was …considering he worked for JPL it is probably classified.

Carl ended up at IBM because he was head-hunted away from JPL/NASA….they offered him a LOT of money…by the 90s IBM’s market share was being erroded by Compaq, Dell, HP and Gateway. We’ll never know what they paid him but I assure you it was probably triple his salary at JPL.

The problem with IBM is that Carl’s a genius, he doesn’t want to design a better processor to run Windows on….he also doesn’t like the corporate environment-a cubicle? HR seminars? Politics? 25 bosses? deadlines? performance reviews? this doesn’t work for a creative mind that is incomprehensibly intelligent – the right and left brain both firing on all cylinders. Carl was either fired or quit….he didn’t want all that money, but he still needed a job.

So he took one at Cal Poly. Why not? For all the bad things I’ve said about Cal Poly, w/o our Computer Science, Computer Engineering and Electrical Engineering alumni there is no Silicon Valley. No Intel. No Oracle. Graduates can build an operating system; they can create a new programming language AND a compiler for it. For CSC majors, after a brutal 101-103 freshman program, sophomores get the 205-206 brutality slave-labor program (if you don’t LOVE building software, you will quit after 205 or during 206 (Teams of 5 or 6 “get to” build an enterprise system for the university or the city. I had a choice between rebuilding the Cal Poly Computer Science Web Site OR build a card-reader system for the bus-system in SLO (Like a day-pass for OCTA) – YES it has to work and yes it actually gets used.

So the city or the college can farm out every upgrade, problem or project to subsequent students who do it for free! “Learn by Doing” Right?

I’m off-topic, back to Carl.

The two classes Carl taught me were concerned with Object Oriented Design; an abstract way of writing code and structuring it in more of a human way and less of a machine way.* He never demanded outrageous workloads like the other engineering professors, these were lab classes so had to verify our theoretical understanding by assigning real world problems and testing the solutions we designed.  A lab project could take 2 hours, 2 days, 2 weeks, or some (I have one) never get solved.

Carl’s way of teaching (he wasn’t a teacher….as I said) always made it so the complex problems were easy to “divide and conquer” that is, to break a large problem down into x sub-problems, then separate each down into x(squared) easy problems, solve those, which will solve x and assemble the x to solve the original problem. I had to bash my head against the wall for 100 hours a week sometimes just to finish 1 dumb project that someone who “got it” could finish in an afternoon. He gave me confidence, made me feel like “not an idiot” as all the other profs and CSC students had…

I even made a friend in his classes, we had mutual respect for each other cuz we were both getting B’s (that’s a big deal a 2.0 is considered just fine, even though a 1.9 in one 10-week qtr puts you on probation, a 2.0 the next qtr takes you off of it – I graduated with 2.8 – a C+) We also weren’t people who had been programming since they were 5 yrs old. It made me wonder why CP accepted me into the major? I qualified for the Engineering College, but from day 1 it was clear that expertise in math and a love for video games did NOT qualify me to compete with anyone. Had he not taught me QUICK…I’d never made it past sophomore year.

Carl comes in one day. Late for class. He looks REALLY PISSED. This was not uncommon. He was always friendly, but he never seemed happy….he had this blank stare sometimes and I detected something(s) personal or tragic were still bothering him or ongoing. He was red-faced and sweating….he just sort-of paced around the room while we sat there, maybe 5 or 10 minutes.

He was about to say something. He was trying to decide whether or not to say it….most likely HOW to say it

Carl was probably the first to ever come right out and say what I was already feeling at the time about the college: greed, lies, perception – common themes so far.

Finally he relaxed and walked up front.

“How much money do you guys think I make?“——I was stunned. Everyone was. What the FUCK…is he talking anout?

“Seriously…I want you guys to think and as soon as you have a guess call it out.”

Nobody raised their hand or said shit….but I was definitely thinking about it. WE all knew he had a PhD from CalTech, that he’d spent about a decade at JPL/NASA and that he’d come from IBM as a Sr. R&D project manager at IBM….in 1999 his salary at IBM couldn’t have been less that 100k. I knew he’d taken a pay cut….prob a big one to be here…he wasn’t tenured, but this Cal Poly – Engineering – Computer Science. You can’t apply for a job like that. IF they ever need someone….they’ll find an established, possibly world-renowned software theorist. Someone famous among software engineers at minimum.

It was in-between 40k and 60k… it HAD to be. when he started asking us individually, most were guessing between 50k and 80k. That was a bit high, but he was full-time this was his only job.

“Chris – how much?”

“uhhh….you probably get like $50,000 a year?”

Polling the whole class indicated we thought he made about $60,000+. Then he projected the over head on the white-board. It was a copy of his paycheck for the previous month, he’d blacked out his SSN, but everything else was there….more personal info I’d want a classroom full of software engineers to have, that’s for sure. He was payed by the College of Engineering by a payroll clerk, monthly….and it said that he’d been paid $1200 for the previous month.

Ok, wait, what? That’s $300 a week. I knew he was putting in 50 hours easy….that’s SIX DOLLARS an hour. My first real job was at Starbucks…I started in 1997 and entry-level was $6.50 PLUS I got an extra 3-4 bucks per hour in tips. He broke it down that way too.

“I make less than minimum wage….[he went on to explain because he’d been there less than year there was some provision that made him an associate professor but somehow he wasn’t accredited, or some rule change had come through and his monthly check had dropped significantly] …My rent is $1000, this isn’t enough for me to EAT!”

He said he had some money saved up from IBM and that without that and barring a significant change to “What they promised me…” He’d quit. and they he went on at length about how he’d “been cheated,” and “lied to” that “he had offers from other universities when he left IBM but Cal Poly  offered the best incentives to him.”

They said he’d only work about 20-30 hours a week, that most of it would just be office hours, where he could do whatever he wanted plus have access to all the same research tools he’d had at IBM (If anything we probably had better). To become tenured you HAVE to conduct research AND publish…for most it’s commentary in professional or academic journals. If there’s anyone I wish published a book on software design, it’s him. His software runs on the Hubble Space Telescope. He was told he’d make about $45,000 a year with bonuses for student performance, peer-review, admin-review and publishing papers and books. He’d been conducting research and publishing results in professional journals for 20 years, he was still doing so.

Most journals are like online forums, you establish credibility by working and publishing, but the I don’t that JAMA gives any money to doctors for publishing research….it’s just a major honor to have the most respected publication in your profession print YOUR work.

One thing every company or contractor or client I’ve ever worked for either explicitly states- to NOT tell co-workers, supervisors, customers associates what you make. It’s a firable offense at many companies.

This was the first time I’d ever had the inkling that professors were being scammed. Whatever the power structure was…the associate professors are definitely not part of it.

Companies like Sun Microsystems (now Oracle), HP, Intel, Silicon Graphics, Applied Materials, Cisco Systems POURED money into computer science and computer engineering at Poly. Carl left sometime in 2001…the dotcom bubble blew up, but so did the WTC…so whatever $ Cal Poly lost out on from all the big companies that were laying off 1000s of tech workers, most pulled the plug on donations I’m sure, but the DoD, the CIA, DARPA, DIA, FBI and the newly-formed Dept. of Homeland Security MORE than picked up the slack to keep churning out 1st class engineers from 1st class Engineering Colleges….so Cal Poly didn’t lose a cent.

As for Carl…if he had any trouble finding a diff. job when he left…it’s almost guaranteed he was folded back into government software research or a contractor like TRW, KBR or Raytheon.

I’m sure he’s fine. Better off w/o Cal Poly….

*****COMING SOON****** ill mention the professor “acquired” as depy. chairman post 9/11. He worked for AT&T….sort of. During the cold war the DoD got a big security project approved…..In the event of pre-emptive nuclear strike….how would communication lines stay open? The project required that land-lines have multi-tiered failsafes…ever notice that your land-line works when the power goes out? No? cuz of your cell phone…well it does. It was a project that took 20 years. this particular maniac was the project manager. That means reworking the land-line system to withstand hydrogen-bombs landing across the continent would not effect your ability to call Washington from Sunnyvale….that was HIS RESPONSIBILITY. I’ll mention that and a few other changes made post 9/11 coming soon.

*It is still the gold standard for every program used today. Major OOD languages are listed in order:  Smalltalk and LISP, Eiffel, C++, Java, .NET, Python and C#. Java was the the most cutting-edge language, so Carl taught me to write both in C++ and Java. This theory of design is evidenced by the browser you are using to read this, the operating system your iPhone, tablet or console runs on (OS X, ios7, Windows 8, Android KitKat) all of these were designed using objects and implemented using one of these languages or non-object languages that have since been re-designed to BE object-oriented (COBOL, Pascal, VB, Ada and C)