Zovirl Industries

Mark Ivey’s weblog

Overnight ride to Pigeon Point Lighthouse


The weekend after our Point Reyes trip, Yana and I did an overnight bicycle trip to the Pigeon Point Lighthouse.  We wanted to join a friend from work, Piaw, on a 3-week cycling tour of Japan which he was organizing at the end of the summer.  Every year before he tours, he organizes a prerequisite shakedown ride so we were joining him for that. Pigeon Point is his usual destination for these shakedowns.  It lies on the coast between Half Moon Bay and Santa Cruz, about 50 miles from Silicon Valley, and there’s a youth hostel (with a hot tub overlooking the Pacific!) so it is an ideal destination for an overnight bike trip.

The hostel is quite popular (at least during the summer months) and we were only able to get reservations for Sunday night.  It was forecast to be hot in the valley on Sunday so we got up early.  After meeting our friends there were some last minute gear adjustments (mounting extra water bottle cages, for example) before we departed.  After leaving Sunnyvale, we rode out past Steven’s Creek reservoir, then up Montebello road.  By the time we reached the climb the sun was high enough to be warm.  Montebello starts out steep as it leaves the reservoir, then gets a little more gentle once it approaches the top of the ridge.  When we reached the end of the pavement (Piaw likes finding dirt roads to ride on), the sun was hot. The 2-track dirt fire road goes right over the top of Black Mountain and we pedaled along, baking in the heat as we crunched through the dusty gravel.  The rolling hills were covered in dry grass, being bleached by the sun. I had already finished two full bottles of water before we reached the top.  Fortunately, on the other side of the peak, there’s a lonely drinking fountain next to someone’s driveway.  I don’t know who the kind landowner was who provided such an oasis, but we were certainly grateful as we stopped to refill our water bottles.

Having crossed the mountain, we had a long descent ahead of us down Alpine road.  Everything was hot at this point; my brake levers and handlebars felt warm to the touch. The air was hot, and dried out our eyes as we sped down the hill.  The road descended down the spine of the hill, playing with the steep ridge, first on one side of the ridge, then crossing to the other side, occasionally winding around a small hill then back to the ridge.  On either side the grass-covered hill dropped away sharply and riding felt like flying as we banked around corners with the landscape far below. Each turn offered views of broad vistas when we were able to glance away from the road.  It is a curse of biking that on the way up the hill you are too oxygen-starved to enjoy the view, and on the way down you are going too fast to look away from the road.  (Of course, one could always ride slower, but that thought rarely occurs in the moment). About halfway down the hill the road made a sharp right turn and dropped off the ridge, plunging into the trees.  It wound its way down to a creek at the bottom of the steep, wooded valley.  The road here was narrow, without a centerline, and the corners were tight.  After the sweeping vistas above it felt cramped, the riding no longer felt like soaring.  The corners demanded attention and plenty of braking.

We regrouped at the bottom of the hill.  Having already conquered the main climb of the day, we only had a few smaller hills between us and the ocean.  The air was already cooler here, and much of the road was through the forest.  We rode on to the small town of Pescadero where we stopped for lunch. The market sells wonderful garlic artichoke bread fresh from the oven. We bought two big loaves, still warm and moist in the middle, and enjoyed them at the picnic tables on the lawn behind the store.  This close to the ocean, the air was chilly and over the course of the meal we moved out from under the shade of the table’s umbrella to recline in the sun on the grass.  After our meal, we returned to the store for groceries for the evening’s meal.  We picked up pasta, two more loaves of half-baked bread (we would finish baking them at the hostel), and a fresh pie.  All the food was stored away in saddlebags and paniers, except for the pie.  It was delicate, but since Piaw and his girlfriend, Lisa, were on their tandem bike, Lisa was able to hand-carry the pie as we rode.

