Tuesday, May 10, 2011

Programmer Anonymous notes, 111

"Marry Skype's software with the Xbox Kinect and an HD television set, and Microsoft can make a powerful argument for getting into millions of living rooms." Tim Webber commenting on Microsoft's acquisition of Skype.


A lattice on a tesseract with a dimension of 4x4x4x4 has 256 points. If each point is associate with a data value (1 bit), 256 bits are accomodated. Tesseracts have 24 cubic faces, in this case with a dimension of 4x4x4. If a parity bit is assigned to every 4-tuple  in the tesseract (12 cubes of parity bits, one cube for each pair of faces), there will be 6*4^3 = 768 parity bits. So 1024 bits can encode 256 data bits with the ability to detect and correct many transmission errors. How many? This is not as efficient as some Hamming codes, but its structure is beautiful.

Saturday, May 7, 2011

Programmer Anonymous notes, 110

ilearnedtoprogram.com - Share the Story of Why and How You Learned to Program

...
"in college, when I realized I could have a big impact on the world by building software with a focus on humanity." - Vanessa Hurst
"because I believed (and still do) that it's one of the best skills to have in order to change people's lives for the better." Alyssa Daw
"when I wanted a piano and got an Atari -- programmed the keys to make sounds." Katie A. Siek
"because I wanted to make interactive electronic literature." - Zuzana Husarova
"because I wanted to build cool things. Now that's my job." - Alex Gaynor
...

Multiplayer High, by Douglas Thomas and John Seely Brown

Listen to anyone talk about schools today: classical education just can't keep up. In the digital generation's world of constant change, most schooling is profoundly boring. But what else is possible?

About this essay,  jdparadise comments:
So, in a word, give or take: Montessori.

Shannon's Law, by Cory Doctorow
A recent short story for anthology. Claude Elwood Shannon (April 30, 1916 – February 24, 2001) was an American mathematician, electronic engineer, and cryptographer known as "the father of information theory".[1]

The title is a reference to the Shannon–Hartley theorem:
...a bound on the maximum amount of error-free digital data (that is, information) that can be transmitted with a specified bandwidth in the presence of the noise interference ...
The story includes a short cryptogram, and a shorter cryptic numerical puzzle (not the same thing). I have reason to believe (aesthetic reason) both wouldn't be hard to crack.

Doctorow has also written about metacrap.


Alan Turing Statue Passes Dog's Turing Test:
Border collie is baffled by stubborn old man who refuses to play. Said old man is actually a statue of Alan Turing, which has seemingly passed the dog's own meager Turing test.



Robots learning to share


Robot Evolution: EPFL and the University of Lausanne team up to explore Hamilton's law of kin selection. Published in PLoS on May 3rd, 2011, biology and robotics come together to help understand how altruistic genes get passed on from one generation to the next. To learn more about the labs: http://lis.epfl.ch and http://www.unil.ch/dee/page6763.html

Once the team was comfortable with the virtual evolution environment it had set up, it added a new twist: It allowed the robots to share food disks with each other. If Hamilton's hypothesis was correct, "successful" virtual robots were likely to be those that were closely related and shared food with each other; that would help to ensure that at least one of them -- and some of the genes of both--would make it to the next round. (Two robots with a modest amount of food disks would both be more likely to be cut from the simulation, but if one robot gave all of its food to a second robot, that second robot would likely make the next round.) And indeed, altruism quickly evolved in the simulation, with greater food-sharing in groups where robots were more related, the researchers report online today in PLoS Biology. The more closely related the robots, the quicker they cooperated. "It shows how general the [theory] is, whether you are an insect, a human or a robot," says Floreano.

Sunday, April 10, 2011

Programmers Anonymous notes, 101

On the obliqueness of scientific inquiry:
"Science cannot solve the ultimate mystery of nature. And that is because, in the last analysis, we ourselves are part of nature and therefore part of the mystery that we are trying to solve" Max Planck



veggieman's no sdfjklsdiocjioji comics: 
besht shtory evar
this is the cool 
ohm ygo d
Griffin's c=c+1:
Math Limericks Revisited
     - Klein bottle
     - Seven Bridges of Königsberg



Join me April 9th at UCLA for Obscura Day! I'll be hosting an event with Brad Fidler and Leonard Kleinrock in the room where the first Internet message was sent in 1969!

