You are here
Home > Uncategorized > Exploring Options: Linking Redwood Shores and Foster City, Part 2

Exploring Options: Linking Redwood Shores and Foster City, Part 2

In part one of this new series, I have been asking myself whether an automobile link is possible between the two communities via a road connection. Even though the distance is roughly 1,100 feet, I interviewed the Planning Managers for both Redwood City and Foster City (which I will cover in part 3), in which they told me that the cost would be roughly $25,000,000, and it may be difficult to secure the necessary permits to build that bridge. Despite such challenges though, I am looking at developing this bridge as an opportunity, not just to address the congestion concerns along US-101, but also provide SamTrans with an option to develop a more robust and well-connected bus service between the two communities and beyond. In Part 2, I will cover how this bridge can become an instrument to developing a stronger transportation network at the local level — the regional context will be handled later on.
Examining the level of service SamTrans provides to Foster City from Hillsdale Mall in neighboring San Mateo, I notice that Routes 251 and 256 provide semi-adequate service to a community that is highly suburban in nature, with wavy roads, low-floored multi-family homes, and spread out commercial centers. Both routes operate through the same neighborhoods in Foster City, but the order those are served are different:

#element-cd0dcfbf-4d4f-4587-9773-b7cef790fe83 .simple-table-wrapper {
padding: 20px 0;
#element-cd0dcfbf-4d4f-4587-9773-b7cef790fe83 .simple-table {
width: 100%;
border: 1px solid #C9CDCF;
border-spacing: 0;
#element-cd0dcfbf-4d4f-4587-9773-b7cef790fe83 .simple-table td.cell {
border-right: 1px solid #C9CDCF;
border-bottom: 1px solid #C9CDCF;
word-break: break-word;
background-color: #FFFFFF;
width: 33.333333333333%;
#element-cd0dcfbf-4d4f-4587-9773-b7cef790fe83 .simple-table td.cell .paragraph {
width: 90%;
margin: 0 5%;
padding-bottom: 10px;
padding-top: 10px;
text-align: center;
#element-cd0dcfbf-4d4f-4587-9773-b7cef790fe83 tr:first-child td,
#element-cd0dcfbf-4d4f-4587-9773-b7cef790fe83 td:first-of-type {
background-color: #F8F8F8;
#element-cd0dcfbf-4d4f-4587-9773-b7cef790fe83 tr:first-child td .paragraph,
#element-cd0dcfbf-4d4f-4587-9773-b7cef790fe83 td:first-of-type .paragraph {
font-weight: 700;
#element-cd0dcfbf-4d4f-4587-9773-b7cef790fe83 .simple-table tr:last-child td {
border-bottom: none;
#element-cd0dcfbf-4d4f-4587-9773-b7cef790fe83 .simple-table td:last-of-type {
border-right: none;
#element-cd0dcfbf-4d4f-4587-9773-b7cef790fe83 .simple-table .empty-content-area-element {
padding-left: 0px !important;

Service Hours
Hillsdale Caltrain – Foster City Elementary School – US Post Office – Foster City Civic Center – Beach Park Plaza – Martin Cove Shopping Center – Metro Center – Bridgepointe Shopping Center – Hillsdale Caltrain 
From 11:30am to 5:30pm – every 2 hours, with supplemental service during school days
From 5:30pm to 8:15pm – every 60 minutes

​Saturdays: every 2 hours from 8:30am to 7:30pm

Hillsdale Caltrain – Bridgepointe Shopping Center – Metro Center – Foster City Civic Center – Beach Park Plaza – Martin Cove Shopping Center – US Post Office – Foster City Elementary School – Hillsdale Caltrain
From 6:30am to 11:30am – every 60 minutes
From 11:30am to 5:30pm – every 2 hours

​Saturdays: every 2 hours from 7:30am to 8:30pm

