St. John Day 6 – Greater Lameshur Bay

Posted by wanchan on July 5th, 2015 filed in Vacation
Comment now »

Today we slept in a bit, since our plan was to hit brunch at Miss Lucy’s, then meander up the road to Salt Pond Beach. Now, I remembered from my last trip here that Salt Pond’s trailhead was rather at the end of civilization for the island, so I was less worried about it being full by midday.

Miss Lucy’s brunch is apparenly famous, and so on the advice of an internet stranger, we showed up about 45 minutes before they opened. That proved to be a sound decision, as we were the first in line, and got the best table out in the open-air seating area.

Our table at Miss Lucy's

Our table at Miss Lucy’s

It was a beautiful morning, and I greatly enjoyed sitting in the shade, listening to the waves and wind. Eventually, one of the local cats came over to say hello:

IMG_0766 IMG_0768 IMG_0769

After an excellent brunch, we packed up to head over to Salt Pond. We passed a packed parking lot a few miles down the road, but skipped it, as I was expecting a dirt road, and an empty parking lot.

The paved road did eventually terminate into a Jeep trail. It was only occasionally maintained, it seems – there were plenty of potholes, several of which were large enough to park 4-5 jeeps in. Along those stretches, it was more pothole than road – like a sunken road with speedbumps in between to denote the end of one pothole and the start of the next.

Eventually we did come across a beach with only parking for 4-5 jeeps. We pulled over, and found a decent-looking beach, but not the spectacular one that I remembered Salt Pond being.

IMG_0774 IMG_0775 IMG_0776

What the heck, we suited up and went snorkeling anyway. The snorkeling was pretty good – a fair number of rocky patches with fish – but the bay was not as protected as the others, and eventually Michelle decided she was done fighting the wind.

When we got home, we checked a map. That crowded parking area was Salt Pond beach’s trailhead, and the place we ended up at was Greater Lameshur Bay. We also learned that if we’d ventured a little farther down that jeep trail, we would have hit Little Lameshur Bay, which is apparently a better beach. Oh well, an adventure for another day!

St. John Day 5 – Cinnamon

Posted by wanchan on July 4th, 2015 filed in Vacation
Comment now »

Today we decided to return to the north shore and snorkel the famous Cinnamon Bay. The beach is probably the nicest one on the island – a long, smooth beach formed of soft, fine sand, plus calm, crystal-clear waters in the sheltered bay.

Absolutely gorgeous.

Cinnamon Bay beach

Cinnamon Bay beach

Cinnamon Bay beach

Cinnamon Bay beach

Michelle in Cinnamon Bay

Michelle in Cinnamon Bay

Chris in Cinnamon Bay

Chris in Cinnamon Bay


The snorkeling here was less exciting – not as much coral and relatively few fish – but the visibility in the water was excellent. Michelle described it as a “Caribbean swimming pool”. At the end of the day, we judged the beach excellent and the swimming mediocre (comparatively to Trunk and Leinster).

St. John Day 4 – Leinster Bay

Posted by wanchan on July 3rd, 2015 filed in Vacation
Comment now »

So, having scouted out Leinster Bay via the short hiking trail from the Annaberg ruins the day before, we packed our snorkeling kit today.

We got up a bit earlier, and were the first people on the beach, which made Michelle nervous on the assumption that everyone else knew something we didn’t – she checked the USVI NOAA pages religiously every morning to check the riptide forcasts. Once I convinced her to relax, we set up camp and walked the beach.

Leinster Bay beachLeinster Bay, with a view of Waterlemon Cay

Right off, we got a nice treat – there was a small nurse shark prowling the beach, maybe a meter from the surfline proper. We walked the whole beach, and saw him a few times – he seemed to be patrolling the whole beach, or at least the sandy part.

That settled, we slathered on our sunscreen and headed into the water. The shark swam nearby a few times, but never closer than a couple of meters from us. I only saw him at the edge of my visibility twice after we started swimming. That disappointed me slightly, but also made me feel better that he preferred to leave us alone, rather than assert ownership of the beach.

What we did see, however, was quite impressive. Quite a few different kinds of fish, including the only puffer fish I saw the whole time. There were a few different schools of smaller fish swimming about, and it seems we found another small barracuda every time we turned around. We were quite relieved that, like the shark, they preferred to swim away from us.