Come be one of the very first to rediscover the room where the Internet was born. Almost forgotten in history and used for years as an unremarkable classroom at UCLA, it will reopen as a museum this July. Get there first and stand in the very spot that the first modem sent the first message ever, and see photos and documents from those first days of the Internet that have been lost to obscurity for decades.



The course should be of interest to anyone seeking to develop robust robot software, and anyone who is interested in real-world applications of statistical theory. Students participating in this course will acquire the skill of developing robust software for robots operating in real-world environments, and understanding the mathematical underpinnings of their software. Even though this course focuses on mobile robotics, the techniques covered in this course apply to a much brooder range of embedded computer systems, equipped with sensor and actuators.
Jacob is irked by the poor website design, in particular the dynamic menu that must be chased like one is playing whack-a-mole. This is only a problem if the font size is increased from the default size, which old people like me tend to do. I would suggest he contact the professor directly, and politely, but his FAQ notes that:
I sent you information by Email - Didn't you read my mail? This has become a problem. At present, I receive between 150 and 400 personal Email messages per day. Even if I quit my job and stop sleeping, I wouldn't be able to answer all of them. I am willing to spend up to two hours a day on Email. This means that I am not even able to read the majority of my Email. I realize yours might be one of those that I am unable to read, and I hope you accept my sincere apologies. On the flip side, if I only did Email all day and nothing else, would you really want to talk to me?
He was probably using some Stanford boilerplate course page material. A more recent Thrun course page, CS221 Introduction to Artificial Intelligence, appears to have the same deficiency.

Thrun is the director of the Stanford Artificial Intelligence Laboratory (SAIL). He led the development of the robotic vehicle Stanley which won the 2005 DARPA Grand Challenge, and which is exhibited in the Smithsonian Institution's National Museum of American History.  Stanley is relatively low budget autonomous vehicle created by Stanford University's Stanford Racing Team in cooperation with the Volkswagen Electronics Research Laboratory (ERL). The DARPA  win came with 2 million dollar prize, the largest prize money in robotic history.

The PBS' NOVA show on the DARPA Grand Challenge is spine-tinglingly geeky and entertaining. The meek (drive-by-wire VW Passat vs. tricked out Hummer) shall inherit the earth.

Sunday, March 20, 2011

Progammers Anonymous notes, 100

From Register Guard, "Physics Slam gives public inside look at science":
The country’s first-ever Physics Slam will be held at 7 p.m. Tuesday in Room 150 of Columbia Hall on the University of Oregon campus.

It is free and open to the public.

Six physicists from throughout the country will compete in the event. Each will get 12 minutes to describe a topic in particle physics in a way that the audience can understand.
...
The Physics Slam winner will be chosen by popular acclaim, as determined by applause.
And because these are scientists, they’re not taking anyone’s word for who gets the most.
The judge will be a scientific instrument, a decibel meter, that will determine whose presentation is the biggest hit.

The event is being held in conjunction with the 2011 Linear Collider Workshop of the Americas, which is being hosted by UO physics professor Jim Brau and the UO’s Center for High Energy Physics. It will bring more than 200 scientists to Eugene to discuss the design and experiments for a future linear particle collider.
[Post mortem: Huge crowd, overflow room was overflowing. More than the usual problems plugging in video. I found the talks much less than inspiring. Pie charts? Stock stereotypes of scientists? Sexist metaphors along side old and tired metaphors? Really? There's some great stuff in modern physics, but I didn't see anyone show it off.]


We talked a bit about Fermat's principle and quantum electrodynamics (QED) related to the Many Worlds interpretation of quantum mechanics. Sec Narf mentioned a story in which dreams changed reality, "The Lathe of Heaven" (1971), by Ursula Le Guin. Le Guin, one of the most influential science fiction and fantasy authors, has lived in Portland OR since 1958, and The Lathe of Heaven takes place in Portland:
George Orr, a draftsman, has long been abusing drugs to prevent himself from having "effective" dreams, which retroactively change reality. After having one of these dreams, the new reality is the only reality for everyone else, but George retains memory of the previous reality. Under threat of being placed in an asylum, Orr is forced to undergo "voluntary" psychiatric care for his drug abuse.
George begins attending therapy sessions with an ambitious psychiatrist and sleep researcher named William Haber. Orr claims that he has the power to dream "effectively" and Haber, gradually coming to believe it, seeks to use George's power to change the world. His experiments with a biofeedback/EEG machine, nicknamed the Augmentor, enhance Orr's abilities and produce a series of increasingly intolerable alternate worlds, based on an assortment of utopian (and dystopian) premises familiar from other science fiction works.

