Request for Proposals: Front End Web Development Services

Happy New Year developers!

Metro is seeking proposals for Front-End WebDev services, we’ve placed the posting on Krop. Interested or know anyone who may be interested, see description below:

Request for Proposals: Front End Web Development Services

Metro Communications is seeking proposals for Front End Web Development Services to help migrate our current websites / systems offsite. The qualified contractor will work on a project basis to assist Metro’s Web Team make our websites and digital tools “responsive” for desktop, touchpad and mobile devices; and update our web files to utilize HTML5 and CSS3. You will provide formatting and styling for our various interactive resources that include websites, mobile websites, online applications, RSS and XML feeds, and email templates.

We seek a contractor with deep technical knowledge of web and desktop applications, user interface and interaction design, and modern web technology (HTML5, CSS3, Javascript, JS Toolkits, UI Libraries, and UI Toolkits).

Services will be provided as an independent contractor and do not include employee benefits.

Background

Los Angeles County Metropolitan Transportation Authority (Metro) is unique among the nation’s transportation agencies. It serves as transportation planner and coordinator, designer, builder and operator for one of the country’s largest, most populous counties. More than 9.6 million people – nearly one-third ofCalifornia’s residents – live, work, and play within its 1,433-square-mile service area.

Metro currently utilizes the Django (Python) web framework, and various Dojo / jQuery Javascript components. We adhere to ADA Section 508 Guidelines and accommodate depreciated browsers.

Interested parties may contact Project Manager below for additional background materials to develop your proposals (overview of CSS and JS files, wireframes and number of website page templates, wireframes for new feature).

Scope of Work

  • Analyze existing HTML templates, CSS files, and Javascript implementation; make recommendations to keep front-end technology up-to-date, adopting HTML5 and CSS3, minimize Javascript where possible.
  • Overhaul HTML templates, CSS files, and Javascript files to provide responsive feedback for desktop, touchpad and mobile devices. (I.E. the website presentation should detect and accommodate to the user’s preferences of a desktop, touchpad or mobile platform.)
  • Provide front-end development for new interactive features, page components, web modules, and web applications.
  • Provide QA and debugging for cross-browser and cross-platform testing; ensure formatting is ADA/Section 508 Compliant and accommodates depreciated browsers.
  • Collaborate with Metro’s web team and back-end developers to ensure full integration into web framework.
  • Meet with web team and Communications staff for project kickoffs, reviews, and/or file delivery.

Deliverables

Phase 1

  1. Analysis report of Metro’s current front-end implementation (HTML templates, CSS files, Javascript implementation, and WordPress templates);
  2. Project plan/schedule for overhaul of Metro’s front-end implementation (HTML templates, CSS files, Javascript, and WordPress templates) to provide responsive feedback for desktop, touchpad and mobile devices, and upgrade to HTML5 and CSS3. Plan should include QA and troubleshooting and debugging;
  3. Front-end development technical files for entire website migration. This includes all master HTML page templates, CSS, and Javascript files for web framework integration (they should be Section 508 Compliant, accommodate depreciated browsers, QAed, and debugged). A Quality Assurance (QA) report should accompany delivery of HTML page templates, CSS files, Javascript files.
  4. Front-end development technical files for new website feature: Enhanced Line and Station/Stop Pages. This includes all master HTML page templates, CSS, and Javascript files for web framework integration (they should be Section 508 Compliant, accommodate depreciated browsers, QAed, and debugged). A Quality Assurance (QA) report should accompany delivery of HTML page templates, CSS files, Javascript files.
  5. Format data-table templates (schedule timetables) for various outputs, including digital for desktop, mobile, and other handhelds; print for bus stop inserts of varying sizes. This includes all master HTML page templates, and CSS files for web framework integration (they should be Section 508 Compliant, accommodate depreciated browsers, QAed, and debugged). A Quality Assurance (QA) report should accompany delivery of HTML page templates, CSS files.