Our biggest treat was out a bit closer to the middle of the bay – Michelle spotted them first, but she got my attention quickly to watch a pair of sea turtles browsing the grass along the floor of the bay. We watched them for quite a while, including drifting pretty close to them (no sudden or fast movements to startle them). They didn’t seem to mind our presence much, and we kept a reasonable distance so as not to give alarm.

After a while, we decided it was about lunchtime, so we headed back to the beach. There was a delay getting back when we came across another turtle closer to the beach, and I got to watch a pelican diving into a school of fish from underwater!

When we got back, I found our bags pulled open, and most of our lunch missing – the local mongeese had smelled our food, and stolen our bag of chips alongside Michelle’s sandwich. That left me pretty cross, as I should have known better than to leave our food in just a backpack on the beach, but I hadn’t felt like lugging the cooler out on the hike. Another lesson learned the hard way.

The local birds that scavenge from tourists are pretty cute, though:

some kind of bird - we saw a few on every beach and at every outdoor eatery

All in all, our best day’s snorkeling, despite the sand otters stealing most of lunch.


St. John Day 3 – Annaberg Sugar Ruins

Posted by wanchan on July 2nd, 2015 filed in Vacation
Comment now »

Owing to my nice new sunburned shoulder, we decided to do a shirts-on day today.

The most obvious activity to meet that requirement was to check out the ruins of the old Annaberg Sugar Factory. They have a nice park set up here, with some of the old structures slightly restored and helpfully labelled. A short tour, to be sure, but cool! Well, it was pretty hot in the sun, actually, so I mostly scurried from one shady spot to another, venturing out to admire the old windmill tower, or the sugar factory buildings.

Annaberg's windmill

The windmill would crush the sugar canes, and the juices flowed through a stone trough over to the boilers.


Apparently the wind isn’t as reliable here as I would expect – the original Dutch owners bothered to install a horse mill to crush the sugar cane on days when the windmill wasn’t generating enough power.

The park service had also labelled a few of the trees out here. The most amusing of them was the Turpentine Tree. It is covered with red, peeling bark, generating for itself the nickname “Tourist Tree” due to the similarity with my skin.

According to a sign we read at Trunk, the island used to be covered with sugar cane plantations – I believe they said something like 80-90 of them at the industry’s peak! Only Annaberg has had it’s facilities made into a park, though we did find another partially restored building at the trailhead near Little Lameshur bay.

After wandering about the ruins for a while, we decided to check out the nearby trail – it promised to be only 0.8 miles each way, so what the heck! I’d completely forgotten that it was the path down to Leinster Bay, which is rated as one of the best snorkeling spots on the island. Well, we hiked it today, decided that the beach looked nice enough, and vowed to come back another day with our snorkeling gear.

the rocky beach at Leinster Bay

After hiking back to the trailhead, we decided we weren’t quite spent yet, and wandered over towards the north shore beaches again.

There is a small beach that overlooks the main beach on Trunk bay called Jumbie which has very limited parking and a short trail down from the road. We pulled out the beach chair and our lunch for a nice picnic:

Jumbie beach Lunch on Jumbie beach

After lunch we decided to check out Maho bay – Maho is generally rated as an excellent beach with mediocre snorkeling prospects, so we figured it would be a good spot for a day where we hadn’t brought our bathing suits. We managed to find a choice parking spot (which turned out to be pure luck), and ambled up and down one of St. John’s nicer beaches.

Maho Bay


With that, we decided that perhaps we were about spent after all.


St. John Day 2 – Trunk Bay

Posted by wanchan on July 1st, 2015 filed in Vacation
Comment now »

Historically, both Michelle and I have a mixed track record of insomnia the night after pulling an all-nighter. Our first night on St. John, we figured that would be exacerbated by the unfamiliar bed and surroundings. That fear proved unfounded – we crashed not too long after dinner and slept pretty well. After a breakfast of scrambled eggs and sausage, we decided that our first day of playtime should be on Trunk Bay beach. Apparently world-famous as an excellent beach, it lived up to both its reputation and my recollections.

Trunk has a cay just off the beach, which produces an extremely sheltered patch of water in its lee. This is apparently good for coral growth, and makes for idyllic snorkeling conditions. The US National Park service has also set up a small underwater snorkeling trail there with a series of markers on the seabed describing the different kinds of coral and fish that are frequently found there.