We left Pescadero via Cloverdale road, a lovely little road that heads south through a small valley, paralleling the coast.  Although we had seen that there was fog closer to the water, Cloverdale road was one hill inland and that was enough to grant us sunshine.  After several miles of rolling past fields, the road got narrower and met up with Gazos Creek road to wind along the creek bottom until it dumped us out on Highway 1 at the ocean.  The weather here was overcast and windy; cold. It seemed a world away from the dusty, dry heat we had been in just a few hours before, only 50 miles away.  We had a brisk headwind as we backtracked a few miles to the lighthouse. After checking into the hostel, I explored the beaches by foot.  North of the lighthouse was a long beach being pounded by the waves and wind, but south of the lighthouse there was a quiet cove, with stairs down to it.  I had brought a swimsuit, so I went in for a very (very) brief swim.  Although I would have enjoyed the freezing water earlier when we were roasting in the sun on top of Black Mountain, it was much too cold now that the sun was gone.  I got my head wet and then stayed out of the water until we hit the hot tub after dinner.




Monday morning we got up early because we had a long ride in to work.  It was cloudy and cold as we rode north along the coast, cutting inland to ride through the rolling hills and farmland.  Our goal was Tunitas Creek road, a beautiful climb up a ravine in a dense redwood forest.  Redwood trees are magnificent in grey overcast weather like this, and the temperature was great for climbing.

Even though we had only been gone one night, I still had an odd feeling of independence as we rode in to work.  It was similar to what I had felt the previous weekend, on our Point Reyes ride.  There’s something about traveling by bicycle: knowing that you’re carrying whatever supplies you need and that you have the freedom to ride wherever your legs can take you.

Bicycle Trip to Point Reyes

For our wedding anniversary this year Yana and I rode our bicycles to Point Reyes for the weekend.  Our previous bike touring experience was limited to a single overnight camping trip, so this was a fun new adventure for us.  Several weeks ahead of time we made reservations at the Bear Valley Inn in Olema, a great bed and breakfast that gives a discount if you arrive by bicycle.  This is one of my favorite places to stay as the owners are both very active and know lots of great places to hike and ride.  It is also the only bed and breakfast we’ve stayed at where the innkeeper went running with us in the morning.  A few days before our trip we planned our route and checked our bikes over to make sure they were working.  Friday morning we packed everything up and rode to work.

Friday

After work on Friday I jumped on Caltrain and rode up to San Francisco.  Yana met me at the station and we started our ride at about 5:30 PM, heading along the waterfront towards the Golden Gate bridge.  When I first started road biking a couple years ago, riding in traffic was scary.  It still is sometimes, but as I’ve gotten better at it I’ve started to realize there are different kinds of traffic.  We had the good kind of traffic: polite and slow.  When the cars are driving about the same speed as the bikes, they tend to be more patient when passing and it is easier to take the whole lane when needed.  If there’s a delivery van parked on the shoulder, say, it’s easy to merge into the traffic lane without cutting off any cars.  I was pleasantly surprised to find that there are also a good number of bike lanes and small empty streets between the train station and the bridge.  Quite a bit of the route didn’t have any cars at all.

The bicycle lane on the Golden Gate bridge was mostly empty when we arrived so we didn’t have to worry about colliding with other riders.  Instead we admired the view of the Marin headlands and watched a ship leaving the bay with a small tugboat following.  The wind was steady and cold and we leaned into it as we rode along the span.  At the bridge’s towers, the sidewalk sharply bent around the massive orange columns and the wind changed angles, alternately trying to push us into the tower and then into the fence.  On the lee side of each tower the wind briefly stopped, giving us a moment of quiet warmth before rolling back into the chill crosswind.  After leaving the bridge we went through the tunnel under 101 and descended into Sausalito.

On the first climb in Sausalito, Yana’s chain fell off.  Then it fell off again.  At the top of the hill we stopped to look at the chain but couldn’t figure out what the problem was, so we kept riding.  On the next hill, it fell off a couple more times.  I tried riding her bike, hoping to watch what it was doing, but the chain stubbornly stayed on the bike.  I couldn’t figure out what was causing the problem, so eventually I gave up and just adjusted the front derailleur to rub a little in the lowest gears, hoping the derailleur would physically block the chain from coming off the chainring.  It worked, although Yana had to put up with the rubbing noises this generated for the rest of the trip.