Phase 2

Maintenance of all items delivered, along with ongoing front-end development services as needed. Services may include maintenance and new development:

  • Updating technical formatting files (HTML templates, CSS files, Javascript) due to newly discovered bugs, errors, software updates;
  • Modifications to site-wide design elements as global navigation, user interface controls, global footer, etc.

Compensation & Terms

  • Metro will pay against submitted invoices per terms of the contract:
    • Phase 1: Invoices based on delivery of items 1, 2, 3, 4, 5
    • Phase 2: Invoices based on hourly rate
  • Independent Contractor’s compensation shall commensurate with qualifications and experience and subject to negotiation with Metro.
  • Insurance is required to work at Metro; specifics will be discussed at time of selection.
  • Services will be provided as an independent contractor and does not include employee benefits.

Period of Performance

  • Independent contractor shall complete work by June 30, 2013, unless this Contract is terminated earlier or extended by Metro, as provided in the Contract.
  • Phase 1 should be complete within 5 months of award of contract.
  • Metro may extend the Period of Performance at its sole discretion by exercising up to two one year extensions by issuance of an appropriately funded modification to the Contract.
  • Funding for this Contract is based upon availability of funds as determined by Metro’s fiscal budget which runs from July 1 through June 30 of each fiscal year. If funding is not approved for any subsequent fiscal year during which the Contract is in effect, Metro will issue a stop work notice.

Proposal Requirements

Interested parties are requested to submit the following materials via email only:

  • Qualifications and experience of contractor
  • Samples and descriptions of previous Front End Web Development work (please submit sample code and links)
  • Phase 1 fee proposal (fee per each deliverable)
  • Phase 2 hourly rate

Evaluation Criteria

Note: the most highly qualified candidates may be invited for an interview.

  • Qualifications and background – 37.5%
  • Technical Experience – 37.5%
  • Fee Proposal – 25%

Proposal Deadline

Submit proposal requirements via email only as outlined above by Monday, January 23, 2012; 10AM PST.

Attn:                Lan-Chi Lam, Interactive Design and Strategy Manager
Subject:           Front End WebDev Services
Email:              laml@metro.net
Questions:       You may contact Lan-Chi Lam with questions via email. Answers will be provided by end of the week in a batch (grouped).

Please, no off-shore or job placement services.

Email problem remedied

Happy new year to all!

I apologize on behalf of Metro for any trouble you may have experienced with the site since we relaunched last month. Metro Developer has been moved to a server with the ability to send email. That means that we may now send you password updates and reminders as well as keep you informed of the latest developments on the site.

Please let me know if you have any trouble with the site and I’ll do my best to put it right again.

Thanks!
-Doug


Douglas Goodwin

Developer for Metro Creative Services
Los Angeles County Metropolitan Transportation Authority
goodwindo@metro.net

no more development?

So, none of the URLs seem to work- for example, developer.metro.net/tm/carriers.php It’s been a while since I’ve been here, so I am assuming that it’s been dead for a long time? Even the link to additional resources doesn’t work- http://developer.metro.net/intro/linksresources/

technical difficulties

Hi everybody, Some of you have noticed some problems with the email on the site. I’m sorry to report that we’re have some trouble with both sending and receiving emails. We’ll be working on these problems today and will keep you updated on our progress. The best way to reach us in the meantime is to use this address: metrodeveloper -at- gmail -dot- com

Transit Informatics to be Introduced at NCTR’s 2009 GIS in Transit Conference

As part of my graduate degree, I’m presenting Transit Informatics and efforts such as this at the 5th annual GIS in Transit Conference in Tampa Bay, November.

Nice start

Nice start! I’ve test driven the trip planner and have a few comments. Unfortunately, the comment system is broken for me (see below), so let me try this avenue.

When calling a schedule query in the morning(PT-zone), a schedule query only returns PM departures. Example, issued on Saturday June 20 2009 at 8:58AM PT-zone:

