Wednesday, January 31, 2018

These Moon Pictures are a Lie

I missed photographing the last few high profile celestial events, but I wasn't going to let happen with today's Super Blood Moon Eclipse Extravaganza. While DC won't get much of the eclipse, I wanted to at least attempt to grab a few pics of the moon in its super sized form. So I set my alarm for 3am, and by 4am, I had my tripod set up on the DC Mall ready to snap away.

I managed to grab pictures of the moon, the Capital Building and the Washington Monument. However, I wasn't able to create the composition of my dreams, where the moon was juxtaposed to the scenery. So I cheated, and used The Gimp to copy and paste the moon pic into place. So while the photos below were all snapped this morning, including the picture of the moon, the compositions are totally invented.

It was a humbling experience standing outside at 4am, in 24°F conditions, grabbing these photos. On paper, it's all so simple. In the field, everything from getting the scene in focus to dealing with numb fingers was a challenge. Though I do have to say, the DC Mall is the ideal place to experiment with this type of photography. The place was empty (finally, parking in DC was easy!), yet it's lit up enough and trafficked by security enough, that it feels safe.

I'll definitely be back. Though, maybe I'll try a bit of night photography in the summer.

Tuesday, January 30, 2018

A Little Language for Music Composition | A Programmer's Approach to Song Construction

I was surprised by how successful I was at creating small animations, known as Poetic Computations and wanted to try the same thing with audio. Fortunately, much of the heavy lifting has already been done by the Web Audio API. The fact that I know nothing about music composition hardly seemed like a reason not to give this a try.

There are quite a few slick music APIs and creation tools out there, but I was curious if I could extend the lessons learned with my animation framework into the realm of music.

In the case of animations, my platform only allows for the creation of line segments. By scaling, rotating, translating and copying these segments interesting animations can be constructed without a lot of effort. Could the same be true with music? Here are the primitives I developed to find out:

  1. Sound - a sound consists of a frequency, duration and volume (gain).
  2. Stack - a collection of items (sounds, stacks or scores) that are all played at the same time. I think this may be similar in concept to a chord.
  3. Score - a collection of items (sounds, stacks or scores) that are played sequentially.

By now, those familiar with music theory are surely shaking their heads. But from a coding perspective, there's a nice symmetry to working with the above.

Using these classes, I can programmatically build songs:

Conductor.play(function(ctx) {
  var left = new Score();
  for(var f = 100; f < 800; f += 100) {
    left.add(new Sound().frequency(f));
    left.add(new Sound().frequency(0).duration('/', 2));
  }

  var right = new Score();
  for(var i = 0; i < 9; i++) {
    right.add(new Sound().frequency(200).duration(.25));
    right.add(new Sound().frequency(0).duration(.5));
    right.add(new Sound().frequency(400).duration(.25));
  }
  
  return { song: new Stack().add(left).add(right) };
});

You can listen to this creation by clicking here:

And here's another example:

I was pleased at how quickly the code came together. And I do love the compositional nature of the system. But man, is making music hard! In fairness, I've got about 20 minutes of experimentation under my belt. I currently have the same set of skills a toddler has when he bangs on your piano.

My hope is that with a little research I'll get a better sense of what patterns lead to a more pleasant sound and then my career as amateur musical composer will be truly off and running.

In the mean time, feel free to grab my code and make suggestions as to what I should do to improve the system.

Monday, January 29, 2018

Pocket and Man-Bag Dump, January 2018 Edition

I have a blog post in mind that would benefit from a fresh pocket & murse man-bag dump. The last one I did was posted was in June of 2017 and there have been enough changes to warrant an update.

If you're not sure what a bag / pocket dump is, and you're curious, here's a good place to start.

First off, an overall pic:

Keychain

  • USB Keychain Cable
  • P51 can opener with binder-clip to keep it closed
  • (2) paperclips, including a tactical black one!
  • Tweezers. Added after a couple of run-ins with ticks
  • Nitecore Tube flashlight. Bright and USB rechargeable. Dare I say, the perfect keychain flashlight.
  • My house key. Yes, there's one real key on my keychain.
  • A large safety pin
  • (2) pill containers holding useful meds
  • Whistle
  • Derma-Safe razor blade, the best utility blade ever