Marin is pretty serious about bicycles and they have a great network of bike paths.  Between Sausalito and Mill Valley, for example, we rode on a wide bike path that cut through the wetlands, far away from the traffic.  It was big and empty and the terrain was open and grassy and beautiful.  We took the path until it ended in Mill Valley, then found a twisty little street called Camino Alto that took us up and over the hill into Larkspur.  After grabbing sandwiches at a grocery store, we continued on through all the small towns along Sir Francis Drake Boulevard.  The sun finally went down as we were climbing the hill outside Fairfax.

The other side of the hill is home to the San Geronimo golf course, and the road here is straight with a gentle down grade.  We were flying along this road through the dusk when I got a flat tire.  We sat down in the grass and I had just started fixing it when a friendly sheriff’s officer (or CHP?  I didn’t get a good look in the dim light) pulled up.  He checked to make sure we were ok, then made sure we knew where we were going and didn’t need any help before driving off.  It didn’t take long to fix the flat, but at this point it was getting pretty dark.  We pushed on, getting back up to speed on the slight downhill.

After passing the golf course the road winds through Samuel Taylor State Park.  The road follows a creek at the bottom of a canyon filled with redwoods.  I’ve driven here during the day and it was beautiful, with cool green light everywhere.  At night, though, it was pitch black under the canopy of trees.  We rode side by side to share each other’s headlights, taking up the entire narrow lane as it wound back and forth through the dark.  Nothing was visible outside the small pool of light from our headlights but we could listen out into the night, hearing the creek and occasionally a small waterfall as we raced past.  We pedaled on and on, curve after curve.  Finally the trees came to an end and we were at the base of the final hill.  A short climb got us to the top of Bolinas Ridge, right above the town of Olema.  Nothing but a quick descent between us and bed.

[Stats: 40 miles, 4.5 hours including supper]

Saturday

Saturday morning we were hungry and tired.  After a delicious breakfast we opted for an easy day, starting with a short ride to the farmer’s market in Point Reyes Station.  This was a small-town farmer’s market, with only a couple dozen vendors but great selection and just the right amount of quirkiness.  We were sadly too late to catch the cooking demonstration (wish our farmer’s market had that!), but not too late to eat an early lunch.  We ate some wonderfully unhealthly grilled cheese sandwiches made with local cheese.

After lunch we meandered over to Shell Beach in Inverness.  A short climb up Camino Del Mar brought us to a tiny parking lot on a hill above the beach.  There was a trail snaking down through the forest to the water which was rideable assuming a little mountain biking experience.  The switchbacks descending through the dense foliage reminded me a little of some tropical hikes in Hawaii.  At the bottom of hill the trail hit the beach and turned to sand.  Not wanting sand in our bikes or our biking shoes, we switched to sandals and parked the bikes against a hill. Shell Beach is on a small cove facing Tomales Bay so the water is very calm, not at all like the pounding waves out on Point Reyes Beach. We sat on the sand, watching children wading in the cold water and watching boats go by on the bay.

We normally could have stayed at the beach for hours, but we didn’t have anything to lay down on and our thin biking clothes weren’t enough to protect us against the chilly breeze, so we decided it was time to do more riding and headed for Mt. Vision.  The road up Mt. Vision was steep and rough.  The pavement was not broken or cracked, just rough so the whole bike vibrated as it crawled up the hill.  The road was narrow, too, without even a centerline. We had started in trees but near the top left them behind and rode through rolling hills covered with low bushes.  It was beautiful up here, with small ponds and views of Drake’s Bay down below.  The road ended without ceremony at a small power station for the nearby aircraft navigation beacon.  Weather changes quickly at Point Reyes, and as we turned around we noticed there were already more clouds forming below us; the afternoon fog was starting to form already.  We had a quick descent down through the cold ocean air, the rough pavement rattling us and our bikes.  By the bottom of the hill our hands hurt from squeezing the brakes and tingled from the cold and vibrations.