The notion of using EEG for biofeedback (neurofeedback), and even for direct control of physical objects (brain-computer interface), has recently seen a resurgence of interest.




Noam Chomsky will speak at the University of Oregon:
“Global Hegemony: The Facts, The Images.”, Wednesday, April 20, 7 p.m. in Columbia 150, free and open to the public.
Chomsky is an interesting speaker on a wide range of topics, from philosophy to the nitty-gritty of foreign policy. While recently his focus is usually on politics from a libertarian socialist viewpoint, his linguistic work has had a direct effect on psychology, computing, computer languages, and the notion of computability.
In the 1950s, Chomsky began developing his theory of generative grammar, which has undergone numerous revisions and has had a profound influence on linguistics. His approach to the study of language emphasizes "an innate set of linguistic principles shared by all humans" known as universal grammar, "the initial state of the language learner," and discovering an "account for linguistic variation via the most general possible mechanisms."[9]
For Chomsky, linguistics is a branch of cognitive psychology; and genuine insights in linguistics imply concomitant understandings of aspects of mental processing and human nature. His theory of a universal grammar was seen by many as a direct challenge to the established behaviorist theories of the time and had major consequences for understanding how children learn language and what, exactly, the ability to use language is.
Computer languages are now understood as parts of the Chomsky hierarchy, which partitions formal grammars into classes, or groups, with increasing expressive power, i.e., each successive class can generate a broader set of formal languages than the one before.
Computer scientist Donald Knuth admits to reading Syntactic Structures during his honeymoon and being greatly influenced by it. "…I must admit to taking a copy of Noam Chomsky's Syntactic Structures along with me on my honeymoon in 1961 … Here was a marvelous thing: a mathematical theory of language in which I could use a computer programmer's intuition!".

Jacob's no sdfjklsdiocjiojc "these was them days" (comic).


"If I were again beginning my studies, I would follow the advice of Plato and start with mathematics." Galileo Galilei

Abstruse Goose, "The Frontier" (comic). Every one of Abstruse Goose is worth a read.

Friday, March 11, 2011

Large earthquakes happen in the Pacific Northwest

They aren't frequent, only about once every 300-900 years, but it's been a while since the last megathrust earthquake. Smaller earthquakes near population centers also can cause devastation. It takes decades of attention, building, planning and practice to mitigate risks for large unusual events.

Pacific Northwest Faces Nearly Identical Risks to Japanese Quake

"This is an earthquake of the same type, with about the same magnitude and proximity that we face here in the Pacific Northwest from the Cascadia Subduction Zone. What you are seeing in Japan today is what you will also see in our future. Except they are better prepared than we are." Robert Yeats, Oregon State University

Programmers Anonymous notes, 11

The future, for a little while anyway is a list of state of the art computer graphics animations from 1988 through the present. Every one pushed the boundaries of what could be done at the time. Game developer Crashproof posted a thoughtful comment on Boing Boing speculating about the future of  computer graphics (emphasis mine):

1. Mobile devices will catch up to a large extent with consoles and gaming PCs -- though speed is limited by wattage, heat, and the need to keep parts tiny and cheap.
2. Technology revolutions in graphics will focus more on content creation than on pure rendering power. It's the art rather than the tech that really makes a game look good now, and that will become increasingly more true -- but authoring is expensive, slow, and a giant pain in the ass. Some clever folks will solve these problems and make boatloads of money.
3. Hardware companies are going to keep trying to push the envelope but the hardware will become more commodity-like anyway. If a $800 video card that requires its own power supply performs 8% better than a $50 video card and has a couple of features that no games will ever actually use... yeah.
4. The current 3D/stereoscopy fad will mostly fizzle out again. Occasional movies and games will use it to good effect, and others will use it as a stupid gimmick, pretty much like always. The Nintendo 3DS isn't going to change the world any more than the Virtual Boy did.
X. Minecraft and the Bit.Trip games and many others show that graphics fidelity/quality/complexity/etc. are not synonymous with game quality or even how *good* the game can look. (Arguably, WoW has always been the same, with an intentionally chosen lo-fi cartoony art style that eases the burden on their graphics engine.) Technology takes the back seat.

Fantastic Dover Computability Book Cover, "Computability and Unsolvability" by Martin Davis. From the big box computing days "when two columns of data could crush a programmer’s head."