Not shown: two small rare Earth magnets that can be used as be used as an indestructible compass. They're stashed in one of the pill containers.

Other Pocket Items

I continue to use my wallet to hold a bit of cash and some utility items, but that's it. If I lose my wallet I'll be without my Ikea tape measure, but I won't be without my identity. Here's what's in my wallet:

  • Dummy Cards, including an already used Amazon Gift Card and an important looking Kinkos card
  • The card with a beach scene on it is a mirror
  • Couple sheets of stickers
  • Fresnel lens
  • Ikea paper tape measure
  • Strip of duct tape
  • Band-aids
  • Wire twist ties
  • Plastic bag (last used to avoid a motion sickness catastrophe)
  • Some money!

On to the bag, which is new for me. The lightweight Wsdear crossbody bag served me well, but one of the zippers eventually ripped on it. I would have probably bought it again, but Amazon has it as unavailable.

I'm giving a small'ish Nicgid bag a try. So far, I'm liking it. It's smaller than the Wsdear, but fits my stuff well (maybe too well?). I like the beefy zippers, which feel like they're going to hold up. Both bags have a large flat pocket on the bag to hold my phone, and a smaller flat pocket on the front which I can slip my money clip into.

Here's what's in the bag:

You can see that I've standardized on 4x6 inch, 6mil ziplock bags to store things in. I'm mostly happy with this, as it keeps items organized and the clear plastic allows me to quickly check contents. Also, as the containers pick up dirt and debris, I can toss them. The big catch: these bags all appears to have pin-hole openings near the top, which mean that they aren't fully sealed (which defeats the purpose of the zip lock nature, no?).

Everyday Stuff. Most of this stuff is boring, until you desperately need it, that is.

  • A-SPAN Street Guide. I hand out to folks when they ask me for money on the street. A-SPAN does amazing work to help those in need locally, and helping folks connect with them is far more valuable than spare change.
  • Keys
  • Flip & Tumble shopping bag. The greatest shopping bag ever.
  • Extra cash
  • Hair rubber band
  • Sun glasses. Broken, so I expect I'll replace these soon with another cheapo pair.
  • Tissues
  • TIP Flashlight. Super bright and rechargeable via USB.
  • Hand sanitizer with a kick
  • Twin Sided Sharpie
  • Buff. If it's hot or cold out, the Buff can save the day. Works as a sleep mask in a pinch. Lets me rock a headband when my hair gets too long.
  • Snacks. Compact, yet designed to give me a burst of sugar or fat on demand.

First Aid. For the level of first aid I'm trained at, basic meds and tape are what it's all about. Whether you're in the woods, or at a movie, over the counter meds at just the right time can be enormously helpful. And tape fixes everything else. New since my last pocket dump are a SWAT-T Tourniquet and ear plugs. I realized I needed to add ear plugs when the last three events we've attended with music left me wishing for them. Given the life saving nature of tourniquets and the versatility of a SWAT-T, it was a no brainer to carry one.

  • SWAT-T Tourniquet
  • CPR mask
  • Aquphor and various others meds
  • Ear plugs.
  • Pair of Nitrile gloves
  • Tape: small lengths of KT, Leuko, Duct and Gorilla.

Electronics. My smart phone is the answer to so many emergencies, from dealing with a down server, to 'surviving' a lengthy waiting room experience. I've found that having a handful of extras make it that much more useful. The keyboard turns my phone into a laptop; the headphones turn it into an entertainment center; and the Software Defined Radio turn it into an emergency command center. The battery and various cables keep the whole setup charged.