By the time we got back to Inverness we were hungry again.  Again!  It was amazing how we were continually hungry.  Cycle touring seems to require almost constant eating.  The Busy Bee Bakery was open and we’d been wanting to try their food for several years (somehow they had always been closed when we drove by).  The inside of the bakery was small and cozy, with small tables by the windows.  It would be a wonderful place to wait out a winter storm with a cup of tea and a scone, but since we were still warm and sweaty from riding we enjoyed our pastries on the bench out front.  After finishing our snack, we headed back to the inn for showers before dinner.  We were done with riding for the day, so we walked to the Olema Farmhouse where we enjoyed entirely too much food.

[Stats: 30 miles, 6 or 7 hours including many stops]

Sunday

Sunday morning it was time to get on the bikes and head home.  We opted to ride home via a slightly different route from the one we had arrived on: instead of leaving Olema via Sir Francis Drake Boulevard, we rode through Point Reyes Station then out towards Nicasio.  The road follows the creek through a small canyon and around the base of Black Mountain before wrapping around Nicasio Reservoir.  This is really beautiful country in July, with dry golden grass on all the hills and wonderful blue skies.  The hills by Nicasio were open and empty as we rolled past, then as we joined back up with Sir Francis Drake Boulevard the land started getting more populated and built up as we returned to the city.  Soon we entered Fairfax and were back to city riding, leaving the country riding behind.

While eating pizza in Fairfax, we noticed people kept walking by on the sidewalk with ice cream cones.  They were all coming from the same direction so after we finished eating we headed up the street.  Sure enough, there was a small ice cream shop a few stores down, which we never would have found except for the fact that their ice cream cones were very effective advertisements.

Somewhere between Mill Valley and Sausalito we started seeing tourists on their rented bicycles.  As we rode crowds kept getting thicker and thicker until, by the time we got to the Golden Gate bridge, the bike route was clogged with mobs of tourists swerving all over the place.  If you want to ride over the Golden Gate, I heartily recommend you do not do it on a Sunday afternoon.  The crossing was much more enjoyable Friday evening when we mostly had it to ourselves.  I finally managed to jump on the rear wheel of a faster rider and let him clear a path through the slower cyclists.

The ride from the bridge to Caltrain was much more exciting in this direction.  Because of the layout of the one-way streets, we were one street over from where we rode on Friday, and because of where the hills are we had quite a bit of downhill riding.  This was great because it meant we were as fast as the cars, and faster than the buses (several of which we passed).

Our tiredness caught up with us on the train ride home.  Neither of us had the energy to talk so we both read news and blogs on our phones.  By the time we arrived in Sunnyvale we were both thankful that we lived only a few minutes from the station.

