Jay McGavren's Journal

2009-11-02

Life simulation ideas...

Just watched the Nature episode “Born Wild: The First Days of Life”, and got a dangerously large number of ideas for an artificial life simulation.

Here are (some of) the forces that seem to be in play:

  • Food and energy affect all aspects of birthing strategies. All these make it more likely at least some young will survive, but take energy in return:
    • Producing more than one fetus.
    • Long gestation periods.
    • Making yolk inside eggs.
    • Producing milk.
  • If you're not top of the food chain, your babies need to be born ready to run. A longer gestational period is in order.
  • A baby can be left to fend for itself, if it's born smart enough to find food. This means no milk production or babysitting, but probably also means longer gestation.
  • Birds let the strongest infant feed first - it's most likely to survive. The others get the scraps and if they live too, great. Sometimes the strongest sibling kills the weaker ones. Sometimes the parents themselves do.
  • If the father stays to help, it brings extra food energy into the equation - he feeds the kids or sometimes the mother. Sometimes this means bigger litters, or in the case of emperor penguins, it simply means survival.
  • Sometimes the mother herself is the food energy - one species of spider willingly lets the babies eat her alive.
  • For males, killing the cubs of your rivals is a good way to get their harems ready to mate with you. Of course, you have to prove your genetic superiority by fighting off the father first.
  • Social animals help defend each others' young, IF they're from the same father. Children from other groups get attacked, though.

Read more...
2009-10-27

Ruby on Acid: YAML says it all...

00021_random.png

--- !ruby/object:RubyOnAcid::MetaFactory
assigned_factories:
  :x2: &id001 !ruby/object:RubyOnAcid::LoopFactory
    counters:
      :x2: 0.0809003150016822
      :x: 0.0809003150016822
    interval: 0.0431080448196972
  :y: &id005 !ruby/object:RubyOnAcid::SineFactory
    counters:
      :y: -47.6973132292325
    interval: -0.0661543872804878
  :blue: &id004 !ruby/object:RubyOnAcid::SineFactory
    counters:
      :blue: -49.6672530194527
    interval: -0.0688866199992418
  :y2: &id006 !ruby/object:RubyOnAcid::SineFactory
    counters:
      :y2: -48.3512112649079
    interval: -0.067061319368805
  :alpha: &id002 !ruby/object:RubyOnAcid::LoopFactory
    counters:
      :alpha: 0.026577401239561
    interval: 0.0735458771168371
  :width: &id008 !ruby/object:RubyOnAcid::RepeatFactory
    repeat_count: 73.7486871161379
    repeat_counts:
      :width: 55
    source_factory: !ruby/object:RubyOnAcid::SineFactory
      counters:
        :width: -0.763070310680217
      interval: -0.0763070310680217
    values:
      :width: 0.154428166901605
  :red: &id003 !ruby/object:RubyOnAcid::FlashFactory
    counters:
      :red: 35
    interval: 48.2819400095083
    values:
      :red: 1.0
  :x: *id001
  :green: &id007 !ruby/object:RubyOnAcid::RepeatFactory
    repeat_count: 92.57504008154
    repeat_counts:
      :green: 70
    source_factory: !ruby/object:RubyOnAcid::LoopFactory
      counters:
        :green: 0.389712742634083
      interval: -0.0762859071707396
    values:
      :green: 0.389712742634083
factory_pool:
- !ruby/object:RubyOnAcid::LoopFactory
  counters: {}

  interval: 0.00689322163990813
- *id002
- !ruby/object:RubyOnAcid::LoopFactory
  counters: {}

  interval: -0.0330245624043419
- *id001
- !ruby/object:RubyOnAcid::ConstantFactory
  value: 0.799727962512452
- *id003
- *id004
- *id005
- !ruby/object:RubyOnAcid::SineFactory
  counters: {}

  interval: -0.04853454869413
- *id006
- *id007
- !ruby/object:RubyOnAcid::RepeatFactory
  repeat_count: 385.71501513496
  repeat_counts: {}

  source_factory: !ruby/object:RubyOnAcid::RandomFactory {}

  values: {}

- *id008
- !ruby/object:RubyOnAcid::ModuloFactory
  prior_values: {}

  source_factory: !ruby/object:RubyOnAcid::LoopFactory
    counters: {}

    interval: 1.0e-05

Read more...
2009-10-27

Hi-res Ruby On Acid wallpapers...

Went back and re-rendered some of my favorites at 1080p resolution (should scale down to widescreen monitors nicely). 007910006901237

Read more...
2009-10-19

Ruby on Acid: ConstantGenerator...

It seems obvious, in retrospect, that a little stability was needed with all this randomness…

@f.factory_pool << RubyOnAcid::ConstantFactory.new(rand)

In the image below, one of the Y coordinates is hooked up to a ConstantGenerator whose get_unit() always returns 0.5, hence, always halfway down the screen.

picture-1.png

Similarly:

picture-6.pngpicture-9.pngpicture-8.png

Read more...
2009-10-15

This is an XSD example from a normally stodgy tutorial site; were they trying for innuendo?

<xs:complexType name="jeans">
  <xs:simpleContent>
    <xs:extension base="size">
      <xs:attribute name="sex">

Read more...