Monday, March 31, 2008

Flash Window Mode Explained

I was running into an odd problem where a Flash movie was showing up behind the content of my page. Back in the day, HTML and Flash didn't always play nice together - with Flash usually ignoring any requests to put stuff on top of it.

Turns out, the issue has been addressed (probably for some time) and I'm only now learning about the details. They are nicely all explained here.

What's most useful is that when you're done with the article, you'll understand what the wmode parameter is for.

Though I haven't fully tested it, I think after all my research, hacking and general debugging I learned that I didn't exactly find a bug in Safari on Mac.

Instead, I learned I found a bug in my ability to spell. I had the CSS declaration:

#intro {
   positiontion: absolute;
   top: 0px;
   left: 0px;

Yeah, I could see how that could muck up the works.

A Review and Goal Definition Idea

Back when I used to manage programmers, I found that one of trickiest tasks I had was doing yearly reviews and specifically goal setting. Last night, while writing up a recommendation for a former team member, an idea struck me - one that might make reviews and goal writing easier.

What if, before a team member had a review, you wrote up a summary of their performance - for the next year. This hypothetical performance review would be written in absolutely glowing terms. In it, you would describe this super employee, who did everything just right - they learned 3 new programming languages, helped document the existing source tree, mentored two of the team members, and brought in donuts every Wednesday.

Now, what if you took this perfect review and shared it with the employee you're about to review? A few things would happen:

  • The employee would have a clear picture of what you define as perfect performance. It may not at all be what they think, but there, you've at least spelled it out for them.
  • There's no pressure on either of you - what you're describing is a year off and it's not like anyone has failed.
  • You could ask the question - What concrete things could you do to make this your next review? The answers to that question become your goals for the next year. The more fine grained your answer, the better. Example: Hmmm, if I'm supposed to learn 3 new languages this year, then every 4 months I better have a new language under my belt. And if I'm supposed to bring in donuts weekly, I better as heck join a donut club.
  • The employee could challenge and question your view of an ideal performance in a safe and fun way

It would also be an interesting experiment to have the manager write up their glowing review, and have the employee write up his glowing review - and then compare the two. What do each define as successful team member? I bet the manager learns just as much from this as the employee.

Next time I have a team to manage, I'm going to have to give this approach a try.

Fun With MrEd Components - A Retro Status Indicator