Hiking. These few items are the core essentials I'd take on any outdoor adventure. Most of these items cross over to more civilized uses as well. The lighter is just as useful for starting a campfire as it is for lighting birthday candles; the tea bag is just as handy in a hotel room with a coffee maker and no provided tea as it is on the side of a mountain.

  • 1x1 meter sheet of parachute material. Uses include: sit pad, signal panel, triangle bandage sling and anything else you can think of that involves a sheet of fabric.
  • Heat sheet emergency blanket
  • Heavy duty aluminum foil
  • Large sewing needle
  • Water purification tablets
  • Lighter
  • Heavy duty fishing line, which serves as cordage
  • True Liberty oven bag. I used to carry a 1 cup container, but found that it regularly raised alarm at x-ray security checkpoints. The True Liberty bag is far more innocuous, but can still be used to collect, carry and cook stuff in.
  • Tea bag. Among other uses, this is a nod to this if-you-get-lost strategy

So there it is, a run-down of what's in the old pockets and bag. Any questions?

Friday, January 26, 2018

A Great API for the Good Book

I'm working on a new project at shul that I think would greatly benefit from just the right spreadsheet. In my mind's eye, this ideal document contains the specific weekly Torah reading breakdown as well as how many verses are in each aliyah. Why do I need this? Unfortunately, the project isn't far enough along to share. Stay tuned.

I cringed at the thought of manually keying his information in, and imagined my only option was going to be parsing randomly structured PDF files. My hopes were immediately raised when I discovered that hebcal.com offers exactly the information I was seeking, in CSV form, no less!

Well, that was easy, I thought as I downloaded the CSV file for the Triennial cycle our shul uses. I manually examined the file and realized that this wasn't gso simple after all. While the specification for the export files promise verse count, the actual files are mostly missing this information. I can't complain to hebcal about this, as they're providing me with a massive amount of information free of charge.

In the easiest case, I realized I could derive verse count. For example:

27-Jan-2018,Beshalach,1,"Exodus 14:15 - 14:20"
27-Jan-2018,Beshalach,2,"Exodus 14:21 - 14:25"

If the reading starts and ends in the same chapter, all I need to do is a bit of subtraction to get the number of verses involved. However, when a reading crosses a chapter boundary, things aren't so simple. Consider this aliyah:

27-Jan-2018,Beshalach,3,"Exodus 14:26 - 15:21"

Without knowing how many verses are in Exodus, Chapter 14, I can't say how long this aliyah is. I'd normally solve this sort of problem by making use of 3rd party API. That is, if I was after weather or stock information, I'd consult some resource on the web to get this answer. Out of other options, I Google for Torah API and surprisingly there was a meaningful hit. Front and center was the API spec for sefaria.org. It looked to be exactly the information I was after. And like hebcal, the API was free to access and super easy to use.

For the record, here's how many verses there are in Exodus, Chapter 14:

$ curl -s https://www.sefaria.org/api/texts/Exodus.14 | jq '.text | length'
31

With Sefaria's API at my disposal, I had the pieces in place to fill in the verse count in a hebcal CSV file. Below is a command line PHP script that does this.

I share of all this to heap credit on sites like hebcal and Sefaria for being so open and willing to share. They're amazing resources and the Jewish Community is truly blessed to have them.

<?php
/*
 * A PHP file for reading in a data file from hebcal:
 *  https://www.hebcal.com/sedrot/
 * and adding extra info, like the verse count
 */

if(count($argv) == 0 || !file_exists($argv[1])) {
  echo "Usage: {$argv[0]} input.csv\n";
  exit();
}

function lookup_verse_count($book, $chapter) {
  $book = str_replace(' ', '_', $book);
  $ch = curl_init("https://www.sefaria.org/api/texts/$book.$chapter");
  curl_setopt($ch, CURLOPT_TIMEOUT, 4);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  $info = curl_exec($ch);
  if($info === false) {
    echo "Failed to lookup verse count for $book $chapter: " . curl_error($ch);
    var_dump(curl_getinfo());
    exit();
  }
  $details = json_decode ($info, true);
  return count($details['text']);
}

$input_fd = fopen($argv[1], "r");
$output_fd = fopen("php://stdout", "w");