Besides that, the beach is beautiful! Fine white sand all the way from one end to the other:


We finished the day at home, with homemade burgers on the propane grill.

Once again, I crashed early this night, partially due to the energy-draining effects of my new sunburn.

St. John Day 1 – Arrival!

Posted by wanchan on June 30th, 2015 filed in Vacation
Comment now »

After leaving home at 7:45pm on Monday, we finally arrived at our rented house on St. John at around 5pm on Tuesday. Twenty-one hours of travel time is a bit much, but we made it. Of course, I still apparently can’t sleep on planes, even in the exit row (because they wouldn’t let me recline the seat), so that made driving the rental car across St. Thomas that much more interesting.

We had prepared printed directions from Google Maps from the airport to the car barge terminal, but I hadn’t spent any time going over the route that had been selected – Google apparently selected the northern highway across the island, which required a series of turns to traverse across Charlotte Amalie. Sadly, they don’t really go in for labeling streets at intersections there, so we were rendered lost very quickly. Or, paraphrasing Daniel Boone, we weren’t lost, but we were a mite bewildered there for about an hour.

After some moderately successful navigation-by-wandering-around combined with the crude map that Budget had given us, we decided to abandon Google Maps’ suggested route, and take the southern highway across St. Thomas. As it turns out, that road goes more-or-less directly from the airport to the ferry and car barge terminals. When I rechecked Google Maps after our arrival at home, it turns out that Google thinks the complicated route is a few minutes shorter than the simple route, which is why it defaulted to it. Our property manager agreed that while the northern route is indeed slightly faster, it’s rarely worth the trouble of navigating Charlotte Amalie, even for a local like him.

Well, it was an adventure at times, but all’s well that ends well. The house we rented is great. Bright, clean space with a comfy couch and bed, and a spacious deck with a killer view:

IMG_0701 IMG_0702 IMG_0703



That’s St. John’s East End, with Tortola further back. The back wall of the house has four large doors, three of which slide open to permit the steady trade winds to blow through. It keeps the house a nice steady temperature, and means that the house never lacks for ventilation. The winds are a bit strong, and leave us feeling weatherbeaten if we try to hang out on the deck for too long.

It turned out to be a good thing indeed that we took the general advice to rent a jeep when visiting St. John – the house we rented is up a steep dirt road with several interesting switchbacks. On Google Maps, you can see it as the one just to the north of MoonSwept Villa, here. Getting up here requires a 4×4 vehicle.

After settling in a bit, we climbed back down the mountain road for dinner at the Shipwreck Landing. Dinner was excellent, if a bit pricey.


Fry’s is still awful, news at 11

Posted by wanchan on February 18th, 2014 filed in Uncategorized
Comment now »

Apparently when they take your order, they’re not even sure if they have the stuff yet! They won’t know that for some unspecified amount of time later, when they promise another email would be forthcoming.

I’m now at T+75 minutes since placing my order, and still no second confirmation email. In the meantime, I’ve had enough time to freaking drive down there, buy the stuff in person, and come back to work.

When I got there, they seemed really confused how this “internet ordering” thing is supposed to work. Customer service didn’t seem to know where to send me. The guy in the computer components section happily supplied my gear, but the cashier seemed really confused by my assertion that I had already paid for this stuff that’s on the counter.

“Oh, that’s not a confirmation number – you need to wait for the second email”

Yeah, not doing that. Then, when I finally talked them into just completing the order anyway, they still insisted on swiping my credit card. …what exactly was the point of making me put it into the website (complete with CVV code), then?

Seems like Fry’s isn’t in any position to provide actual competition to Amazon yet. They’re trying, I guess, but failing – it’s always *such* an ordeal to shop at Fry’s, while Amazon is happy to take my money and send me what they promised. Heck, they even know what their inventory is *before* selling me stuff.

Trying Allegro green tea

Posted by wanchan on November 7th, 2013 filed in tea
Comment now »

Those of you who know me are probably aware that I’m a bit of a tea drinker. My usual routine at work includes a cup of black tea in the morning (usually Adagio’s Irish Breakfast blend), and another cup of either a black or green tea in the afternoon – whatever I feel like that day.