http://developer.metro.net/tm/schedule.php?apikey=MYKEY&route=1194&stop_on=15839&stop_off=16474

The resulting departures are way in the future:

<------------- snip -------------->
N-MEMORIAL PARK STATION-AT
01:09PM
01:21PM
01:33PM
01:45PM
01:57PM
−
E-LAKE STATION-AT
01:11PM
01:23PM
01:35PM
01:47PM
01:59PM
<------------- snip -------------->

Queries sent in the afternoon or shortly after midnight (I suspect to the end of the operational day) seem to be correct.

Generally, I would recommend the use of an abstract time format that does not include AM/PM or other formatting.

Other feeds that include time data use the following:

  • TriMet web services: time in millis since midnight 1, January 1970 UTC (Basis in Java, used by TriMet’s web service)
  • weather.gov/xml: A 24h time format with UTC as reference, e.g.: 2004-04-27T25:00

(I am using 25h transit format as an example)

I’d prefer TriMet’s format – it’s easy to process in Java as Java time/date conversions take the timezone of the processor in consideration, including daylight savings time and the differences involving the handling of daylight savings time around the globe.

I’ve run into a strange problem on this web site: After deleting a post, it is no longer possible to post; error message:

“sorry, your note appears to have been empty!
Please use your back button to return to the previous page and try again ”

This regardless of web browser, i.e. it seems this is a back end, not a caching problem.

Friday Update

It has been over a week since we launched the Metro Developer site and I wanted thank everyone for their comments and feedback–keep them coming! Here’s also an update on some of our issues:

Terms and Conditions

I want to acknowledge the comments developing around our Terms & Conditions on this site and other transit developer sites (yes, I try to keep up with the discussion). I think the terms in question are valid, but would like to hear more before pulling together Metro staff to discuss amending legal language.

Site Bugs

If you haven’t noticed, we’re utilizing Pinax to run this site, and will be utilizing Django as the framework for our main site, metro.net (which we are rebuilding at this minute). Both platforms are very powerful and full-feature. As a start, we’ve turned off most of the features and opted for mastering the basic blog and wiki tools. From time-to-time, you’ll notice small tweaks to the user interface and functionality–that’s just us. I’ll ask Doug Goodwin, our back-end developer, to post an entry worthy for you to discuss on this topic.

The Dev site also got a shout-out from Google LatLong – Google Earth and Maps team’s blog.

Running Boards

This SQL will allow you to make a running board of a particular block.

SELECT route_id, gtfs_trips.trip_id, departure_time, stop_name, stop_headsign
FROM gtfs_trips
LEFT JOIN gtfs_stop_times ON gtfs_stop_times.trip_id = gtfs_trips.trip_id
LEFT JOIN gtfs_stops ON gtfs_stops.stop_id = gtfs_stop_times.stop_id
WHERE block_id = {block_id}
GROUP BY gtfs_trips.trip_id
ORDER BY departure_time, stop_sequence;

On my original application “Where’s the Bus”, if you now click on the block ID, it will return the running board for a particular bus. The running board is the overall assignment for a particular piece of equipment from the time it pulls out of the garage (Division) to the time it pulls in. It’s an interesting way to see how Metro schedules their buses. Over the past decade, Metro has been doing a lot more of scheduling between different lines.

This task also gave me a little more understanding why Metro did the block_id’s the way they did. This is because they did a very smart thing. They put the schedule data of the current schedules as well as the schedules for the next shakeup (schedule change) in July. In order to do this, the trip_id and block_id’s had to be distinctive.

My idea to Metro is to still use the line and run numbers but to put a static value as the first digit of the block_id. For example in the January shake up, Line 150 bus run 12 could be encoded as 2150012 and then in the next shakeup, it can be 3150012. Just my suggestion here.

I do see some bugs in my program where it comes to handling of school trippers (same bus run doing different things different days).. this could be fixed with bringing the calendar functionality in. More fun to come!