The most widely-studied models of computability are the Turing-computable and μ-recursive functions, and the lambda calculus, all which have computationally equivalent power. Other forms of computability are studied as well: computability notions weaker than Turing machines are studied in automata theory, while computability notions stronger than Turing machines are studied in the field of hypercomputation.


WebGL is a Web-based Graphics Library that uses the same ideas as OpenGL, and is maintained by the same company (the non-profit Khronos Group). It extends the capability of the JavaScript programming language to allow it to generate interactive 3D graphics within any compatible web browser.
WebGL is a context of the canvas HTML element that provides a 3D computer graphics API without the use of plug-ins. Google Body is a good example of using WebGL, a website which allows user to navigate through 3D anatomical model of human body.

We talked a while back about the surprising complexity of rock-paper-scissor strategy. Here's a web interface to an intelligent machine player. Don't be discouraged if you don't do well, as the machine has more experience (and uses accurate statistics).

For those with a geometric bent, magnetic ball porn.



Sec Narf sent me several pages of interest:

A link on this Interactive Mathematics page points to a small set of Math in computer games descriptions. Most are examples we've used or touched on, and not difficult. They use standard geometric diagrams, so there are not good hints on what the math looks like translated into code.

The mathematics of rotation is something we've used, but only implemented as code in 2-D. Generally rotation functions are already available, and are called as functions. But the math techniques are worth knowing, and most everyone gets a taste for the 2-D versions in trigonometry. The 3-D versions are very important, used in every physical science. Rotations / translations are represented by matrices, and matrix operations are used to implement rotations / translations  (special cases of linear transforms). This is a large part of the field of linear algebra. We've already done a lot of linear algebra, just not in the formal way it is taught and not using the formal notation and syntax of written math.

The Pac-Man Dossier, by Jamey Pittman, is a small on-line book with more than I thought was known about the history, complex behavior, quirks, and general knowledge of Pac-Man. More here than I thought was known about the game, including more mysteries.

What design and AI lessons can we learn from Namco's seminal Pac-Man? From history through behavior, Gamasutra presents a comprehensive Jamey Pittman-authored guide to the classic game.


Someone made a Minecraft server largely dedicated to classic game characters -- monolithic memorials to 8-bit animatrons. The link minecraft-pixel-art-sculptures is currently broken, but maybe it will get fixed.

Saturday, February 26, 2011

Programmers Anonymous notes, 10

  

Unevenly Distributed: How I Learned To Stop Worrying And Love The @, history and reflection on 8-bit rogue-like games. Also see Sword of Fargoal -- addictive dungeon crawler for iOS.


NOMEN LUDI


Jacob is self-assigned to fixing the syntax in the Wikipedia automata theory page. His internal compiler naturally picks out the non-standard elements in standards based encyclopediae:
In theoretical computer science, automata theory is the study of abstract machines (or more appropriately, abstract 'mathematical' machines or systems) and the computational problems that can be solved using these machines. These abstract machines are called automata.
I am pleased as punch that I was able explain the relevance of finite state machines to programming. I drew one on the board, and Secnarf ran the machine (on her brain) on a word (program), producing the appropriate compiler error (rejection of the input word, and localizing the pointer to the appropriate memory location). Funny how computer programming is approached first using very difficult problems, making complex programs, to very simple problems, short finite state machines. It is not an easy path to understanding.


In C and C++, the tilde grapheme, "~", is the bitwise NOT operator.


We tinkered with the pegboard virtual game GLIQ (gliq.zip, see two posts ago) and started making modifications to construct virtual dice that somehow include dinosaur sound effects.

We talked about rolling virtual dice and wrap-around in both dimensions, 3-D dice on a 4-D toroidal manifold, represented on a 2-D finite window! I'm inclined to name our program Misner Dice, after Griffin's c = c + 1 comic, Misner a reference to Misner space.

We also talked about 32 and 128 bit IP addresses, with respect to xkcd: Nanobots. I think Griffin's comic wins the nerdy obscure humor cake.

Sunday, February 20, 2011

Programmers Anonymous notes, 1

Marvin Minsky was an adviser[7] on the movie 2001: A Space Odyssey and is referred to in the movie and book.
"Probably no one would ever know this; it did not matter. In the 1980s, Minsky and Good had shown how neural networks could be generated automatically—self replicated—in accordance with any arbitrary learning program. Artificial brains could be grown by a process strikingly analogous to the development of a human brain. In any given case, the precise details would never be known, and even if they were, they would be millions of times too complex for human understanding." Arthur C. Clarke