function setupElement362031701833008084() {
var requireFunc = window.platformElementRequire || window.require;
// Relies on a global require, specific to platform elements
], function(
) {
var dependencies = null || [];
var platform_element_id = “702688850553606843-1.4.3”;
if (typeof _W.loadedPlatformDependencies === ‘undefined’) {
_W.loadedPlatformDependencies = [];
if (typeof _W.platformElements === ‘undefined’) {
_W.platformElements = [];
if (typeof _W.platformElements[platform_element_id] === ‘undefined’) {
_W.platformElements[platform_element_id] = {};
_W.platformElements[platform_element_id].deferredObject = new $.Deferred();
_W.platformElements[platform_element_id].deferredPromise = _W.platformElements[platform_element_id].deferredObject.promise();
if(_.intersection(_W.loadedPlatformDependencies, dependencies).length !== dependencies.length){
_.reduce(dependencies, function(promise, nextScript){
return promise.then(function(){
return $.getScript(nextScript);
}, $().promise()).then(function(){
if (dependencies.length === 0){
var _ElementDefinition = /**
* This is required for element rendering to be possible
* @type {PlatformElement}
(function() {
var SimpleTable = PlatformElement.extend({
initialize: function() {
setSizes: function() {
var sizes = this.settings.get(‘tableSizes’);
// if the # of columns isn’t the size of the array of lengths, ignore it.
if (sizes && sizes != “default” && this.settings.get(‘columns’) == sizes.length) {
var columns = this.$(‘tr’).each(function(index, value) {
var cells = $(value).find(‘td’).each(function(index2, value2) {
$(value2).css(‘width’, sizes[index2] + ‘%’);
return SimpleTable;
if (typeof _ElementDefinition == ‘undefined’ || typeof _ElementDefinition == ‘null’) {
var _ElementDefinition = PlatformElement.extend({});
var _Element = _ElementDefinition.extend({
initialize: function() {
// we still want to call the initialize function defined by the developer
// however, we don’t want to call it until placeholders have been replaced
this.placeholderInterval = setInterval(function() {
// so use setInterval to check for placeholders.
if (this.$(‘.platform-element-child-placeholder’).length == 0) {
}.bind(this), 100);
_Element.prototype.settings = new PlatformElementSettings({“columns_each”:[{“columns_index”:0},{“columns_index”:1},{“columns_index”:2}],”rows_each”:[{“rows_index”:0},{“rows_index”:1},{“rows_index”:2}],”columns”:3,”rows”:3,”style”:”top”,”alignment”:”center”,”titleColor”:”#F8F8F8″,”backgroundColor”:”#FFFFFF”,”borderColor”:”#C9CDCF”,”tableSizes”:[13,52,33]});
_Element.prototype.settings.page_element_id = “362031701833008084”;
_Element.prototype.element_id = “cd0dcfbf-4d4f-4587-9773-b7cef790fe83”;
_Element.prototype.user_id = “3466466”;
_Element.prototype.site_id = “484589221176252212”;
_Element.prototype.assets_path = “//”;
new _Element({
el: ‘#element-cd0dcfbf-4d4f-4587-9773-b7cef790fe83’
if (typeof document.documentElement.appReady == ‘undefined’) {
document.documentElement.appReady = 0;
if (document.documentElement.appReady || (window.inEditor && window.inEditor())) {
} else if (document.createEvent && document.addEventListener) {
document.addEventListener(‘appReady’, setupElement362031701833008084, false);
} else {
document.documentElement.attachEvent(‘onpropertychange’, function(event){
if (event.propertyName == ‘appReady’) {

As you notice, there is no bus service provided to Foster City on Sundays or holidays, making it a transit desert when some people need to access commercial areas like Costco, Bridgepointe Shopping Center, and more from San Mateo.​

Historically, Foster City also had direct service to San Francisco, also operated by SamTrans, called Route FX. It operated weekday peak periods only, with morning trips to San Francisco’s Financial District, afternoons to Foster City. It was subsequently discontinued in 2009, citing low ridership. The FX was succeeded by a shorter shuttle service, called Route 359. The 359 operated between Foster City and Millbrae BART/Caltrain station during peak periods, in which those were timed to BART and Caltrain services (mornings to Millbrae, afternoons to Foster City). It was, however, short lived and was subsequently replaced by a free shuttle operate by, a service provided by San Mateo County, operating with similar schedules to the 359.

Through my interview with Curtis Banks, Community Development Manager for Foster City, I have discovered that the community has been developing well, despite the absence of the bridge. Mr. Banks even told me that it was a “good thing that connector was not built” since, in his opinion, it would have further contributed to the congestion problem now contained along US-101 and CA-92. However, he notes that despite the missing connection, Foster City has seen fast-paced growth through the years with more multi-family developments, large businesses like Visa and Gilead headquartered in the island community, and all the while, congestion remains surprisingly light. Mr. Banks also commented on SamTrans’ lack of Sunday and holiday service in Foster City, saying that it would be best to ask the agency if they foresee sufficient ridership to justify such service since at the moment, the ridership base is quite low.
Indeed, while the bridge concept can be challenging, I highly believe it will “complete the missing link” between Foster City and Redwood Shores, such that it will provide a much faster commute for pedestrians, cyclists, and drivers to use Edgewater Boulevard as an alternate to US-101. Aaron Atkins of the Community Development Department of Redwood City, however, disagrees with that sentiment, noting the $25 million price tag, consultations with the Bay Conservation and Development Commission (BCDC), and filing environmental impact reports and statements as it crosses a protected habitat along the Belmont Slough. With those challenges in mind, I have to consider alternatives to the idea, including a $10 million pedestrian and bike bridge which will shorten walk and bike commutes between the two communities, or develop an alternative road plan that will link the two with minimal environmental and social impacts.
Ideally, if the bridge was developed and fully constructed, I could then propose at least four new routes to SamTrans which can provide additional transit service to both Foster City and Redwood City, with additional services linking San Mateo, Belmont, San Carlos, and San Francisco. With the gap of around 1,100 feet, the bridge would then give SamTrans an opportunity to develop a more robust transit service between those communities, such that it will not be confined to using just Hillsdale Caltrain for its Foster City services (despite the fact that Route 250 comes close to the city from San Mateo). My route ideas are presented below:
Local transit services within Foster City, Redwood Shores, and environs:

  • Route 251 (violet) – Hillsdale Caltrain to Foster City
  • Route 261 (green) – Contientals & Lyall (Belmont) to Foster City via Redwood Shores
  • Route 291 (blue) – San Mateo Medical Center to San Carlos Caltrain via Foster City and Redwood Shores

Alternate ideas can be made for all routes, such that Route 251 can operate as Hillsdale Caltrain to Continentals & Lyall in Belmont via Redwood Shores, while maintaining the alignment of Route 291.

Route FX, a commuter service from San Francisco, will follow the same alignment when it was discontinued in 2010. However, in this rendition, it will be further extended to serve Redwood Shores directly via the new bridge, bypassing US-101 when it gets congested during the rush hours. This connection will provide a viable alternative for residents traveling between San Francisco, Foster City, and Redwood Shores by providing a one-seat service along the congested corridor. Alternative routes can be had by operating via Bayshore Blvd and Potrero Avenue in San Francisco (similar to Route 292), allowing more pickups and dropoffs along both corridors.

In the next segment, I will look at the recommendations made by Foster City and Redwood City to determine how best to design a pedestrian and bike bridge that will complement their trail network. In addition, I will explain further my observations made from the interviews I conducted lately and explore alternatives to the bridge idea in terms of providing better transit options to both communities.

Leave a Reply