I'm happily hacking away on a MrEd based Scheme app. For the most part, I'm finding MrEd an ideal environment to develop desktop apps in (more thoughts to come on this, when I've got more experience under my belt).

While the windowing toolkit isn't huge, I'm finding it easy to extend. I've done this mostly by trial and error, but just today learned about this recipe that would have taught me how to do build my own components.

Here's a fun component I put together today. I needed to convey to the user that the operation they just triggered is going to take some time. I could have grabbed a loading icon and just hacked that in place. But I couldn't resist going retro and using the classic ASCII loading hack that involves overwriting the following characters in quick succession:

 - \ | / -

One aspect of this component that was pleasantly surprising was the use of threads. In Java, Swing and threads don't get along particularly well. Not to mention, in Java, you need to jump through hoops to even stop a thread. This sort of programming in Scheme was a breeze.

;; Declare my module
(module status-spinner mzscheme
  (require (lib "" "mred")  (lib ""))

  ;; The module will just provide the spinner component. Remember a % is just a
  ;; convention that says this name is a class.
  (provide status-spinner%)
  ;; Let's define the class
  (define status-spinner%
    (class horizontal-panel%

      ;; A spinner can optionally be provided with a size.
      (init-field parent (spinner-size 10))

      ;; The spinner is just text, so let's find the right font
      (define font (send the-font-list find-or-create-font spinner-size 'modern 'normal 'bold #f 'smoothed #f))

       ;; Part of the magic, choosing the text to show
      (define chars (vector "-" "\\" "|" "/"))
      ;; Setup our super class. Just like: super(...) in Java
      (super-new (parent parent) (stretchable-height #f) (stretchable-width #f))

      ;; Define where we'll stash our spinner text, the output. It's just a
      ;; plain text/message component
      (define output (new message% (label "") (min-width (inexact->exact (* 1.5 spinner-size))) (parent this) (font font)))

      ;; This is where we'll store the thread, but for now we don't have one.
      (define worker #f)

      ;; Our start function. We'll call this to make the spinner go.
      (define/public (start)
        (if (not worker)
            (set! worker (thread (lambda ()
                                   ;; This is an infinite loop, which keeps us spinning
                                   (let loop ((i 0))
                                     (send output set-label (vector-ref chars (modulo i (vector-length chars))))
                                     (sleep/yield .1) ; sleep for .1 seconds
                                     (loop (add1 i))))))))
      ;; Our stop method. Couldn't be easier to implement. Just kill the
      ;; thread. Ahhh, wish you could do this in Java.
      (define/public (stop)
        (if worker
              (kill-thread worker)
              (set! worker #f)
              (send output set-label ""))))

And here's a sample usage:

  ;; we make a frame, spinner and two buttons. Wire one button
  ;; to send 'start' to the spinner and one to send 'stop'.
  ;; Easy, right?
  (define (test)
    (let* ((f (new frame% (label "Spinner Test")))
           (s (new status-spinner% (parent f) (spinner-size 12)))
           (b (new button% (label "Start") (parent f) (callback
                                                       (lambda (b evt)
                                                         (send s start)))))
           (e (new button% (label "End") (parent f) (callback
                                                     (lambda (e evt)
                                                       (send s stop))))))
      (send f show #t)))

And here it is in action:

Sunday, March 30, 2008

3 Generations of Cousins

Our cousins were in from Rochester, for an Elder Hostel event in Baltimore. So other cousins in Baltimore invited us all over for brunch. And another cousin is going to have a baby in 6 weeks, so it was fun seeing her just a couple weeks after the baby shower and finding out how the baby's room is coming (apparently not quite finished!). It was great getting to see everyone even if a few family members couldn't make it, and in addition to the people, the food was wonderful! A great Sunday brunch!

Friday, March 28, 2008

More PMS Humor

Because let's face it, you can never have enough PMS humor. Of course, it's all fictional. No husbands are actually harmed in the following video.

Thanks Leah!

Thursday, March 27, 2008

So Clinton, So Barack

This has been nagging me for a few days now...

So Barack got in trouble because of his association with his pastor. A man who's words, every step of the way, he's condemned (I like the comment here: How is he supposed to solve the "Wright issue" beyond talking rationally about it? What, beat him up? Challenge him to a duel?).

Finally things got bad enough that he laid it all out on the line and gave a remarkable speech (it's definitely worth watching, see below). In this speech, he takes a rational approach to the situation he's in - delving into the complexities of the tricky topic of race. He not only talks about racism from a Black perspective, but speaks insightfully on it from a White one as well. Like I said, it's really impressive.

And what does Hillary do? Her response is:

“He would not have been my pastor,” she replied. “You know, you don’t choose your family, but you choose what church you want to attend.”

Did she even hear his speech? Instead of a building on the dialog that Barack started, she chose to vastly oversimplify things and shoot him down.

I just find it so typical in the two candidates. I think Barack is consistently sending the message he's real, complications and all, and Hillary is a typical political candidate, saying whatever she thinks the the electorate wants to hear (talk of snipers, anyone?).

My fear is that her tactic will work, because, well it's probably the tactic that has always worked. Barack gave an amazing 37 minute, complex speech, that defies being turned in to a 10 second sound bite. And Hillary managed to say two sentences which appeal to voters and thrill the media.

Argh, it's so frustrating.

Just watch the speech...

Update: This is too precious - Hillary Clinton's former Minister (of 8 years) "has leaped into the debate -- on the side of Wright." Check out his full statement here. I wonder how Hillary can spin this one?

Holding An Online Video Contest - The Cheap And Easy Way

I stumbled on this video contest that Brad Paisley was holding to see which amateur videographer could remake his Online video the best. I was struck by how easy it was for him to do this. All he did was:

  1. Make a video announcing the contest and explaining the details.
  2. Asked people to submit their videos by responding to the original video
  3. Posted a video announcing the winners

That's all it took. He didn't need to develop and launch a special contest website, or build/license any technology. He just did it - how cool is that?

I also like that he's traded fear of people stealing my music for get the fans involved. Nice.

Wednesday, March 26, 2008

Good News From Google Apps

First, if you're starting up a new business, or your current e-mail solution for your business isn't working well for you - you really need to try Google Apps. Google Apps is simply Google Mail, Calendar, etc. but branded for your company's domain name. They power i2x's internal infrastructure and it has worked out incredibly well.

It's hard to believe that there was a time when I would have paid thousands of dollars for an E-mail, Calendar and Document solution and now Google gives me one that works great and it's free. Yes free.

Can you tell I'm a fan?

And they made me even happier this week by quietly rolling out the latest version of Gmail to Google Apps.

I think my favorite new feature has to be a simple but valuable one:

You can bookmark a specific view of Gmail, including a conversation or label view, at any time if you'd like to return to it later. To create a bookmark, just use your web browser's bookmarking functionality.

In other words, when I'm setting up my task list in my wiki I can now link directly to a client's e-mail request. I just grab the current URL from a message, and I'm good to go.

It's a simple little feature, but should go a long way.

Code Gotcha Of The Day

First time I've fallen for this one. I was sanitizing a production database for development use and ran the following query to reset everything:

  UPDATE users SET password = '123456' AND email =';

See the problem? Neither did I for a few seconds, and then realized that MySQL treated the above as:

 UPDATE users SET password = ('123456' AND email =');

So, I reset every users password to 0 and left e-mail alone.

What I really meant was:

  UPDATE users SET password = '123456', email =';

What a difference 3 characters can make.

Tuesday, March 25, 2008

Adventures in HTTPs

The Problem

Earlier today I was struggling to debug an issue I was having with a web scraping app that I've been working on. The server was claiming I wasn't sending any POST parameters to it, when I was quite sure I was.

Normally, I'd debug this with Fiddler - which would allow me to see exactly what my application was sending over the wire. I can easily wire a Scheme program into Fiddler by just adding:

 (parameterize ((current-proxy-servers '(("http" "localhost" 8888))))
    ...any code that deals with URLs...

Unfortunately, I was dealing with an https connection, and for some reason, requests aren't being routed through the proxy.

The Debugging Strategy

After more time than I'd like to admit, I finally worked up a solution for seeing what the server was sending out. I just setup my own SSL server and created a trivial page which simply outputs the POST parameters.

You're welcome to test your https code against it, you can find the script here. It's embarrassingly simple, but turned out to be just what I needed.

This also prodded me to setup my server to do https, which I haven't done in quite some time. Turned out, it was easy, I just followed these instructions:

  • You'll need a certificate for your server. You can either buy one, or create your own. If you make your own, you'll get a nasty warning message from the browser - but it's fast and free to do.
  • Once you have the certificate, you can follow these instructions to install it.

Like I said, turned out to be painless.

The Solution

Once I had the proper debugging in place I was able to see that I was in fact, sending parameters but the server was ignoring them. Why? I had neglected to set the Content-Type on the POST. D'oh. I added in the Content-Type of application/x-www-form-urlencoded and all worked perfectly. My first instinct was that this was a bug in the PLT Scheme URL library, but it makes sense to me that this value is unspecified - as why should the library assume that you're always sending application/x-www-form-urlencoded content?

Oh well, it was a good lesson to learn, even if it was a painful way to learn it.

A Lunch Worth Every Penny

The video below just doesn't do this lunch we had in Singapore justice. Imagine ordering a noodle dish and having it delivered to you with the first layer of it squirming like it was quite alive. And did we enjoy watching our friend, who ordered the dish, squirm herself? Very much so.

Monday, March 24, 2008

Lloyd Kaufman On Low Budget Software Development

Lloyd Kaufman isn't a programmer, technologist or CTO - he's a maker of independent films, and the author of the racy*, yet useful, book Make Your Own Damn Movie. He is by all accounts an expert at making movies on a tiny budget. I think much of his advice on that topic also applies to doing software development on the cheap.

Here are some lessons that I think Lloyd would offer to the software world (apologies ahead of time Lloyd, if I'm wrong on these). Pardon some of the language/content below - it's simply not possible to quote meaningful chunks of his text without hitting on something that's not family friendly.

  • Advice:Finding Investors. Kaufman has one primary rule for finding investors to his movies:
    Tell everybody who will listen about your brilliant idea for a kick-ass movie
    Translation: Stop thinking of individuals as those who want to steel your idea, and instead, think of them as people who might want to get involved and actually invest in it.
  • Advice: Hiring. The first job Lloyd requires you fill in your movie isn't the lead actor, cinematographer or sound guy - it's the Production Manager.
    [The Production Manager] can be a tough slot to fill because whoever does this job actually has to work and not just dick around being "artistic" all day. The production manager has to solve problems. If you're shooting a scene that requires a six-foot jadedonkey phallus, the production manager has to make sure it's there when you need it. If you're shooting on location, the production manager has to make sure everybody knows where it is, how to get there, what time people need o be there, how long you're allowed to shoot there, every last detail.
    Translation: Imagine if every software development project had a person who's primary goal was coordination of the team? He insured everyone had the same version ofPhotoshop , a desktop computer maxed out with RAM and that the schedule didn't call for a release on the same day half the team is on vacation. There are plenty of places to skimp on a project - this isn't one of them.
  • Advice: Fake It.
    Should you let the budget that you've attained dictate the grandiosity of your screenplay that you write? Common knowledge says that if you've got a five-dollar budget, you shouldn't attempt to recreate the roman coliseum games in all their splendor and glory. But common knowledge is for assholes. I say that if that's your story you really want to make, a box of assorted animal crackers can be bought for $.98, monofilament can be pilfered from your Dad's fishing kit, and those little green army men can be easily turned into gladiators with the aid of a handy disposable lighter.
    Translation: Back in the day, a mapping application might call for you to hire GIS experts and license thousands of dollars worth of data - today, you can rig up an application using Google Maps for free. Get creative.

  • Advice: Be Prepared For The Dip.
    Without a doubt [pre-production] will be the most stressful time as a filmmaker, which puts it high in the running for the most stressful time in your life. It is during these last few days that details will mount up. But, instead of your project beingsubservient to your will and control, it will feel as if you are a slave to your own creation. You will see this gigantic avalanche of problems and details rumbling toward you and your first inclination will be to run away. After all, you haven't actually shot anything yet. You can still pull the plug on this whole enterprise, return your investors' money and go back to the nice, quite life you led before you had the insane idea to make this damn movie in the first place.
    Translation: Expect a Dip in your project, especially when the project details are really starting to show themselves. Software always seems simple when you talk about it, and gets complicated when you actually start building it. Know this. Expect this.
  • Advice: Simplify It.
    If a character in your film is a homeless one-armed black castrato with a Ph.D. and a facial tic, there is a person out there who is that character. In Hollywood, they'd pay Mel Gibson $20 million, erase his arm withCGI, and hire teams of black castrati and astrophysicists to train him for 6 months...[and] his performance would never come close to the real thing
    Translation: Don't demand a Enterprise Cluster with infinite growth capability and a 8 tier architecture, when a $5.00/month sharedPHP server will do the trick.
  • Advice: Tweak It.
    Many screenwriting books will refer to a screenplay as "a set-in-stone blueprint for your film." Adhering to this definition is one of the biggest mistakes first-time filmmakers make. They think that ifsomething's in the script, they have to shoot it, even if it sucks. In reality, the script should be a mere flow chart of your film, one of most flexible aspects of the production. The script isn't finished until you're literally unable to make any more changes; that's when you've struck your composite print.
    Translation: As a low budget development effort, the main advantage you have over the big guys is your ability to change on the fly. It means that nothing is set in stone, and everything is up for tweaking.
  • Advice: Peer Review It.
    The hardest thing to do in the entire editing process may be letting somebody else watch your movie in its raw, unfinished state. Unfortunately for your ego, it's one of the most important things you can do. It simply isn't possible for you or anybody who's been working closely with you on your project to keep watching the movie with fresh eyes. You're going to discover what works and what doesn't (or if anybody can even understand the damn thing at all) and that means sucking it up and bringing in an outsider.
    Translation You'll need to do usability testing to make sure your brilliant software package, is in fact, brilliant. And you'll want to beta test. This also means having other developers look at your code, which is where your ego can really get bruised. But it's definitely worth it, as anything from stylistic improvements to gaping security holes can be discovered this way.
  • Advice: Market It.
    The sad truth is that we cannot teach you how to sell your movie. Troma has staggered on for three decades now and much of our success has had to do with the fact that we owned the negatives to our films. This allowed us to derive immediate and continued revenue as new technologies came along

    The other major technology to come along in the early 1980s was the home video. As soon as it started to become popular, Jack Valenti and the major studios freaked out and refused to release very many titles, fearing that home video would be the downfall of copyright law. Theyenvisioned a world where everybody and their decrepit grandma would be pirating copies of Ocra, The Killer Whale and bankrupt the studios. Companies like Vestron and Media Home Entertainment rushed in to fill the gap, discovering a huge new market for independent films. While the Hollywood studios did their best to ignore this new development,Troma was able to make an assload of cash selling video rights to movies like The Toxic Avenger and Bloodsucking Freaks to distributors around the world.
    Translation: Look for creative ways to market your software, especially for gaps left by the big guys that aren't being fulfilled.
  • Advice: Enjoy It.
    A lot of people will tell you about the constraints under which they are placed by a low budget. I, on the other hand, have always found it liberating. The more money people put into a film, the more concerned they become over what happens to will find that the more money you have to work with, the less creative freedom you have.
    Translation: None needed.

There's plenty more to learn from the book. And provided you can stomach the raunchy content, I think you'll find it a really enjoyable read. Oh, and it's probably also a useful book if you're actually interested in creating a film, too.

*I'm not sure racy is quite the right description of the book. Maybe NC-17? Whatever the right classification is, this is most certainly a book for adults. Whatever you do, don't buy it for eager 14 year old film making daughter, or you'll have a lot of explaining to do.

Sunday, March 23, 2008

Two More Reasons To Use Google Spreadsheets

I just noticed that Google has announced yet another round of improvements to Google Spreadsheets. Among other items, they announced:

  • The ability to get an e-mail notification anytime a sheet or document changes. This will making collaborating on a spreadsheet easier.
  • The ability to embed gadgets in your spreadsheet. This appears to be really slick stuff - as you can embed highly graphical visulizations in a spreadsheet. Check out the fairly impressive list of canned gadgets you can start with. And there's an API so you can create your own. Learn more here.

Here are two examples of my latest spreadsheet usage. (a) As a quick and dirty issue tracking system and (b) to organize, prioritize and filter requirements for an upcoming project. Sure, there are more official tools for both these tasks, and one day, I might very well graduate to using them. For now, however, the speed that I could put together a spreadsheet and the organization it provides, is just invaluable.

The full set (well, don't worry, not really)

You've been getting to see photos that Ben's been posting as we've been going along, but if you want to see a slightly more detailed album, (but don't worry, not too time-consuming) you can find it here.

Friday, March 21, 2008

Back in The USA

We get off the plane in Japan, and there are smiling gate agents and lots of signs in English that explain where to go next - either to another international flight or arrivals.

We get off the plane in the US of A, and confront the same exact choice. In front of us are a pair of confused Japanese travelers. The all business agent at the fork in the road has one bit of advice for the travelers - you've got to move out of the way so others can pass.

There you have it, American hospitality. Good to be back.

Singapore Adventure - The Last Day

I'm tapping out this blog post on our flight from Singapore to Narita. So far, the flight has been un-eventful, and Shira even managed to use her Gold status to get me into the club before the flight took off. Talk about living large. [Note: I'm posting this from the club in Narita, after having written the post on the plane. Holy crap this is nice! I mean, seriously, how can anyone complain about international travel when they get to stop in to these little oasis's along the way? I've definitely been missing out.]

Yesterday we had a fun day, as we tried to make the most of our final day in Singapore. We spent most of the day on Sentosa island - a sort of manufactured island resort (even some of the rocks on the beach are fake). It turned out to be quite fun, and thankfully, the heat was more or less under control.

Highlights include:

  • Getting to the island via cable car - I think the longest cable car in the world. It actually passes through a building and makes a stop to pick up more passengers along the way. It's impressive. Given my fear of heights, rides and general fear of falling to my death, the fact that I went this way to the island is fairly remarkable. I was a trooper, if I do say so myself.
  • Finally seeing wild monkeys. How typical is it that going to a fairly pristine wildlife reserve, I see nothing - yet when I am outside the entrance to a resort hotel, I see oodles of little monkeys. And much to my inner 5th grader delight, they were even, uh, well, shall we say "giving each other a special hug." Ahh, yes, nature has no modesty.
  • We visited Underwater world (hence the photo of the jellyfish) - which turned out to have a nice collection of oddly shaped fish characters. Ever need inspiration for your next sci-fi novel? Just give this place a visit, and you'll have your cast and shapes for vehicles all figured out.
  • Shira was kind enough to let me traipse around the old Fort on the island. It had retired guns, tunnels, a kids obstacle course (see photo below) and history. I was quite pleased with it, and it was relatively seriously given the Disney-esque resort around us.
  • And surprisingly, we found "The Southern Most Point In Asia" - a little island, equipped with fake-rope bridge and observation tower. A treat indeed.

I'm not sure I have a need to go back to Sentosa again, but it was definitely worth a visit.

Ahh, in just a few short hours (about 18, actually) I'll be back to reality. Oh well, the vacation was fun while it lasted.

Wednesday, March 19, 2008

If you like food photography...

The other night we want to dinner with friends, and one of the young ladies in our party was snapping photos of the dishes as they came out. Turns out, she's an accomplished food photographer. For some folks it's sunsets, and others kids, and still others love race cars - but for simethereal, it's all about food.

Even if you aren't a food photography buff, check out her work. I know I was impressed.

Taking a Hike - Bukit Timah Nature Preserve

Today I wanted to get a little bit out of the city and commune with nature. I decided to head to Bikut Timah Nature Preserve. It's got the tallest point in Singapore, and a reputation for housing wild monkeys.

Alas, I saw no wild monkeys (just a couple of random critters, see below). But I did get to traipse through the jungle. Man it's loud in there. For the first half of the trip I was alone, and I have to say, it was spooky. If I ever need to shoot a horror film, I'd shoot it in the jungle.

Half way through my hike, I encountered a barrier that had been put up by the park service. Victor, who became my guide for the rest of the trip suggested that we scoot around the barrier and take the cut off path. As he explained, it's a much better path, and besides, it's the one all the locals take.

Victor turned out to be an excellent guide. He told me that he is 71, but man, did he set a killer pace. We should all be so able bodied when we're 71. His secret: lots of exercise, and lots of variety of exercise. Like I mentioned before, the people he are just so dang nice - and Victor was another good example.

The cave photo below is a cave that was used by the Japanese during world war II. There's not much to see inside, but it fit in perfectly with the spookiness I just mentioned.

Tuesday, March 18, 2008

Dinner as Entertainment

Last night we went out to dinner with a group of folks to a Szechuan style restaurant. The food was fantastic (most of the veggie stuff wasn't too spicy, but we still got a flavor for it - the chicken on the other hand, had one of our guests in tears).

One of the highlights of the restaurant is the tea they offer (I think it was called 8 Treasures Tea). It's basically a cup filled with various goodies - flowers, herbs, a chunk of sugar, etc. - and this kid comes around and dramatically fills up your glass with hot water.

The picture below just doesn't do it justice. It's a good time. And apparently, if you were visit China, you'd actually see this being done.

What a fun time.

Sorry if the photo of the duck (which we didn't actually eat) is a bit much. As my brothers can appreciate, we love a good duck head photo. And to me, this shows we were in an authentic restaurant.

Even serving the duck was impressive - first, the meat is carved at the table for you by your waitress. She takes the meat off the duck, wraps it in a little pancake. Then, she disappears with the remains of the duck and comes back a while later, with duck soup. Like I said, this was authentic stuff.

A Walk Through The Orchid Garden

Shira and I had some time last night to make it back to the Botanical Gardens, but this time go into the special orchid garden section. This is actually a paid part of the gardens, I have to admit, I was just a tad bit skeptical about paying to see more flowers.

I was, of course, totally wrong. The garden was more than worth it. Orchids are beautiful flowers, but perhaps more impressively, you can hack them. That is, invent new breeds that have interesting characteristics. So we saw orchids of all different colors, and sizes and even ones with different smells. Most impressive.

Here's a shot of one of our favorites - I'm not even sure how I'd describe this color scheme.

Singapore Vacation - Day 3

Some scenes from day 3 in Singapore. I spent a good portiion of the morning doing a walking tour of the Arab quarter of town.

Within a few square blocks, most of the world's major religions had sites. Seen below: a Hindu temple, Chinese temple and Mosque. Not shown, churches, and yes, a few blocks from where I was, a shul.

It was actually a big treat to stand outside the Chinese and Hindu temples and watch people scurry in and out, these are definitely actively working buildings. The air was thick with incense, which added to the effect.

A spooky, mostly abandoned, Malay cemetery located in the middle of town. The grave markers lack names, but not character.

I came to Singapore pretty much assuming that its reputation for law and order would be the overriding sensation. I was thinking police state. And of course, I was wrong. Yes, it's illegal to jay walk, litter, spit and spray paint graffiti - but I've seen people doing all those activities (well, I saw evidence of the graffiti, not the person doing it). And the police presence is actually pretty light (thanks, most likely to the power of CCTV).

If I had to choose one trait to describe Singapore, it wouldn't be the laws, it would be the people - everyone I've met here has been incredibly nice. I mean, stop and ask me if I need help finding anything nice. Or chat with me about American politics nice. Just really, really nice.

Speaking of religious institutions... I stumbled into this mall type structure with dozens of electronics, computers and cell phone stores. I mean, that's all it had - no Gap or Shoe stores to get in the way. Just geek stuff. And as I walked around, I realized that there wasn't just one floor of this - but 4 more floors. Try as I might, I wasn't able to capture the size of this collection of geek related stores. I settled on a photo showing the escalators on the way up to the stores.

I didn't actually end up buying anything, but I felt I had a responsibility to check out all the levels, just so I could retain my geek status.

Monday, March 17, 2008

More Shots Of The Botanical Gardens

Like I said yesterday, the botanical gardens of Singapore are just beautiful. The phrase that comes to mind the most when walking through the grounds is teeming with life. Here are some photos that try to capture just how beautiful the plants there are.

Of course, they just can't do them justice.

Singapore Vacation - Day 2

Today we made it to both the Botanical Gardens and Fort Canning Park, among other attractions. These two sites aren't particularly close together, but we shleped our way between them none the less.

The gardens were really remarkable, with plenty of exotic plants to gape at. Fort Canning provided a variety of historical subjects, and as well all know, Ben loves to see history when traveling (that trait is courtesy of his Mom).

D'oh, running out of time to write this post - I need to get ready to head out to dinner. I'll finish this up later, or more likely tomorrow.

Sunday, March 16, 2008

Singapore Vacation - Day 1 - Getting An Overview

It's actually Day 2 over here in Singapore - I was so wiped out yesterday that I didn't have a chance to get anything posted. If you're an American, you should be proud to know that I'm blogging not from some cute little authentic cafe, but from good o' McDonalds. According to a Singaporean couple I met on the flight over, McDonalds over here provides free WiFi, and is apparently the standard place to camp out with your computer

We got a real treat for our first day here, and met up with a friend from the states who was here on business. He, along with a friend of his who knows the area exceeding well, took us around. Yes, it was really cool getting the low down on the city from someone who really knows it.

Our first impression of Singapore is that it's a wonderful little city. As promised, it's clean and easily accessible (thanks to English being an official language). It has an impressive skyline and neat neighborhoods (we've only been to China Town, and haven't been to India town or the Muslim area). So far, we are impressed.

Here's a bit of what we did yesterday...

A glimpse of that impressive skyline I mentioned:

Us - just one our classic self portraits from the trip.

Me in front of a gigantic bird sculpture thing. Shira wants to know, does this count as us seeing cultural stuff? Do we really need to go to a museum now?

Us on the river boat cruise:

Ahhh, yes - America has contributed more to Singapore than McDonalds and Starbucks. We've also given them Hooters. I'm sure they're thankful. Actually, in a country where pornography is illegal (but officer, I was just reading the articles!) - this is probably pretty risque. Notice how you can't see my hands in the photo below - I wasn't sure if I should touch the waitresses or not. Yeah, I'm that afraid of girls.

Us outside a Buddhist temple in China town. The inside was magnificent. We also stepped into a Hindu temple as well. Impressive stuff.

I don't usually use the phrase "Bad Ass" to describe Buddhists, but there's just no other way to describe the sculpture at the front of the temple. Forget ADT, put one of these in your lawn and you'll have all the protection you need.

Shira and I noshing on mochi balls (yummy rice balls). They were filled with some expected foods (like peanuts and green tea) and some less expected foods (yam, black sesame). It was all quite tasty. But let's face it, putting powdered sugar on anything makes it taste good.

We had the quintessential Singapore experience - a Singapore Sling at the Raffles Hotel. The best part? You can throw the shells from your peanuts on the ground. In a city where littering is a serious offense, this is exciting stuff.

I know what you're thinking - oh cool, you made it to an aquarium. Not exactly. This was taken at the restaurant we ate at. And this guy isn't for decoration, he's for eat'in. The Chinese food was delicious and authentic. For example, I learned that in a formal Chinese dinner the rice is served at the end. That way, your guests don't fill up on rice and not get to enjoy the meat and fish. So the good stuff is served first, then the rice.

Not yet sure what's on tap for day #2. But I'm sure it's going to be a good time.