while($row = fgetcsv($input_fd)) {
  if(count($row) == 5 && $row[4] == '' && 
     preg_match('/([A-Z].*?) ([0-9]+):([0-9]+) - ([0-9]+):([0-9]+)/', $row[3], $matches)) {
    $book          = $matches[1];
    $start_chapter = $matches[2];
    $start_verse   = $matches[3];
    $end_chapter   = $matches[4];
    $end_verse     = $matches[5];

    if($start_chapter == $end_chapter) {
      $row[4] = $end_verse - $start_verse + 1;
    } else if($start_chapter < $end_chapter) {
      $verses = lookup_verse_count($book, $start_chapter) - $start_verse + 1;
      for($c = $start_chapter + 1; $c < $end_chapter; $c++) {
        $verses += lookup_verse_count($book, $c);
      }
      $row[4] = $verses + $end_verse;
    } else {
      echo "Don't know how to compute verse count\n";
      var_dump($matches);
      die();
    }

  }
    
  fputcsv($output_fd, $row);


}
?>

Thursday, January 25, 2018

More Creations, More Lessons Learned, More Joy of Poetic Computation

Earlier this week I experimented with what Zach Lieberman calls Poetic Computation. Over the last few days I've enhanced the framework I created to experiment with this concept. For example, you can reveal the code behind an animation with a single click. Also, I updated the framework itself to thread a state variable through the animation function. I first saw this done in Racket World programming, and it seemed like a perfect fit for my code.

More importantly, I've made a number of new animations. Some of them build on each other, like these two:

Or these guys:

Some are one offs, like these guys:

Most were planned out with a general concept in mind, though this one is the result of pure happenstance:

I'm astounded at how quickly I'm able to compose a work of art that I can be proud of. I can tell you all the benefits of sketching, or experimenting with music or fiddling around with crafts. But the end result when I do this, by my own judgement, is at best so-so (And I'm OK with that. Really, I am). Yet, give me a world with nothing but line segments and a few operations (scale, translate, rotate and copy) and I seem to be able to make something magical. Why is that?

Part of what makes these animations work is that all they need to be is visually interesting. For example, when I started crafting the beye animation, my goal was to morph a square into a circle. I did this by writing some code to generate a circle using nothing but small line segments. I then revamped the code to generate a square using four large segments. I then mulled over how I could morph one into the other using an ever increasing counter. My first attempt produced something nowhere near my original square to circle concept. Rather than throw my arms up in frustration, I just went with it. I'd stumbled over something cool and could freely abandon my original concept.

Perhaps it's the wide definition of success, combined with so many paths to get there, that make this creative outlet so satisfying?

Feel free to grab my code and start making your own creations.

Wednesday, January 24, 2018

De Leon Springs State Park - A deliciously unique experience

One day you may find yourself cruising along the coast of Florida thinking, man, I really could go for a tasty and interesting culinary experience. If that happens, my advice is to see how close you are to De Leon Springs State Park. Nestled within this State Park, adjacent to a 72°F swimmable spring, is The Old Spanish Sugar Mill Restaurant. What makes this restaurant unique is that every table is outfitted with a griddle. Think self-serve, Hibachi style, all you can eat pancakes. Yum!

Shira cooked up such a perfect batch of pancakes that the table next to us wondered aloud if she might be willing to cook up theirs, too.

It was a bit too chilly the day we visited to swim in the spring. But we did take a delightful walk along the nature trail. For those willing to explore, this gem is waiting for you:

It's a little hard to read, but that there is Old Methuselah, a 500(!) year old cypress tree.

We didn't get a chance to explore the 4.6 mile loop trail in the park, or take the boat tour of the area. Just two more reasons, along with tasty pancakes, to go back to this location.

While there's plenty of history at the park, including ruins of structures known to be built by slaves, the name itself is pure tourist-bait. The park's name was changed in 1880 to DeLeon Springs simply to rope in tourists searching for any connection to the fountain of youth. Hey, use what you got, right?

If you're looking for a fun spot to explore, and tasty pancakes, here's a winner.

Tuesday, January 23, 2018

The Joy of Poetic Computation

The team over at Improvised Life highlighted a terrifically interesting talk by Zach Liberman. Zach walked us through his discovery of using code to generate art, or as he calls it, Poetic Computation.

He did an on the fly demo, which I started off less than impressed with. OK, he convinced the computer to draw a circle. Then copied that circle. Feh, this is CS 101 stuff. Then he animated it by cleverly using the current time and a trigonometric function. And just like that, I was hooked. He'd used just a splash of code to make something visually quite interesting; now that's impressive.

He then went on to explain that his daily practice is to experiment with these animations, which you can find published on Instagram. I would have thought this process might have gotten old, but his image feed proves me otherwise: the creative possibilities are endless.

Another practice he describes is having his students examine and reverse-engineer famous artists' work. In that spirit, I thought I would rig up my own Poetic Computation playground. I expected mine to be far more primitive than what Zach works with daily, but I hoped no less fun and inspirational.

My sketching environment offers two types of objects to work with: Lines and Drawings. A Drawing, can contain both Lines and other Drawings. Lines and Drawings contain the same set of operations, mainly: scale, translate, rotate and copy. A Line, by default, is one unit in length and goes from (0,0) to (0,1). A Drawing, when created, is empty. As you can see, I've strived to make the core operations as bland as possible. However, my hope was that by combining basic operations in interesting ways, you'd end up with, well, art.

My drawing framework was definitely inspired by SICP's picture language, even though it's been years since I've reviewed that code.

Here was my first picture, aptly called Hello World:

var helloworld = function() {
  var d = new Drawing();
  for(var i = 0; i < 360; i += 45) {
    var l = new Line();
    l.scale(i + 1).rotate(i + 1);
    d.add(l);
  }
  return d;
};

Painter.draw(helloworld);

And here's how it's rendered:

Taking a page out of Zach's book, I quickly started fiddling around with trigonometric functions. Also, I added basic support for animation. This allowed me to code this guy:

function sparky() {
  var pic = new Drawing();
  var d = new Drawing();
  for(var i = 0; i < 4; i++) {
    var l = new Line();
    l.scale(10).rotate(90 * i);
    d.add(l);
  }
  var fudge = (Math.cos(now())) * 10;
  for(var j = 0; j < 360; j += 5) {
    d.translate({x: Math.sin(j) * 100 + fudge, y: Math.cos(j) * 100 + fudge}).rotate(fudge);
    pic.add(d.copy());
  }

  return pic;
}

Painter.animate(sparky);

While it's far from a polished finished product, this animation does clearly demonstrate that even with my primitive setup I can make fun creations.

I've now been a Poetic Computationalist for about 15 minutes, and I have to say, this is really unlike any other code I've written. When you're coding to implement an algorithm you have a fixed point you're moving towards. But with my toy animation above, I had no such goal. I just wanted to make something interesting. Instead of being the professional chemist carefully measuring and adding ingredients, I was the 8 year old in the kitchen flinging whatever I wanted into the pot. I have to say, it was a lot of fun!

You can find the source code for all of this here and see all my creations here.

Monday, January 22, 2018

Warm weather skating, and playing art detective

Yesterday's high temperature was a whopping 60°F. So naturally, it was the perfect day to hit an outdoor ice skating rink. Seriously, it was.

There are a number of outdoor rinks in the area, but for this adventure we trekked into DC and visited the one in the National Gallery of Art's sculpture garden. If the weather wasn't enough of a draw, the surrounding buildings and sculpture sealed the deal. This is truly a wonderful location to casually grab some skate time.

After getting our fill on the rink, we ducked out of the park to buy ice cream from a nearby food truck. And then we did a quick walk-through the sculpture garden. This one piece caught our eye:

Besides the hulking nature of the sculpture, there was it's name: Aurora. We put our heads together and could only come up with two things related to this name: a Disney princess and something having to do with light (as in Aurora Borealis).

A quick Google search didn't turn up much in the way of help. This archived post describes the work as such:

Aurora is a tour de force of design and engineering. Its sophisticated structural system distributes eight tons of steel over three diagonal supports to combine massive scale with elegance of proportion. Several of the linear elements converge within a central circular hub and then explode outward, imparting tension and dynamism to the whole.

'Tension' and 'dynamism' are great and all, but what does it mean? And why associate hulking, rusted metal with light?

Our first clue came from this line of the description: "The title, Aurora, comes from a poem about New York City by Federico García Lorca."

That poem can be found here and it's perhaps not the nicest portrayal of New York. Here's the first two verses:

The New York dawn has
four columns of mud
and a hurricane of black doves
that paddle in putrescent waters.

The New York dawn grieves
along the immense stairways,
seeking amidst the groins
spikenards of fine-drawn anguish.

It doesn't get any cheerier from there. And in Spanish, the language the poem was written in, the first verse reads:

La Aurora de Nueva York tiene
cuatro columnas de cieno
y un huracán de negras palomas
que chapotean las aguas podridas.

There it is, 'Aurora.'

This article describes what the poet saw when he spent time in New York, which explains why he'd write a poem that highlighted New York's gritty (to be kind) side.

With this 'Auora' in mind, the sculpture certainly makes more sense. The hulking girders, and they chaos they invite, do indeed belong in a rough and tumble New York dawn. While we may not exactly know what the artist was trying to say, I think we're now on the right wavelength.

One final twist, though. The current sculpture garden description of the work includes this addition:

The steel forms a letter "k": the artist has said the work is a portrait of his wife, Kate.

Having read the poem Aurora one has to wonder how this sculptor truly sees his wife. Ouch.

Next time we have a crazy warm day in DC, take some time to hit the rink and the sculpture garden. There are still plenty of art mysteries to untangle.

Friday, January 19, 2018

DSLRs on a Plane - A new strategy for getting my camera to its final destination

Over the last few years I've managed to tune my murse man-bag so that it works as my airline carry-on bag. It's got earbuds, a Buff to act as a sleep mask, foam earplugs, common medications, a Bluetooth keyboard and battery and other items that are handy mid-flight. And, it's smaller than a backpack, so I can stuff it under the seat in front of me and have some bonus leg-room.

It's a great system until I need to bring along either a laptop or DSLR.

For short'ish or international trips, I can usually get away with leaving the laptop at home. But the DSLR is a trickier proposition. During the planning stage, it's easy to imagine leaving the DSLR with its heavy telephoto lens at home. But when you're in the field, and there's a monkey peaking out from the canopy 75 feet above you, that telephoto lens is invaluable. So for nearly all personal travel, the DSLR has to come along.

The question: what's the best way to transport it on the airplane? I've never been a big fan of the obvious answer: use a single purpose camera bag. They seem bulky and too limited for my taste. On the other hand, putting my camera and lens in bulk-free neoprene sleeve and dropping them into a backpack is a recipe for disaster.

I've even tried carrying the camera through the airport without storing it in a bag. This method has promise because it's such a useful habit to actually have the camera available and ready to shoot with. But I've found that there's just not enough need for a DSLR while in-flight or making my way through a terminal. Not to mention, there was that time when I left the camera at security because I wasn't thinking about it.

This last trip I do believe I found my solution! Check it out:

As you can see, I grabbed one of the handful of kids lunch boxes we have lying around and placed my camera, telephoto zoom lens and a couple of batteries in it. I then dropped the lunch box into a dirt cheap, but super practical 10 liter backpack.

The result was a secure way of carrying my camera, without a lot of bulk, or emphasis on single purpose gear. As a bonus, the setup doesn't look like it contains hundreds of dollars of photo equipment. I like that the backup is compact enough that it pairs well the man-bag I'm using already. I'm not sure why I didn't try this setup earlier?

If Princess lunch boxes aren't your thing, another option would be to order a camera bag insert to use in a regular bag. Though the above items fit so well, I plan to stick with them for now.

How do you opt to schlep your DSLR or other fragile equipment when you travel?

Thursday, January 18, 2018

Universal Studios - How much fun can you squeeze into one day?

OK, the Bone Museum was fun and all, but nobody goes to Orlando, Florida to learn about natural selection. Including us. Our true mission was to spend one epic day playing at Universal Studios. The fact that the weather was unseasonably cold wasn't going to stop us. After taking a luxurious dip in the hot tub the night before, we were ready to go at 7:00am.

After a short water taxi ride, followed by a short walk, we found ourselves 3rd in line to get into the park. At 8am, we burst in and quickly headed to Harry Potter and the Forbidden Journey™, a 3D simulator ride that's supposed to be the best in the park. J. loved it. Shira got mildly nauseous. I waited in the gift-shop with the bags. This would pretty much be the theme for the day. Shira and J. tackled ride after ride while I stood back and ruminated about how amusement parks so aren't my thing.

I tried, really I did. I took J. on Poseidon's Fury, a tough sounding ride with absolutely no motion. But he got freaked out by the story line and pyrotechnics, so we bailed. I also took him on the Men In Black Ride, where you attempt to rack up the highest score possible. And I did pretty well, with a score of over 35,000. J. racked up over 55,000, trouncing me, which was perhaps the greatest gift I could have offered him.

But this is truly Shira and J.'s thing. For one day, they're not hearing me go on and on about history or logging more miles on the trail. Instead, it's just fun. Shira's not the biggest fan of the 3D simulator rides that Universal is known for. Give her a good o'l fashion roller coaster. But J. sure enjoyed being part of a Transformers and Spiderman story, among others.

We opted to get express passes, which while pricey, were totally worth it. All of the lines moved fairly quickly.

We all enjoyed the Horror Make Up Show, which is more comedy schtick than anything else. It was fun to grab a laugh, and unlike some stunt-shows I've seen in the past, it was fresh material (for me, anyway). As a bonus, J.'s the perfect age to get schooled in the topic of horror effects, which teach him that what looks real, isn't always so.

While I can't speak to the rides, I can say that Universal does go all out with their characters and surroundings. The Simpsons town was packed with jokes, from the obvious ones like being able to get a drink at Moe's, to more obscure references, like getting a fish sandwich from the Flying Dutchman. J. enjoyed meeting Spiderman, Green Goblin and other characters from that universe. And I was left amazed and baffled by the Megatron character. Is it a remote controlled robot? A guy in a suit? An actual Decepticon? Who knows. I'm sure if you were a die hard Harry Potter fan you would have loved that land as it was packed full of interesting storefronts and things to see. Even the parade was fun to watch, being just the right length to keep it interesting.

We didn't opt to get sit down food service in the park, instead picking up sandwiches and pizza on the go. The service was surprisingly slow, but the food was OK and the fruit tart fresh. We had a dinner at the end of the day at Antojito's a Mexican place on City Walk and it was tasty.

The only let down of the day has to be the wand experience over at Harry Potter land. The concept is a good one: park attendees use a 'magic wand' to cast spells in storefront windows which trigger animatronic effects. My beef? The wands cost $50.00, the sensors in front of the windows are finicky, and the weather was too cold to stand outside and enjoy the experience.

Seriously, a 'magic wand' is little more than a stick with passive sensor in it. I get that it makes sense to offer $50.00 wands so Harry Potter fans can indulge in a high quality replica; heck offer $500 and $1000 wands while you're at it. But given the (insane) price of admission, would it kill Universal to offer a $10 or $15 version? And they really need to up their game with respect to the technology. I watched multiple kids try their best to cast spells, only to walk away from storefronts disappointed. As for the weather being too cold, I'll grant that's not on Universal.

J. obviously wanted a wand and was disappointed we didn't get him one. He even looked at the map and found the money exchange and Grigott's bank, explaining to us that we could pick up cash if we needed it. Such a helpful little guy! If I had this to do again, I suppose we could have planned this better and made the wand his birthday and Christmas gift or something. But even then, I'm not sure if the hassle of not being able to get the spells to work would have been worth it.

One of the highlights of our Disney Trip from a few years ago was participating in the Pirates of the Caribbean treasure hunt challenges. The idea is that you get a free map, unravel clues, and use your NFC based wristband to unlock animatronic treasures. There was no extra fee, an interesting puzzle to solve and the tech worked reliably. In my mind, Universal could learn a thing or two from Disney on this one.

Wand frustrations aside, Universal really did deliver one very fun and memorable day. If pressed, I think Shira would still rank Disney higher given their emphasis on old school rides as well as not having to carry around and worry about losing paper tickets as your Express passes. And I sure did love the Lego component of Lego Land. But if you've got a Transformers, Harry Potter, Spiderman or other theme obsessed kid, it's hard to argue with what Universal delivers.