First GTFS application!

Michichan just posted our first application! Have a look here:

http://developer.metro.net/blog/post/michichan/2009/06/wheres-the-bus/

Bravo, Michichan!

Michi’s first LACMTA GTFS application: Where’s the bus??

I have designed a very simple application that is intended to show the next “timepoint” for every bus on a particular route.

It uses a pretty simple SQL statement:

SELECT gtfs_stops.stop_name, gtfs_stops.stop_lat, gtfs_stops.stop_lon,
gtfs_stop_times.departure_time, gtfs_stop_times.trip_id, gtfs_stop_times.stop_headsign,
gtfs_trips.route_id, gtfs_trips.block_id FROM gtfs_trips
LEFT JOIN gtfs_stop_times ON gtfs_trips.trip_id = gtfs_stop_times.trip_id
LEFT JOIN gtfs_stops on gtfs_stops.stop_id = gtfs_stop_times.stop_id
LEFT JOIN gtfs_calendar ON gtfs_trips.service_id = gtfs_calendar.service_id
WHERE route_id = '(route number)'
AND departure_time >= CURTIME()
AND departure_time <= ADDTIME(CURTIME(),'0:05:00') AND gtfs_calendar.(day of the week) = 1 AND start_date <= CURDATE() AND end_date >= CURDATE()
GROUP BY block_id;

This SQL statement will show the next timepoints for (route number) on the the specified (day of the week). Yes, I know it’s pretty crude, but it works.

You can play with this toy at:
http://st.recnet.com/metro_next_bus.php

There is a pull down that shows all of the SFV sector routes (the descriptions were manually entered), an issue that I have with the routes.txt file. But you can send a value of rte and a valid route_id using a GET statement and it will return routes outside the SFV. It does not work for rail (801-805) because the Metro Rail trips are showin without a block_id. Rail will return just a single trip on the route.

ould use an SQL sort to rearrange the headsigns in order so you have an idea what direction the buses are going. I would have preferred if Metro was to include the direction_id in trips.txt which is a simple 0 or 1 value that would indicate a direction. In this case, I could just make two SQL calls and get each direction listed separately. Using direction_id would also make the data compatible with other tools including TriMet’s Time Table Maker.

Without the direction_id data, I would have to manually build a table based on headsign readings what direction a bus is going and even with that, there may be a few possibilities that buses going in two different directions can have the same headsign (such as a mid-route terminal).

This little app does take into consideration that some trips only operate certain days of the week (school trippers) but I do not believe that the calendar.txt gives the ranges of the school year. Therefore, there’s a possibility that it will display a trip that may not actually be running since it’s a school holiday. MTA also has school holiday trips “H”, which may be the school trip with some deviation on the schedule. These are very complex, but on some routes with infrequent service and school trippers (645 comes to mind) could cause confusion. Right now, I am not calling to the calendar_dates file to get the exceptions (holiday service). Therefore, transit holidays right now will show just like regular weekdays.

With that said, my wish list for Metro GTFS data improvements include:

  • Having the block_id be the known line-run numbers instead of a distinct number.
  • Include run numbers for the trains in block_id.
  • Use the direction_id field in trips.txt.
  • Move headsign data to trips.txt and only use stop_times.txt when there is a mid-line sign change. (such as the 242/243)
  • At the end of a trip at the last timepoint in stop_times.txt, set drop_off_type to 1. This will indicate the end of the route. It will also prevent apps from identifying that timepoint as a pick-up and showing two times at a particular stop (one for when the bus arrives from the previous trip and the time it departs for the next trip, hence, recovery time).
  • Better descriptions of the routes in routes.txt

As a fan of Metro scheduling (and someone who once got turned down for the Schedule Maker I position), I appreciate the publication of the GTFS data feed.

Text Only Options

Top of page


Text Only Options

Open the original version of this page.

Usablenet Assistive is a UsableNet product. Usablenet Assistive Main Page.