Moravec's paradox is the discovery by artificial intelligence and robotics researchers that, contrary to traditional assumptions, high-level reasoning requires very little computation, but low-level sensorimotor skills require enormous computational resources.
"In general, we're least aware of what our minds do best.Marvin Minsky
"The main lesson of thirty-five years of AI research is that the hard problems are easy and the easy problems are hard. The mental abilities of a four-year-old that we take for granted – recognizing a face, lifting a pencil, walking across a room, answering a question – in fact solve some of the hardest engineering problems ever conceived.... As the new generation of intelligent devices appears, it will be the stock analysts and petrochemical engineers and parole board members who are in danger of being replaced by machines. The gardeners, receptionists, and cooks are secure in their jobs for decades to come."[2] Steven Pinker

Trailer for "Rosies: The Human Computers of World War II"
Some of the women chosen to be human computers went on to become the first programmers of the machine-computer ENIAC.
The ENIAC Programmers worked tirelessly to make programming easier for all. They created the first sort routine, software application and instruction set, and classes in programming. Their work dramatically altered computing in the 1940s and 1950s. They paved the path to the modern software industry.


Processing (computer language) commands, borrowed from OpenGL's glPushMatrix() and glPopMatrix(), make my friend Libbey happy.


Few have made a name for themselves in games research, and Jane McGonigal is one of them. She is in demand as a speaker partly because of her enthusiasm for the potential of games, so I find it extraordinary that her recent book, "Reality is Broken", could draw this kind of bitter critisism:
Julian Hall wrote that he was "awed by the idealism while also believing that Reality is Broken could be an hour-long comedy show at the Edinburgh Fringe Festival."[5] Meanwhile, journalist Edward Champion called Reality is Broken "the most irresponsible nonfiction book I am likely to read this year," finding fault with McGonigal's overly optimistic viewpoint, her misunderstanding of psychology and science, and "a soul-sucking need for constant self-affirmation."[6]


Griffin's c = c + 1 comic, Misner. Obtuse, in a funny way, as usual. Charles Misner is a physicist, and his name is indelibly associated with the canonical book about general relativity, "Gravity", usually referred to as "Misner, Thorne and Wheeler", or just MTW. But Griffin's title refers to Misner space:
Misner space is an abstract mathematical spacetime, discovered by Charles Misner of the University of Maryland. It is also known as the Lorentzian orbifold \mathbb{R}^{1,1}/boost.
An intuitive analogy may be drawn with a video game screen, where a screen element exits the frame through the right side, only to re-enter the frame right away through the left side.
Moving the spatial limits (e.g.: the walls of a room) enclosing an existing Misner space in the physical world, could theoretically lead to time travel.

Griffin thinks that reality is continuous, best described by real values, not rational values. But perhaps Pacman is a good metaphor. People like George Lakoff  think that metaphor is the best (only?) description of conciousness. I personally loathe Lakoff's application of these ideas to the realm of politics. Others think that only through embodiment can machines become intelligent. Too bad Watson couldn't shake hands, nor even read, with its own eyes, the Jeapordy! clues.