[Stats: 50 miles, I'm not sure how long it took.  Total mileage for the weekend: 120 miles]

Appendix: Gear and Tips

I was very pleased with my Detours Toto Panniers.  I appreciate their simple, clean design.  I also found them very usable.  They are held closed by a simple magnetic clasp so it is very easy to open them to get gear.  I was actually able to fish an energy bar out of my pannier while riding!  (One small caveat: the bags I got had sharp screws protruding too far into the interior of the bag.  Detours has pretty sweet customer service, though, and sent me replacement bags)

Low gearing is great for touring.  I was borrowing a friend’s wheel with a 34-tooth cassette, and it was awesome for climbing up hills with a loaded bike.  I’ve since gone out and bought a 32-tooth cassette for my own wheels.  I’m firmly convinced that road bikes should have mountain bike gearing if they are going to be used for touring.

The Marin County Bicycle Coalition sells a bicycle map that was very helpful both while planning our route and while riding.

A towel would have been nice when we were at the beach.  Cycling clothes are not very comfortable beach attire.  Towels are bulky and heavy though, so I’m not sure there is an easy solution to this.

Putting a pair of flip-flops at the bottom of your Carridice saddlebag can give some support and prevent it from bulging down between the bars of the saddlebag support.

Teaching kids how to create a drum machine with Python

I’ve been thinking for a while now about how software engineers can help their communities.  Lawyers have pro bono work.  Engineers and contractors can help build houses for people.  But computer programming is really specialized; most people don’t need custom computer programs.  This spring, though, I found a rewarding way to use my computer science skills: teaching kids how to program. I did this though the Citizen Schools program, which encourages members of the community to share what they know with middle school students.   It is a really neat idea: the kids get to learn things their school probably doesn’t have the expertise (or time) to teach, and the “citizen teachers” get a chance to help the community and work with some fun kids.  The topics which people teach vary widely.  For example, here are some of the topics other people were teaching during this last semester:

So what did I teach?

I showed the kids in my class how to use Python to create a drum machine program which plays various drum sounds when you hit different keys on the keyboard.  For example, pressing S played the snare drum, C played the cowbell, and B was the bass drum.  The finished version of the program had about 20 different drum sounds which the user could play.  There were some colorful graphics (drawn by one of the students) showing which drums were being hit.  The program could record drum loops, letting the user layer more beats on top of the original beat, and could save and load the sequences of beats.  The kids ended up being much better at laying down beats than I was.  At the end of the class, the kids presented the program to their parents & teachers, plus had a field trip to a local cafe to demo their work to the community.

What’s it like teaching a class?

Citizen Schools took care of most of the logistics, provided some training on effective ways to teach, and paired us with advisors who helped us work with the children every week.  This was really helpful for me, because I was a bit lost figuring out how to present computer programming in a way that middle school students would enjoy.  Arturo, my advisor, was super helpful.  He worked with the kids every day so he knew them all, plus he had lots of great ideas for ways to present the material and keep the students’ attention.

The semester I taught was a one hour class per week, for ten weeks.  That’s not very much time, so I had to work really hard to keep the material short and simple so the kids could learn it.  Code is like essays: being terse takes a lot more effort than being verbose.  I definitely spent more time preparing for class than I did teaching it.

The kids all knew how to use computers, thanks to myspace, youtube, etc. but none of them had ever written a computer program before.  For the first several classes, I would project some simple code and have them type it in and run it.  Then I would have them change it or write some similar code.  For example, one week we were making the program play different sounds.  I showed them how to make it play a snare drum sound, then had them figure out how to make it play a bass drum sound, cymbal sound, etc.  They got very good at the repetitive code.  There were some one-off lines of code that I don’t think they ever did understand (a function definition, for example).

It was interesting to watch as they learned how to make the computer do what they wanted it to do.  I was a little worried a few weeks before the final presentation because the kids weren’t able to explain how to make the program play a new sound.  However, when I asked them to code it they knew exactly how to do it.  It turns out they just didn’t know the right jargon to explain what they were doing.  By the end of the semester, they could make simple modifications to the program to change the way it behaved, or to fix bugs in the code.

Would I do it again?

Will I teach another semester?  Yes, I think so.  Although it turned out to be a pretty big time commitment this time, I should be able to reuse my lesson plans the next time around so it should be much easier.  Like I said at the beginning, it is a really good way to use software engineering skills to help the community and it was really cool to see the students figuring out how to modify their programs on their own.  I think that’s reason enough to do it again.

Graphy A Chart Library for Python

In my 20% time at work, I’ve been writing a Python library for generating charts using Google’s Chart API. It is called graphy, and is now available as open source software on code.google.com.

I’ve frequently wanted to visualize data for various projects I’m working on but have been frustrated because the tools I’ve used are too heavyweight for making simple charts. When the opportunity came up to use the Google Chart API, I jumped at the chance to make a chart library I would enjoy using. The basic philosophy of graphy is to let you present your data naturally and then get out of your way.

I’ll give a couple examples of how it is used. If you’re interested, there are more examples in the user guide and in the source code. First, a simple bar chart showing how population has changed over the past 4 decades in three bay area cities:

from graphy.backends import google_chart_api

cities = ('San Jose', 'San Francisco', 'Oakland')
pop_1960 = (200000, 740000, 370000)
pop_2000 = (900000, 780000, 400000)

chart = google_chart_api.BarChart()
chart.AddBars(pop_1960, label='1960', color='ccccff')
chart.AddBars(pop_2000, label='2000', color='0000aa')
chart.vertical = False
chart.left.labels = cities
chart.bottom.min = 0
print chart.display.Img(300, 180)

That snippet gives this chart:

Next an example using a line chart to compare average temperature trends in two US cities:

from graphy.backends import google_chart_api
from graphy import formatters
from graphy import line_chart

# Average monthly temperature
sunnyvale = \
    [49, 52, 55, 58, 62, 66, 68, 68, 66, 61, 54, 48, 49]
chicago = \
    [25, 31, 39, 50, 60, 70, 75, 74, 66, 55, 42, 30, 25]

chart = google_chart_api.LineChart()
chart.AddLine(sunnyvale, label='Sunnyvale')
chart.AddLine(chicago, label='Chicago',
    pattern=line_chart.LineStyle.DASHED)
chart.bottom.labels = ['Jan', 'Apr', 'Jul', 'Sep', 'Jan']

chart.left.min = 0
chart.left.max = 80
chart.left.labels = [10, 32, 50, 70]
chart.left.label_positions = [10, 32, 50, 70]
chart.AddFormatter(formatters.InlineLegend)
print chart.display.Img(350, 170)

Here’s the resulting chart:

Check out the graphy project page for more information, including the full user guide and source code for graphy 1.0, released under the Apache 2 license.

Refining a Game Until it is Fun

I’m crafting an economy game using Python and Google App Engine.  Called Island of Naru, it is a simulation of a small society on a tropical island. The core design revolves around production and trade:

Because terrain affects production, the location of a town matters. A town surrounded by mountains, for example, can’t grow very much corn, while a town surrounded by corn fields can’t mine very much iron ore.  The disparity between locations is what drives the need for towns to trade with each other.  By trading with each other, our hypothetical mining camp and farming town can become much more prosperous than they could on their own.

The previous release of Island of Naru added simple trade: cities that were connected by roads could exchange goods.  The latest version adds simple production: towns near fields will produce food, towns near mountains will produce raw materials, and towns near factories will produce manufactured good.  This change is exciting because it means the core game concept is now playable.  In essence, this is the first version of Naru which actually resembles the game I set out to build.  Now it is possible to start experimenting with the game design, looking for the fun aspects of it and bringing those to the forefront. Much like a rough draft of an essay, the game needs rework and refinement to bring out the best qualities buried inside it. I’ve already done a little exploring with some changes I’ll talk about below, plus I have some half-formed, fuzzier ideas about where the fun may be hiding that I’ll mention at the end.

As soon as terrain-based production was finished, my first thought for improvement was to make the economy more complex by providing ways to enhance production and by adding another resource type: manufactured goods. Production of raw materials can be improved by digging mines in mountains, while irrigating fields increases the amount of food they will produce.  Manufactured goods are only available if you build a factory next to a city. These changes gave the game more depth.

Next I added exploration. I want the player to have to think about where they build their cities, especially the first one.  It should be beneficial to hunt around a little for an ideal site, and I think that with a little tweaking, this can be accomplished now that terrain impacts the city’s production.  I’m hoping that exploration will help enhance the feeling of landing on a new island and looking for a good spot to build.  The island starts out unexplored except for the beach where you came ashore.  You can then explore outward from there.  I tried making the player explore one tile at a time, but I found that it took too much time: most of the player’s clicks were spent exploring instead of building.  That’s not what the focus of the game should be, so I changed the exploration to uncover several squares at a time, which helped.  With exploration, the early game is more interesting because the player has to balance exploring with the need to start a town as soon as possible. 

Finally I tried to tweak the numbers behind the economy so towns could grow to larger, more realistic populations.  This change took more effort than I expected because it uncovered some problems with the way I was calculating demand and the happiness of the population.  Fixing it involved modifying the internals of the supply/demand system to allow more control over the minimum and maximum required amounts for each resource.  This not only fixed the problem, but also gave me more control over the balance of the game, which may be useful later. The new numbers don’t seem glaringly low, so the game feels more realistic now.

Even with these improvements, I feel like the fun is still buried. So where should I look next? I have three guesses. First, I suspect the game needs more depth. There are only three resource types at the moment, for example. The trade is also very simple. A more complicated trading network with bottlenecks and different capacities for different types of roads would be much more interesting to manage.  Right now, once a player connects all the cities with roads, there is nothing else to manage.  There’s no upkeep, improvement, foreign trade, or ports.  I expect adding these details will help a great deal once the game is almost finished, but they should probably wait until the bare skeleton of the game is a little more refined.  You don’t start decorating a house until after the walls are finished being built.

My second guess for making the game more fun is adding a goal. In its current state, Naru is just a toy, not a game.  Sure, the player can invent a goal for themselves, like “highest island population in 100 moves” or “biggest single city” but self-imposed goals aren’t very powerful motivators.  I think imposing some goals and adding a high-score table or two would help add a competitive edge to the game.  I may add a simple goal just to give some direction to the player and avoid confusion about what they are supposed to be doing, but fancier changes like multiple goals or score tracking need to wait until the core idea provides more fun on its own.  High score tables enhance existing fun, they don’t magically make boring tasks fun.

I think the biggest thing hiding the fun is lack of resource constraints on the player.  They can build everything for free, so nothing feels valuable.  For example, the player should have to agonize a little over the perfect location for their first city, but right now there’s no need: if they find a better location later they can always just build a city there.  Similarly for roads: the player should feel a sense of accomplishment when they manage to add a new city to the trading network but since roads are free this isn’t difficult and there’s no sense of accomplishment.  A typical game goes something like this: build a city in the flatlands, build a second city by the mountains, build 4 road segments to connect them, build a factory, uhh, now what? 7 moves into the game the player already has access to every resource. Each new city gets connected to the others in a handful of moves, and the end result is that the player doesn’t spend any time thinking about the trading network.

I’m going to try the standard solution to this problem: gold.  Make the player pay for building cities and roads, so they are more valuable.  I’m not sure what the mechanism will be for getting money in the world.  Sim City had taxes to raise money, Oasis let you search for followers in the desert, Civilization made you use special “settler” units that were difficult to obtain.  Any of these would work; the key thing is that the player has to make choices about what they want to build with limited resources.

If you want to play the game now, even though the fun may still be elusive, go to http://naru.countlessprojects.com.  Feedback is always welcome, of course. You can leave it below.  I’d be especially interested to hear any thoughts about refining game designs to uncover hidden fun within them.

HOWTO: Use science to stop your mirror from fogging

A simple trick to keep your bathroom mirror from fogging up when you take a shower: get a little bit of soap on your hands, add a little bit of water, and rub it onto the mirror.  Try not to rub it around so much that it makes a lot of bubbles, you just want a thin film of soap on the mirror.  If you do it right, the soap film will be very clear so you won’t be able to tell it is there.  If it is a little blurry, try breathing on it to see if it clears up.  Once you have this soap layer, the mirror shouldn’t fog anymore.

Why does this work?  On a clean, non-soapy mirror, the warm moist air from the shower causes condensation on the mirror.  The water condenses into super tiny droplets that refract the light as it reflects off the mirror, preventing a clear reflection.  However, when there is a thin layer of soap on the mirror, it prevents the water from forming droplets.  Instead, the water that condenses stays in nice flat sheets and doesn’t interfere with the light.  The result is a clear reflection.

Yay, science!

(You can also use this to keep your glasses from fogging up when you exercise in cold weather.  My father showed me this trick years ago when we were cross country skiing.)