Showing posts with label March of Man. Show all posts
Showing posts with label March of Man. Show all posts

26 July 2010

3D Visualization of the Fossil Distribution of the Human-Chimpanzee Total Clade

What it says.
Click on the image to open the visualization.
I've been compiling data on "pan-mangani" fossils. This is my first March of Man toolshop post in a while: a 3D visualization of that data, where the horizontal axis is longitude, the vertical axis is latitude, and depth (the z-axis) is age. The "blobs" each represent a fossilized individual, and you can mouse over them to see what their taxon is.

Some data is missing, notably a lot of entries for our own species. Other data needs to be refined—some of the better-known species (ahem, Neandertals) are big clouds that need to be tied down to specific sites. Also, I obviously need to do more work on that present-day distribution map. But it's a decent start.


Fun things to do:

  • See if you can find the oldest individual (the lone specimen of Sahelanthropus tchadensis).
  • Try to find its Chadian compatriots.
  • Find the earliest non-African individuals (hint: East Europe and the Malayan Archipelago).
  • Wonder what the heck that thing in India is.
  • Look for the single cluster of extinct chimpanzees (Pan sp.).
  • Find the three subspecies of Homo sapiens other than our own. (Note: these may not be distinct from each other—I just prefer to err on the side of splitting for projects like these. Easier to revise later.)
  • Marvel at how easy it is to become sympathetic to multiregionalism when you just view the distribution data without any morphological context and ignore the fact that not all regions are good for preservation.
  • Wonder how people can possibly believe in baraminology in the face of such ample evidence. (Adding morphological data to this would help a lot—there really aren't any good "cutoff" points for our lineage.)
UPDATE:

Better version here.

01 December 2009

3D March of Man

A while back I started the March of Man project. The goal is to create a massive illustration of human evolution using hundreds of figures. My first attempt involved drawing them by hand on a big piece of paper. I think that lasted about a week.

My second attempt involved a rich web application, where people could submit image files according to certain specifications, and these would be incorporated into a big collage. This got a bit further, but went stagnant for a few reasons: 1) the application is a bit buggy and unwieldy (it was my first big Flex project), 2) drawing each figure still takes a while, and 3) I overestimated the amount of public interest there would be in contributing to this project. (Thanks to Steve O'Connor, though, for being the only other contributor!)

It's been a couple of years since I launched that site, and now I've started on a new method. Will it go anywhere? We'll see. It does solve some problems of the previous approaches.

This time, I'm doing it in 3D. The plan: 1) create a poseable model of an Ardipithecus ramidus female; 2) create morph targets for various other species, ages, and for males; 3) use this to create images for significant localities; 4) combine these into one vast mural.

So far I'm almost done with step #1. Here she is:

Ardi


(Also posted on my sketch blog, Dragabok.)

Still have to tweak the hair a bit and make her poseable. After that, I've got my work cut out for me....

05 May 2009

'Nother Toolshop Animatic: The Head Map

I created a sort of "mashup" of the previous two and added a temporary music track. (The ultimate version will have something different.) Click on the thumbnail (might take a moment to load):


Still clunky, but I'm just fleshing out the ideas at this point. Enjoy!

04 May 2009

March of Man: The Toolshop

My somewhat ambitious web app, March of Man, has not been proving too successful. The idea behind the project is to illustrate human and chimpanzee evolution using hundreds of figures. The web app includes tools for submitting images and generating collages. But there are only a couple dozen images right now. At this rate, the project will be completed by the time I am an old man. Time for a new approach!

I'm going to leave the site up as is, but I am also going to be working on a CG animation. I've made a new area of the website called "The Toolshop" where I'll be posting progress. Here are the first two mockups, using vector animation (click on the image to see the animation):

Human/chimpanzee evolution depicted as streams of bubbling heads.


The ranges of various taxa over time.

Enjoy!

03 June 2008

The Dinosauricon Is Dead.

Long live The Dinosauricon.

As some of you may know, I used to run a website devoted to dinosaur information and illustration called The Dinosauricon. In recent years, it went fallow—I had no time to keep it updated, let alone finish building it. The old version stayed online—a living fossil of sorts.

Recently, someone emailed me asking where it was. I looked, and, indeed, it seems the host service (which was hosting it for free) finally pulled the plug. And, honestly, it was overdue—like putting down an old, sick pet.




The Dinosauricon was my biggest labor of love, and something I was very proud of (if never completely satisfied with). It opened a lot of doors for me. I sold illustrations to publishers who had seen the site. It was an excellent showcase for my technical skills when seeking work as a web developer. It got mentioned in books. It got me my first coauthorship on a scientific paper. It helped get me a job as a paleo-technician for the Wyoming Dinosaur Center. And it helped make me a lot of friends at SVP meetings.

It was also a great project for learning web development. Through it I learned HTML, XML, CSS, JavaScript, PHP, MySQL, XSL, XSLT, XPath, and more. (Not to mentioning sharpening my C++ skills—yes, I actually used C++ for one version of it.) I owe a lot of my professional expertise to that site.

Besides just helping myself, though, it was primarily meant to help others. I think it did a very good job, not just of getting scientific information out to the public, but also of promoting illustrators, especially up-and-coming ones. I used to really enjoy viewing all the submissions, providing feedback for the pieces that needed some work and marveling at the ones that didn't.




The Dinosauricon was not always called "The Dinosauricon". Back in 1995, during my first semester in college, it was a bunch of crummy HTML 1.0 pages loosely thrown together as my first website and called, rather unimaginatively, "The Dinosaur Web Pages". Around this time I started subscribing to the Dinosaur Mailing List (which I'm still on), and started hearing about newfangled (to me) concepts like "cladistics" and "phylogenetic taxonomy". (I wasn't a big fan at first, but we've seen how that turned out.) On the original site, I tried to do a blend of Linnaean and phylogenetic taxonomy. (I also illegally used some Greg Paul artwork, but took it down once I realized you couldn't just put anything in your web page.)

In 1996, I took the first-ever class of Tom Holtz' HONR 259C: Topics in Dinosaur Research. Using information I learned in that (excellent) class, I began to patch up the silly taxonomy I'd used at first, replacing it with proper cladograms. (Sometimes I get credit for inventing a style of writing cladograms in ASCII, but, as with many inventions, this was really invented piecemeal by a lot of people and I just pitched in and helped promote it.)

I also started to get interest from young paleo-artists. Rachel K. Clark and Peter Buchholz were the first to offer their work for my site. (I already had some of my own work up.) I gladly accepted, and eventually went on to build up a gallery with thousands of images, by dozens of artists from all over the globe.

Eventually the site needed a new name. After much thought, I decided on The Dinosauricon, an homage to Lovecraft's Necronomicon, and roughly Greek for "image of the terribly great lizard". Many people pronounced it wrong (like "dinosaur icon") or thought it looked like the name of a convention, but I think it was a pretty good name.

The site reached its pinnacle, in my opinion, at the end of 1999. I had procured an independent study program specifically for the project, and I poured tons of time into it. I worked obsessively, feverishly, often tallying dinosaur names into wee hours. (I didn't have much of a life.)

In December 1999 I graduated and in January 2000 I moved to Los Angeles. A new chapter of my life began with the new millennium. (Yes, O.K., technically it started in January 2001, but shut up.)

This was a busier chapter. I began, slowly, to actually acquire a life. I had less and less time for the Dinosauricon. In 2002, during a rough period, I poured a lot of work into a new version, but I never had time to get more than partly done. The new and old versions coexisted for a while, with a better gallery on the new version but more scientific information on the old.

As the years went by, web technologies began to develop at an ever-increasing rate. I always felt the site was hopelessly behind the times. There was a vision in my head of how it could be. But I only had so much time to work on it. Every time I got some time, I'd revisit the old work I'd done, shake my head at how outdated it was, and start over from scratch. Not surprisingly, this led to getting a lot of nothing done fast. (Except for learning new technologies, which was useful.)

For years I kept saying I'd have another version done, but it never came to pass. The old version, which had been hosted at a little donated computer at my college, finally went down. The new version persisted for a while. Now it is dead.




There may be hope for the future. My two big personal projects right now are related to paleontological illustration (March of Man) and biological information (Names on Nodes). Much of the ideas and code going into these could be ported to a new Dinosauricon. I have to see these two ideas through, but once they are in a stable place, perhaps I'll look into the matter of reviving The Dinosauricon.

No promises.

14 January 2008

March of Man: Information Upgrade

The information in the "Field Guide" at March of Man is fairly vague, unsubstantiated, and really just a first pass. I started to collect more complete, referenced entries in a Google Docs document:

March of Man Taxa

This is publicly viewable. If anyone wishes to help out with this (and receive credit on the March of Man website, of course), leave a comment and I'll share the document with you.

Here's a sample of one of the more complete entries so far:

Orrorin tugenensis

Time Range: 6.1 to 5.8 Mya

Author: Senut et al. 2001

Definition: The species typified by BAR 1000'00.

Synonyms: Praeanthropus tugenensis Cela-Conde and Ayala 2003

Hypodigm: at least 5 individuals -- BAR 1000a'00 (fragment of left mandible with molars 2 and 3; holotype); BAR 1000b'00 (fragment of right mandible with molar 3; holotype); BAR 349'00 (manual phalanx; paratype);
BAR 1001'00 (upper central incisor; paratype); BAR 1002'00 (left femur; paratype); BAR 1003'00 (proximal left femur; paratype); BAR 1004'00 (right humeral shaft; paratype); BAR 1215'00 (proximal right femur; paratype); BAR 1390'00 (lower 4th premolar; paratype); BAR 1425'00 (upper right canine; paratype); BAR 1426'00 (upper left 3rd molar; paratype); BAR 1900'00 (upper right 3rd molar; paratype); KNM LU 335 (lower molar; paratype)

Systematics: Originally proposed as the earliest species closer to Homo than to Australopithecus (Senut et al. 2001). However, this poses temporal difficulties, since it dates from a time when, according to genetic evidence, the human and chimpanzee lineages had only just begun to diverge, or perhaps had not diverged at all (Patterson et al. 2006). Instead it may be a very early species in the human lineage (Cela-Conde et al. 2003) or, given the timing, something close to the human-chimpanzee concestor. See: Hominini (concestor), stem-Hominini

Cranial Capacity: unknown, but probably about 350 cc

Description: Probably somewhat chimp- or bonobo-like, but with a more habitually upright posture.

Adult Female Height: 0.7 to 1m

Adult Male Height: 0.9 to 1.2m

References:
  • Cela-Conde, C. J. and F. J. Ayala (2003). Genera of the human lineage. Proceedings of the National Academy of Sciences 100(13):7684-7689. doi:10.1073/pnas.0832372100
  • Patterson, N., D. J. Richter, S. Gnerre, E. S. Lander and D. Reich (2006 June 29). Genetic evidence for complex speciation of humans and chimpanzees. Nature 441:1103-1108. doi:10.1038/nature04789
  • Senut, B., M. Pickford, D. Gommery, P. Mein, K. Cheboi and Y. Coppens (2001). First hominid from the Miocene (Lukeino Formation, Kenya). Comptes Rendus de l'Académie de Sciences 332:137-144.

04 January 2008

Resolutions for 2008

I'm not going to bother you with personal resolutions (lose weight, save money, blah blah blah), but rather creative resolutions.

2007 was kind of a watershed year for me in many ways.
My girlfriend, Susan, also had a very productive year, since she started USC film school a year ago.

Of course, it wasn't entirely positive. I dropped the ball on Parry & Carney, and the Dinosauricon continues to languish. (Some day I plan to re-use code from March of Man and Names on NEXUS for a new version, but that day is still far off.)

Well, with 2007 in mind, here's what I'd like to get done in 2008:
  • Launch Names on NEXUS and give a talk on it at this year's ISPN meeting in Halifax, Nova Scotia (and also try for an SVP talk or poster). Perhaps start working on a related paper, if applicable.
  • Continue developing March of Man and add several dozen images to it. Continue promoting it and get at least another dozen artists to contribute. Perhaps do a poster or something at SVP.
  • Fix a few remaining issues with the PhyloCode website.
  • Help Susan on her filmic endeavors, and continue to develop a sci-fi concept we started.
  • Continue translating Genesis.
  • Release some ActionScript 3.0 source code into the public domain.

01 January 2008

March of Man: Collage Backgrounds

Merry 2008, everyone!

In an attempt to beautify the collages on March of Man, I've added a more naturalistic background than the old grey tiles. Check it out.

I also added a few more figures. I sketched a bunch over my vacation, inspired by the chimpanzees at the Chicago Zoo (who, incidentally, love snow—or love eating it, anyway). Despite this, though, over half of the taxa are still not illustrated. Now would be a great time for other people to start making contributions. (Thanks again to Stephen O'Connor for his Homo erectus!)

Here are some sample collages—as always, figures are in chronological order from left to right:


Vertical distribution of figures based on phylogeny.


Vertical distribution of figures based on geography (Cape of Good Hope at top, Tierra del Fuego at bottom).


Vertical distribution of figures based on a combination of phylogeny and geography.


This won't be the final word on the background, but I think it's a bit of a step up (even if it does look a bit like barf). Unfortunately, it also drastically increases the size of the application. I need to do some file restructuring at some point. I've been neglecting my other projects, though, so I may have to push this off for a bit.





Update: Here is a much larger version (with phylogeny-based vertical arrangement).

16 December 2007

March of Man: Image Feed

There is now an RSS feed that will show all the latest updates to the March of Man gallery. Point your blog-reading software to:

http://marchofman.org:8080/marchofman/imagefeed/


This was surprisingly easy to develop, thanks to the ROME library for Java. (I had a few problems deploying it, but that was my fault.)

26 November 2007

March of Man Skewed

Posted a very minor March of Man update last night. Now the collages can be horizontally skewed. Examples (click to enlarge):

(Vertical distribution primarily based on phylogeny.)


(Vertical distribution based on geography.)

(You'll note I also finished some more Homo sapiens sapiens depictions.)

23 November 2007

New: March of Man Collages

I've just uploaded a new version of March of Man. The primary new feature is a tab called "Collage", which contains a first attempt at the doing what the project is all about: creating an image that uses multiple figures to show to story of hominin phylogeny and geographic dispersal.

An auto-generated March of Man collage.

Okay, so there's still a lot to be done. There are only 13 images in the database so far (all mine, although some are heavily based on others' photos), so there are plenty of gaps to fill in.

Collage features planned for the future:
  • Better backgrounds.
  • Different algorithms for generating the collages. (This will only become important once the database has many, many more images.)
  • The ability to move, rotate, and scale images in the collage.
  • The ability to add filters to images (adjusting the color, contrast, etc.).
  • The ability to save collages.
(I'd also like to figure out a way to have it spit out PSD files, but since that's not an open format....)

As I further refine this tool, and as the database of images continues to grow, the collages will become more and more like I first envisioned. (Or maybe some other ideas will become apparent later on ... this isn't a rigorously planned-out project.)

Some other things I intend to add to the site:
  • The ability to attribute more than one artist per image.
  • "Starter" PSD files that can be downloaded, including tiled isometric backgrounds and scale indications.
  • A scale widget that's easier to use.
  • Illustrated instructions for exporting the right kind of file.
  • An administration tool, so I can update data on the various taxa more readily.
  • More illustrations (and better ones) for the "About" and "F.A.Q." sections.
  • Thumbnail images for browsing.
That should keep me plenty busy for a while. Anyone have any other ideas?

Qayin wa-Habel
(Cain and Abel)
Ardipithecus ramidus juveniles

07 November 2007

Minor "March of Man" Update

I've just launched the update mentioned in my last post. The only major change (apart from all those behind-the-scenes refactorings) is a new Image Gallery section, where one can peruse all submitted images, from most to least recent. (Somewhat less interestingly, I also added a process for resetting your password should you forget it.)

Threatening Paranthropus robustus.

Check out The March of Man.


06 November 2007

The Wonderful Process of Refactoring

In many ways, programming is as much an art as a science. Good code is like good writing: crisp, clear, streamlined, and well-structured. But it's not always possible to foresee the best structure. When working on a project, you just do what seems best at the time. Eventually you'll finish it and work out the bugs, but the underlying code may not be elegant. There may be duplicated code, unclear functionality, unoptimized sections, and sections that do too much with sections that do too little. When you come back to the code to add or refine features, you often face a major headache.

This is why many developers use a general process called refactoring. Refactoring means that you change the design of the code without changing the functionality. An analogy would be rewriting a news article so that it reads better without changing what the article is actually about.

Ensuring that the functionality remains the same is not always easy. It involves frequent testing and retesting. Changing one section might affect another section, so the retesting has to be thorough. Testing a particular section during development is called unit testing.

Sometimes it's worth the extra time to create a program that actually does the testing for you. During heavy refactoring, this can save oodles of time. If you make changes, then you can just run a test that takes a few seconds, quickly showing whether you broke anything (and generally showing exactly what you broke).

I went through this process recently while working on March of Man.

The Setup

Typically a rich Internet application (RIA) has three tiers. The client-side application is something you view in a browser (for example, this website). The database is an application on the server that stores data. The server-side application facilitates communication between the database (and potentially other server-side information) and the client-side. To sum up:

user ↔ client-side app ↔ server-side app ↔ database

In case you were curious, for March of Man, the client-side application is an interactive Flash movie made with Flex Builder, the server-side application uses Java running on JBoss, and the database is PostgreSQL.

All this communication between tiers can get a bit complicated. Fortunately, Adobe provides an excellent tool called LiveCycle Data Services (LCDS) for communicating between the client- and server-side applications. What exactly does it do? Well, March of Man deals with certain types of data: user accounts, images, hominin taxa, location/time ranges, etc. In programming, these types are referred to as classes, and classes are instantiated (i.e., realized) as objects. Specifically, these ones would be considered value objects. So, for example, there is a class called Account that specifies certain types of data, like email address, personal name, password, etc. An instance of Account (i.e., an Account object) might represent a particular person. For the client-side, the Account class is written in ActionScript. For the server-side, it's written in Java. What LiveCycle does is take care of all of the translation: when I send an ActionScript Account object to the server, it is automatically recreated as a Java Account object, and vice versa when the server reports to the client.

As an example, when you log in, the client collects your email address and password, and sends them (encrypted) to the server, specifying a login method. That method looks up the information for the specified account, packages it as an Account object, and sends it back to the client. Voilà, you are logged in.

Unfortunately, there isn't a similarly easy tool for translating from the server-side application to the database, where data is stored in tables as rows and columns. The only way to interface is using SQL, a common language used for database queries. Java provides some ways to facilitate this (the java.sql package of classes), but it can't do everything.

So I created a package of classes called org.marchofman.mappers to map the information from Java to PostgreSQL and back. Each mapper class corresponds to a type of value object, e.g. AccountMapper handles Account objects, ImageMapper handles Image objects, etc. They all have certain functionality in common, such as what are called the "CRUD" commands: create, retrieve, update, and delete. When you register, the Java service uses the AccountMapper.create method. When you log in, it uses AccountMapper.retrieve. When you change your information, it uses AccountMapper.update. And, should you ever decide you don't want an account any more (heavens forfend), it would use AccountMapper.delete.

The Problem

For the initial version of the site (still up as of this writing, but soon to be upgraded), the "mapper" classes did their job. But all was not well under the hood. Since there were many different ways to select data, I sometimes had to make multiple mapper classes for the same type of value object. For example, a user might want to pull up information on a particular image, on their own images, on the images corresponding to a particular taxon, or just on all images. Each of these required a completely different method, and I had to struggle to keep the levels of duplicated code down. Duplicated code might sound like a minor annoyance, but it can have serious effects. It really complicates both testing and updating code.

Eventually I realized that the mapper classes should not be concerned with how to decide which objects to handle, only with how to handle them once they were specified. I created a new type of object, called a Qualifier, to store information on how to specify certain objects. As an example, a TotalQualifier object specifies all value objects of a given type. A FieldQualifier object specifies all value objects with a certain piece of data, for example, all accounts with a given email address. A KeyQualifier specifies one particular object by a unique identifier. And a ConjunctionQualifier qroups other qualifiers and selects only those objects which satisfy all of those qualifiers.

Formerly I had to write methods like retrieveForOwner, retrieveAll, retrieve, retrieveForTaxon, retrieveForLogin, etc. With the new structure, I could just have one method, retrieve, and pass it any kind of Qualifier object I wanted. The number of classes in the org.marchofman.mappers package shrunk down to a fraction of what it had been. Now it was down to the ideal: one mapper class for each type of value object.

Doing all this was a fair bit of work. Fortunately, I had already built automated unit tests using the excellent flexunit framework. Once I finished my initial refactoring work, I just ran the tests and could instantly see what I still needed to fix.

The Payoff

Now not only do I have a more streamlined and flexible server-side architecture, but also some generalized mapping classes which may greatly facilitate work on future projects. Is the code perfect? No, but it's much better than it was. And I can always refactor again if I need to....


05 November 2007

A Collaborative Paleo-Art Project

I recently launched a new website, March of Man.

The goal is to create a gigantic collage that illustrates human (and chimpanzee) evolution through time and space. Paleo-artists can register and upload images of hominin* figures. Once enough are collected, I'll provide tools for synthesizing large collages. More specific details can be found at the website.

The site's in an "alpha" stage right now, so there may be some quirks. Readers, please let me know if you come across anything.

Soon I'll be making some updates, including a browseable gallery.

Running Praeanthropus afarensis


* What's a hominin? You're a hominin! Well, specifically, Hominini is the "tribe" that includes our species, and is sometimes used to refer to the smallest clade containing us and chimpanzees (excluding gorillas, orangutans, etc.).