The most recent XKCD
I made it a rule that as soon as I finished any task, or got bored with it, I had to power off my computer.
I could turn it back on right away--this wasn't about trying to use the computer less. The rule was just that the moment I finished (or lost interest in) the thing I was doing, and felt like checking Google News et. al., before I had time to think too much, I'd start the shutdown process. There was no struggle of willpower; I knew that after I hit the button, I could decide to do anything I wanted. But if I decided to look at a website, I'd have to wait through the startup, and once I was done, I'd have to turn it off again before doing anything else. (This works best if your ongoing activities are persistent online--for example, all my IRC chat is through irssi running in screen, so turning off my laptop doesn't make me sign out.)
A Boing Boing comment points out LeechBlock software for Firefox that gives better control over how to control browser clicktrance.
LeechBlock is a simple productivity tool: an extension for the Firefox web browser designed to block those time-wasting sites that can suck the life out of your working day.

Arts, Fear and Gaming

Fear and Gaming: Being and Nothingness and “Minecraft”

Jonathan Gourlay explores Minecraft, an ugly game with no point and endless possibility.

Friday, February 11, 2011

Programmers Anonymous notes, 0

 Sec Narf requested a start of a project:
Can we mess around with putting 'windows'(like buttons, text fields, or forms of output) in a window? We could do something like write a random number generator where you press a button, a dice rolling sound plays, and your result is displayed in the window. After that we could make maybe it more complicated...
How does one play sounds in our current C environment? I found a nice example code/program, gliq.zip, that implements a button (as a mesh icon with OpenGL) and plays a sound, a .wav file. It is only useful on a Windows (Win32 only?) platform, as it uses the Beep() or PlaySound() function that is found in the Windows API (declared in window.h):

        Beep(1000, 40);
        PlaySound("MySound.wav", NULL, SND_FILENAME);

On other hardware platforms, there are probably corresponding functions. This example program, with a screenshot, is from this set of OpenGL programs and code.



Jacob's comic blog, 256. Minimalist existentialism.


Sec Narf's Tumblr blog, DuctTapeCreations. It is not important to know how to factor polynomials, though it might improve your algebra grade. It is very important to know that polynomials can sometimes be factored.

From Irreduceable polynomials (Wikipedia):
It is helpful to compare irreducible polynomials to prime numbers: prime numbers (together with the corresponding negative numbers of equal modulus) are the irreducible integers. They exhibit many of the general properties of the concept of 'irreducibility' that equally apply to irreducible polynomials, such as the essentially unique factorization into prime or irreducible factors.

Griffin's newest c = c + 1 comic, "Star System". I like its meta-legend. I wish there was a facility for hyperlinking items in strips.

The Wormworld Saga, Daniele Lieske. Don't miss the descriptions of how he does his visual art and stories in his blog archives.


Critical gaming blog
    Emergence you can see
We have come to a point where how we talk about video games is insufficient in expressing how we feel and think about them. With each year comes increasingly complex games, yet we are still, for the most part, writing and talking about games on a shallow consumer level.

It is time to start thinking and writing critically about games. However, before we can do this, we must approach gaming from a critical mode or mindset. To do this, we must first understand of how the different parts of a game work together (game design). Unfortunately, many of the people who have experience in this area spend their time making video games. Beyond this, the body of knowledge that does exist is scattered at best. For this reason, it is hard for a thorough understanding of game design and critique to become widespread.

From Digital physics (Wikipedia):
"It always bothers me that, according to the laws as we understand them today, it takes a computing machine an infinite number of logical operations to figure out what goes on in no matter how tiny a region of space, and no matter how tiny a region of time. How can all that be going on in that tiny space? Why should it take an infinite amount of logic to figure out what one tiny piece of space/time is going to do?"
...
So I have often made the hypothesis that ultimately physics will not require a mathematical statement, that in the end the machinery will be revealed, and the laws will turn out to be simple, like the checker board with all its apparent complexities. But this speculation is of the same nature as those other people make—'I like it,' 'I don't like it'—and it is not good to be prejudiced about these things"   Richard Feynman


We're currently working with OpenGL libraries, and the dinoshade.c code is a very good OpenGL example:
Example for PC game developers to show how to combine texturing, reflections, and projected shadows all in real-time with OpenGL. Robust reflections use stenciling. Robust projected shadows use both stenciling and polygon offset.

GLfloat is defined in gl.h with the statement:
typedef float           GLfloat;        /* single precision float */
So it is just another name for float type, which is itself represented by 32-bits on a 32-bit operating system.

Declaration and explicit assignment of an array in C/C++, with 2 dimensions holding a list of coordinate pairs, where each coordinate is of type GLfloat:
GLfloat body[][2] = { {a,b}, {c,d} ... }
In C this array "body" is not of type GLfloat, but is a pointer to the memory location of the first element of the array.

Implicitly an array is passed by reference (as a pointer), not by value (as all the array elements). Only the pointer is needed, not a copy of every element of the array. But most functions will need to know the size of the array, so a second argument is needed because the array size is "out of scope" within the function:
extrudeSolidFromPolygon( body, sizeof(body), bodyWidth, ...);

  We can use pointer arithmetic to trim the first 2 coordinate pairs, if we know the size of each element of the array:
// a pointer to the 5th element of the array  
body + 4   

// size (in memory) of the  array without the
// first 4 elements, or 2 coordinate pairs
sizeof(body)-4*sizeof(GLfloat)

// as arguments in a function call
extrudeSolidFromPolygon( body + 4, sizeof(body)-4*sizeof(GLfloat), ... );
This references the array elements starting with the fifth, through the end of the array. The syntax looks strange (and it is not obvious) if you are not used to thinking about array names as a pointer to memory.