Yesterday, a coworker gave me a hit from her stash: Allegro’s Himalayan Green blend. I was quite impressed – a strong, refined aroma, and a fairly robust flavor for a green tea. Nothing as “robust” as a roasted green, but a bit stronger than many other green teas I’ve enjoyed. I have resteeped it this morning, and it seems to have produced a pretty passable second cup after an extra-long steeping.

Humans are neat

Posted by wanchan on March 10th, 2011 filed in Uncategorized
Comment now »

Alt title: stereo vision is neat! There are obviously design flaws involved with having two eyes set apart being rigged to generate a single field of view – most notably when an object is close enough to my head that the scene is drastically different between the two lenses. And it does render strange visual artifacts, like being able to see my computer screen apparently *through* my hand, when it is held up in front of only one eye.

What really struck me, though, is that my brain is sufficiently well programmed that, while the strange things do render, and I consciously recognize them as strange, it doesn’t actually screw with my mind. Offhand, I’d expect that do generate more of a “holy crap wtf!” response in my brain, but it takes these things in perfect stride. No doubt because it happens many times daily, but still – humans are neat.

CakePHP doesn’t like models named “List”

Posted by wanchan on January 17th, 2011 filed in Programming

Creating a gift want-list management app (mostly to learn how to use CakePHP). Naturally, this includes Lists of things a User wants. So, naturally, I called the DB table lists, implying a model named List. Seems fine, right?

When using the ‘cake bake all’ tool, I got a bunch of parse errors to the effect of ‘unexpected token T_LIST, expected T_STRING’ or something close. I forgot to copy/paste that error code before I fixed it ><; I’ll have to go reproduce that later so this will be a useful hit on Google later for the error message.

TL;DR: I tried to use names that were already used by either PHP itself or CakePHP

UPDATE: using php -l to do a compile check on app/models/list.php,  I get the same eror:

php -l models/list.php

Parse error: syntax error, unexpected T_LIST, expecting T_STRING in models/list.php on line 2
Errors parsing models/list.php

Anyway, after changing the DB table to want_lists (and having to change all of the foreign key reference column names from list_id to want_list_id), I deleted all of the model, controller, view and test files, then reran the ‘cake bake all’ commands for each model it detected, the error seems to have disappeared. Testing still required, of course, both to confirm that this is where the error stemmed from, and that my fix did in fact fix it.

TL;DR: CakePHP doesn’t like models named List. Use a different name, like WantList.

UPDATE:  I’ve recreated the error. I’ve done the bake for the User model already; here’s the dump from trying to bake the List model:

Welcome to CakePHP v1.3.6 Console
App : app
Path: /home/wanchan/
Bake All
Use Database Config: (default/test)
[default] >
Possible Models based on your current database:
1. Family
2. FamiliesUser
3. FamiliesWantList
4. Item
5. List
6. User
Enter a number from the list above,
type in the name of another model, or 'q' to exit
[q] > 5

Baking model class for List...

Creating file /home/wanchan/
Wrote `/home/wanchan/`
List Model was baked.
SimpleTest is not installed. Do you want to bake unit test files anyway? (y/n)
[y] >

You can download SimpleTest from

Baking test fixture for List...

Creating file /home/wanchan/
Wrote `/home/wanchan/`

Parse error: syntax error, unexpected T_LIST, expecting T_STRING in /home/wanchan/ on line 2

You’ll subsequently get similar errors when baking any other models that interact with Lists. Again, renaming the model to something else (I used WantList) seems to correct this, so I’m guessing CakePHP has an internal List class that this conflicts with.

I’d propose that the ‘cake bake’ command should be updated to at least warn the user about potential name conflicts. Or, alternatively, a separate ‘cake bake_check’ or something. Even just a simple published list of “names to avoid in PHP/CakePHP/whatever” would be pretty useful. Maybe I’ll start figuring out how to do all that after lunch…

Update 2: Looks to me like the conflict was probably with the PHP builtin function list(). Hmm… I wonder if it’s even possible to have a program generate a list of all names that it can’t use. I’m guessing that the best I’d be able to do is add/modify a bake command to check if any of the classes you’re ordering it to operate on are illegal. Not sure how to do that offhand… maybe have it write some temp code snippet files, then see if any of them generate parser errors like I just encountered?