CINXE.COM

About Our Team and Firm - Interline Technologies

<!DOCTYPE html> <html lang="en" data-color-scheme="system" class="scroll-smooth"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>About Our Team and Firm - Interline Technologies</title> <meta name="HandheldFriendly" content="True" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="theme-color" content="#F3A556"> <link rel="preconnect" href="https://fonts.googleapis.com"> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> <link rel="preload stylesheet" href="https://fonts.googleapis.com/css2?family=DM+Sans:wght@300..800&display=swap" as="style" onload="this.onload=null;this.rel='stylesheet'" crossorigin> <style>body { --font-headings: 'DM Sans', sans-serif; }</style> <style>body { --font-body: 'DM Sans', sans-serif; }</style> <script type="module" src="https://www.interline.io/assets/built/app.js?v=c3af3c4b5d"></script> <link rel="stylesheet" type="text/css" href="https://www.interline.io/assets/built/app.css?v=c3af3c4b5d" /> <script> let preferredTheme = localStorage.getItem('PREFERRED_COLOR_SCHEME') || `system`; document.documentElement.setAttribute('data-color-scheme', preferredTheme); // Global values needed const themeGlobal = { siteUrl: 'https://www.interline.io', currentPage: parseInt(''), nextPage: parseInt(''), nextPageLink: '', maxPages: parseInt(''), lastPage: `` === `` ? true : false, postsPerPage: parseInt('12'), total: parseInt(''), searchJobsFeaturedFirst: false } function hexToRgb(hexColor) { if (hexColor.slice(0, 1) === '#') { hexColor = hexColor.slice(1); } if (hexColor.length === 3) { hexColor = hexColor.split('').map(function (hex) { return hex + hex;}).join(''); } const r = parseInt(hexColor.substr(0,2),16); const g = parseInt(hexColor.substr(2,2),16); const b = parseInt(hexColor.substr(4,2),16); return [r,g,b] } // Get contrast color; function getColorContrast(hexColor) { const rgb = hexToRgb(hexColor); let yiq = ((rgb[0] * 299) + (rgb[1] * 587) + (rgb[2] * 114)) / 1000; const colorContrast = (yiq >= 128) ? 'hsl(0 0% 0%)' : 'hsl(0 0% 100%)'; // return return colorContrast }; function hexToHsl(hexColor) { const rgb = hexToRgb(hexColor); // Make r, g, and b fractions of 1 const r = rgb[0]/255; const g = rgb[1]/255; const b = rgb[2]/255; const max = Math.max(r, g, b), min = Math.min(r, g, b); let h, s, l = (max + min) / 2; if ( max == min ) { h = s = 0; } else { let d = max - min; s = l > 0.5 ? d / (2 - max - min) : d / (max + min); switch(max){ case r: h = (g - b) / d + (g < b ? 6 : 0); break; case g: h = (b - r) / d + 2; break; case b: h = (r - g) / d + 4; break; } h /= 6; } return [Math.round(h * 360),Math.round(s * 100),Math.round(l * 100)] } function setBrandHSL(hex) { const colorHsl = hexToHsl(hex) document.documentElement.style.setProperty('--color-brand-hsl', `${colorHsl[0]} ${colorHsl[1]}% ${colorHsl[2]}%`); document.documentElement.style.setProperty('--color-brand-contrast', getColorContrast(hex)); } setBrandHSL("#F3A556"); </script> <meta name="description" content="About Interline, our team, and our firm&#x27;s capabilities."> <link rel="icon" href="https://www.interline.io/content/images/2024/09/favicon.ico" type="image/x-icon"> <link rel="canonical" href="https://www.interline.io/about/"> <meta name="referrer" content="no-referrer-when-downgrade"> <meta property="og:site_name" content="Interline Technologies"> <meta property="og:type" content="website"> <meta property="og:title" content="About Our Team and Firm"> <meta property="og:description" content="About Interline, our team, and our firm&#x27;s capabilities."> <meta property="og:url" content="https://www.interline.io/about/"> <meta property="article:published_time" content="2023-08-29T22:15:11.000Z"> <meta property="article:modified_time" content="2024-09-03T22:36:13.000Z"> <meta name="twitter:card" content="summary"> <meta name="twitter:title" content="About Our Team and Firm"> <meta name="twitter:description" content="About Interline, our team, and our firm&#x27;s capabilities."> <meta name="twitter:url" content="https://www.interline.io/about/"> <meta name="twitter:label1" content="Written by"> <meta name="twitter:data1" content="Drew Dara-Abrams"> <script type="application/ld+json"> { "@context": "https://schema.org", "@type": "Article", "publisher": { "@type": "Organization", "name": "Interline Technologies", "url": "https://www.interline.io/", "logo": { "@type": "ImageObject", "url": "https://www.interline.io/content/images/2023/10/Interline-logo-full-1.png" } }, "author": { "@type": "Person", "name": "Drew Dara-Abrams", "image": { "@type": "ImageObject", "url": "https://www.gravatar.com/avatar/4bac2feda69c215e53b72757902c7a5e?s=250&r=x&d=mp", "width": 250, "height": 250 }, "url": "https://www.interline.io/blog/author/drew/", "sameAs": [] }, "headline": "About Our Team and Firm", "url": "https://www.interline.io/about/", "datePublished": "2023-08-29T22:15:11.000Z", "dateModified": "2024-09-03T22:36:13.000Z", "description": "We founded Interline Technologies in 2018 in the San Francisco Bay Area, and we continue to serve our customers from here, along with a team that&#x27;s distributed across the United States.\n\n\nPrincipals\n\n\n\n\n\nDrew Dara-Abrams\n\n\n\n\n\nDrew Dara-Abrams Ph.D. is a co-founder and Principal at Interline Technologies. At Interline, Drew manages the firm&#x27;s consulting engagements and product development. Drew&#x27;s previous experience spans both industry and academic labs in transportation and geography.\n\nHis exper", "mainEntityOfPage": "https://www.interline.io/about/" } </script> <meta name="generator" content="Ghost 5.109"> <link rel="alternate" type="application/rss+xml" title="Interline Technologies" href="https://www.interline.io/blog/rss/"> <script defer src="https://cdn.jsdelivr.net/ghost/sodo-search@~1.5/umd/sodo-search.min.js" data-key="7afadadffdaf89f0b9d751f7f4" data-styles="https://cdn.jsdelivr.net/ghost/sodo-search@~1.5/umd/main.css" data-sodo-search="https://interline.ghost.io/" data-locale="en" crossorigin="anonymous"></script> <link href="https://www.interline.io/webmentions/receive/" rel="webmention"> <script defer src="/public/cards.min.js?v=c3af3c4b5d"></script><style>:root {--ghost-accent-color: #F3A556;}</style> <link rel="stylesheet" type="text/css" href="/public/cards.min.css?v=c3af3c4b5d"> <meta name="fediverse:creator" content="@interline@mastodon.social"> <script defer data-domain="interline.io" src="https://plausible.io/js/script.file-downloads.hash.outbound-links.pageview-props.tagged-events.js"></script> <script>window.plausible = window.plausible || function() { (window.plausible.q = window.plausible.q || []).push(arguments) }</script> <style> footer .is-subitem { margin-left: 1.25em !important; font-weight: lighter !important; } /* remove backticks in blog posts */ .ghost-content code:before, .ghost-content code:after { display: none; } </style> <link rel="preconnect" href="https://fonts.bunny.net"><link rel="stylesheet" href="https://fonts.bunny.net/css?family=ibm-plex-serif:400,500,600"><style>:root {--gh-font-heading: IBM Plex Serif;}</style> </head> <body class="page-template page-about gh-font-heading-ibm-plex-serif subpixel-antialiased relative overflow-x-hidden bg-bgr text-typ" x-data="{ menuOpen: false }" :class="menuOpen ? 'overflow-hidden' : 'overflow-y-auto'" data-user="visitor" @keydown.escape="menuOpen = false" @keydown.cmk.k="document.querySelector('[data-ghost-search]').click()" x-init="navigator.platform.includes('Win') && document.body.classList.add('is-win')" > <header class="px-4 sm:px-6 text-typ whitespace-nowrap sticky top-0 z-[1000] bg-bgr lg:bg-transparent" data-header x-init="renderSubmenus();window.pageYOffset > 50 ? isScrolledOnload = true : null" x-data="{ isScrolled: false, isScrolledOnload: false }" @scroll.window="isScrolled = (window.pageYOffset < 50) ? false : true;window.pageYOffset <= 50 ? isScrolledOnload = false : null" :class="[isScrolled ? 'is-scrolled' : '',isScrolledOnload ? 'is-scrolled-onload' : '']"> <div class="max-w-container mx-auto py-4 md:py-6 flex items-center justify-center gap-4 relative before:content-[''] before:absolute before:bottom-0 before:left-0 before:w-full before:h-[1px] before:bg-fading"> <div class="flex-1 flex justify-start lg:transition-move duration-300" data-header-brand> <a class="" href="https://www.interline.io" data-brand> <picture data-logo='dark'> <source srcset="/content/images/size/w100/format/webp/2024/11/interline-logo-white-on-transparent-2.png 100w, /content/images/size/w320/format/webp/2024/11/interline-logo-white-on-transparent-2.png 320w, /content/images/size/w640/format/webp/2024/11/interline-logo-white-on-transparent-2.png 600w" sizes="(max-width: 800px) 200px, 320px" type="image/webp" > <img class="h-[var(--logo-h-mobile)] w-[var(--logo-w-mobile)] md:h-[var(--logo-h-desktop)] md:w-[var(--logo-w-desktop)]" loading="eager" srcset="/content/images/size/w100/format/webp/2024/11/interline-logo-white-on-transparent-2.png 100w, /content/images/size/w320/format/webp/2024/11/interline-logo-white-on-transparent-2.png 320w, /content/images/size/w640/format/webp/2024/11/interline-logo-white-on-transparent-2.png 600w" sizes="(max-width: 800px) 200px, 320px" src="/content/images/size/w30/2024/11/interline-logo-white-on-transparent-2.png" alt="Interline Technologies" /> </picture> <picture data-logo='default'> <source srcset="/content/images/size/w100/format/webp/2023/10/Interline-logo-full-1.png 100w, /content/images/size/w320/format/webp/2023/10/Interline-logo-full-1.png 320w, /content/images/size/w640/format/webp/2023/10/Interline-logo-full-1.png 600w" sizes="(max-width: 800px) 200px, 320px" type="image/webp" > <img class="h-[var(--logo-h-mobile)] w-[var(--logo-w-mobile)] md:h-[var(--logo-h-desktop)] md:w-[var(--logo-w-desktop)]" loading="eager" srcset="/content/images/size/w100/format/webp/2023/10/Interline-logo-full-1.png 100w, /content/images/size/w320/format/webp/2023/10/Interline-logo-full-1.png 320w, /content/images/size/w640/format/webp/2023/10/Interline-logo-full-1.png 600w" sizes="(max-width: 800px) 200px, 320px" src="/content/images/size/w30/2023/10/Interline-logo-full-1.png" alt="Interline Technologies" /> </picture> </a> </div> <nav class="relative hidden transition-[width,filter] duration-300 text-sm lg:flex justify-center p-1 border border-brd rounded-theme-lg bg-bgr-opac backdrop-blur" data-nav="desktop" :class="isScrolled ? 'drop-shadow-xl' : ''"> <ul class="flex gap-0.5"> <li class="nav-transitland-platform flex relative border border-transparent hover:bg-bgr-tone rounded-theme" data-label="Transitland Platform" data-slug="transitland-platform" data-length="20"> <a class="w-full flex px-4 py-1.5 rounded-theme" href="https://www.interline.io/transitland/" > <span>Transitland Platform</span> </a> </li> <li class="nav-intro-to-transitland flex relative border border-transparent hover:bg-bgr-tone rounded-theme is-subitem" data-label="- Intro to Transitland" data-slug="intro-to-transitland" data-length="22"> <a class="w-full flex px-4 py-1.5 rounded-theme" href="https://www.interline.io/transitland/" > <span>- Intro to Transitland</span> </a> </li> <li class="nav-transitland-apis-for-developers flex relative border border-transparent hover:bg-bgr-tone rounded-theme is-subitem" data-label="- Transitland APIs for Developers" data-slug="transitland-apis-for-developers" data-length="33"> <a class="w-full flex px-4 py-1.5 rounded-theme" href="https://www.interline.io/transitland/apis-for-developers/" > <span>- Transitland APIs for Developers</span> </a> </li> <li class="nav-custom-bulk-transit-data-exports flex relative border border-transparent hover:bg-bgr-tone rounded-theme is-subitem" data-label="- Custom Bulk Transit Data Exports" data-slug="custom-bulk-transit-data-exports" data-length="34"> <a class="w-full flex px-4 py-1.5 rounded-theme" href="https://www.interline.io/transitland/custom-bulk-transit-data/" > <span>- Custom Bulk Transit Data Exports</span> </a> </li> <li class="nav-all-stops-in-the-united-states flex relative border border-transparent hover:bg-bgr-tone rounded-theme is-subitem" data-label="- All Stops in the United States" data-slug="all-stops-in-the-united-states" data-length="32"> <a class="w-full flex px-4 py-1.5 rounded-theme" href="https://www.interline.io/transitland/all-us-stops-bulk-data/" > <span>- All Stops in the United States</span> </a> </li> <li class="nav-compare-transitland flex relative border border-transparent hover:bg-bgr-tone rounded-theme is-subitem" data-label="- Compare Transitland" data-slug="compare-transitland" data-length="21"> <a class="w-full flex px-4 py-1.5 rounded-theme" href="https://www.interline.io/transitland/compare/" > <span>- Compare Transitland</span> </a> </li> <li class="nav-transitland-plans-pricing flex relative border border-transparent hover:bg-bgr-tone rounded-theme is-subitem" data-label="- Transitland Plans &amp; Pricing" data-slug="transitland-plans-pricing" data-length="30"> <a class="w-full flex px-4 py-1.5 rounded-theme" href="https://www.transit.land/plans-pricing/" > <span>- Transitland Plans &amp; Pricing</span> </a> </li> <li class="nav-interline-routing-platform flex relative border border-transparent hover:bg-bgr-tone rounded-theme" data-label="Interline Routing Platform" data-slug="interline-routing-platform" data-length="26"> <a class="w-full flex px-4 py-1.5 rounded-theme" href="https://www.interline.io/routing-platform/" > <span>Interline Routing Platform</span> </a> </li> <li class="nav-intro-to-valhalla flex relative border border-transparent hover:bg-bgr-tone rounded-theme is-subitem" data-label="- Intro to Valhalla" data-slug="intro-to-valhalla" data-length="19"> <a class="w-full flex px-4 py-1.5 rounded-theme" href="https://www.interline.io/valhalla/" > <span>- Intro to Valhalla</span> </a> </li> <li class="nav-valhalla-tilepacks flex relative border border-transparent hover:bg-bgr-tone rounded-theme is-subitem" data-label="- Valhalla Tilepacks" data-slug="valhalla-tilepacks" data-length="20"> <a class="w-full flex px-4 py-1.5 rounded-theme" href="https://www.interline.io/valhalla/tilepacks/" > <span>- Valhalla Tilepacks</span> </a> </li> <li class="nav-global-hosted-valhalla-apis flex relative border border-transparent hover:bg-bgr-tone rounded-theme is-subitem" data-label="- Global Hosted Valhalla APIs" data-slug="global-hosted-valhalla-apis" data-length="29"> <a class="w-full flex px-4 py-1.5 rounded-theme" href="https://rapidapi.com/interline-technologies-interline-technologies-default/api/interline-global-valhalla-navigation-and-routing-engine/" > <span>- Global Hosted Valhalla APIs</span> </a> </li> <li class="nav-transitland-routing-api flex relative border border-transparent hover:bg-bgr-tone rounded-theme is-subitem" data-label="- Transitland Routing API" data-slug="transitland-routing-api" data-length="25"> <a class="w-full flex px-4 py-1.5 rounded-theme" href="https://www.transit.land/documentation/routing-api/" > <span>- Transitland Routing API</span> </a> </li> <li class="nav-resources flex relative border border-transparent hover:bg-bgr-tone rounded-theme" data-label="Resources" data-slug="resources" data-length="9"> <a class="w-full flex px-4 py-1.5 rounded-theme" href="https://www.interline.io/resources/" > <span>Resources</span> </a> </li> <li class="nav-blog flex relative border border-transparent hover:bg-bgr-tone rounded-theme is-subitem" data-label="- Blog" data-slug="blog" data-length="6"> <a class="w-full flex px-4 py-1.5 rounded-theme" href="https://www.interline.io/blog/" > <span>- Blog</span> </a> </li> <li class="nav-consulting flex relative border border-transparent hover:bg-bgr-tone rounded-theme is-subitem" data-label="- Consulting" data-slug="consulting" data-length="12"> <a class="w-full flex px-4 py-1.5 rounded-theme" href="https://www.interline.io/consulting/" > <span>- Consulting</span> </a> </li> <li class="nav-applied-research flex relative border border-transparent hover:bg-bgr-tone rounded-theme is-subitem" data-label="- Applied Research" data-slug="applied-research" data-length="18"> <a class="w-full flex px-4 py-1.5 rounded-theme" href="https://www.interline.io/resources/applied-research/" > <span>- Applied Research</span> </a> </li> <li class="nav-osm-extracts flex relative border border-transparent hover:bg-bgr-tone rounded-theme is-subitem" data-label="- OSM Extracts" data-slug="osm-extracts" data-length="14"> <a class="w-full flex px-4 py-1.5 rounded-theme" href="https://app.interline.io/osm_extracts/interactive_view" > <span>- OSM Extracts</span> </a> </li> <li class="nav-about-interline nav-current flex relative border border-transparent hover:bg-bgr-tone rounded-theme" data-label="About Interline" data-slug="about-interline" data-length="15"> <a class="w-full flex px-4 py-1.5 rounded-theme" href="https://www.interline.io/about/" > <span>About Interline</span> </a> </li> </ul> </nav> <div class="flex flex-0 sm:flex-1 gap-2 items-center justify-end transition-move duration-300" data-header-actions> <button class="flex flex-col gap-1.5 size-8 md:size-9 items-center justify-center rounded-theme group hover:text-brand lg:hidden" data-menu-toggle aria-label="Menu toggle" aria-expanded="false" aria-haspopup="true" aria-controls="menu" @click="menuOpen = !menuOpen; event.currentTarget.setAttribute('aria-expanded', menuOpen);" > <span class="relative pointer-events-none w-5 h-0.5 rounded-sm bg-typ-tone group-hover:bg-brand transition-all" :class="menuOpen ? 'rotate-45 top-1' : 'rotate-0 top-0'"></span> <span class="relative pointer-events-none w-5 h-0.5 rounded-sm bg-typ-tone group-hover:bg-brand transition-all" :class="menuOpen ? '-rotate-45 -top-1' : ''"></span> </button> </div> </div> </header> <div class="fixed shadow-xl z-[100] top-[64px] md:top-[84px] w-full bg-bgr text-typ-tone pt-4 border-t border-brd lg:hidden fixed" :class="menuOpen ? 'block' : 'hidden'" data-menu id="menu" > <div class="px-4 sm:px-6"> <nav class="" data-nav="mobile"> <ul class="flex flex-col gap-1"> <li class="nav-transitland-platform flex relative" data-label="Transitland Platform" data-slug="transitland-platform" data-length="20"> <a class="flex py-0.5 rounded-theme hover:text-brand" href="https://www.interline.io/transitland/" > <span>Transitland Platform</span> </a> </li> <li class="nav-intro-to-transitland flex relative is-subitem" data-label="- Intro to Transitland" data-slug="intro-to-transitland" data-length="22"> <a class="flex py-0.5 rounded-theme hover:text-brand" href="https://www.interline.io/transitland/" > <span>- Intro to Transitland</span> </a> </li> <li class="nav-transitland-apis-for-developers flex relative is-subitem" data-label="- Transitland APIs for Developers" data-slug="transitland-apis-for-developers" data-length="33"> <a class="flex py-0.5 rounded-theme hover:text-brand" href="https://www.interline.io/transitland/apis-for-developers/" > <span>- Transitland APIs for Developers</span> </a> </li> <li class="nav-custom-bulk-transit-data-exports flex relative is-subitem" data-label="- Custom Bulk Transit Data Exports" data-slug="custom-bulk-transit-data-exports" data-length="34"> <a class="flex py-0.5 rounded-theme hover:text-brand" href="https://www.interline.io/transitland/custom-bulk-transit-data/" > <span>- Custom Bulk Transit Data Exports</span> </a> </li> <li class="nav-all-stops-in-the-united-states flex relative is-subitem" data-label="- All Stops in the United States" data-slug="all-stops-in-the-united-states" data-length="32"> <a class="flex py-0.5 rounded-theme hover:text-brand" href="https://www.interline.io/transitland/all-us-stops-bulk-data/" > <span>- All Stops in the United States</span> </a> </li> <li class="nav-compare-transitland flex relative is-subitem" data-label="- Compare Transitland" data-slug="compare-transitland" data-length="21"> <a class="flex py-0.5 rounded-theme hover:text-brand" href="https://www.interline.io/transitland/compare/" > <span>- Compare Transitland</span> </a> </li> <li class="nav-transitland-plans-pricing flex relative is-subitem" data-label="- Transitland Plans &amp; Pricing" data-slug="transitland-plans-pricing" data-length="30"> <a class="flex py-0.5 rounded-theme hover:text-brand" href="https://www.transit.land/plans-pricing/" > <span>- Transitland Plans &amp; Pricing</span> </a> </li> <li class="nav-interline-routing-platform flex relative" data-label="Interline Routing Platform" data-slug="interline-routing-platform" data-length="26"> <a class="flex py-0.5 rounded-theme hover:text-brand" href="https://www.interline.io/routing-platform/" > <span>Interline Routing Platform</span> </a> </li> <li class="nav-intro-to-valhalla flex relative is-subitem" data-label="- Intro to Valhalla" data-slug="intro-to-valhalla" data-length="19"> <a class="flex py-0.5 rounded-theme hover:text-brand" href="https://www.interline.io/valhalla/" > <span>- Intro to Valhalla</span> </a> </li> <li class="nav-valhalla-tilepacks flex relative is-subitem" data-label="- Valhalla Tilepacks" data-slug="valhalla-tilepacks" data-length="20"> <a class="flex py-0.5 rounded-theme hover:text-brand" href="https://www.interline.io/valhalla/tilepacks/" > <span>- Valhalla Tilepacks</span> </a> </li> <li class="nav-global-hosted-valhalla-apis flex relative is-subitem" data-label="- Global Hosted Valhalla APIs" data-slug="global-hosted-valhalla-apis" data-length="29"> <a class="flex py-0.5 rounded-theme hover:text-brand" href="https://rapidapi.com/interline-technologies-interline-technologies-default/api/interline-global-valhalla-navigation-and-routing-engine/" > <span>- Global Hosted Valhalla APIs</span> </a> </li> <li class="nav-transitland-routing-api flex relative is-subitem" data-label="- Transitland Routing API" data-slug="transitland-routing-api" data-length="25"> <a class="flex py-0.5 rounded-theme hover:text-brand" href="https://www.transit.land/documentation/routing-api/" > <span>- Transitland Routing API</span> </a> </li> <li class="nav-resources flex relative" data-label="Resources" data-slug="resources" data-length="9"> <a class="flex py-0.5 rounded-theme hover:text-brand" href="https://www.interline.io/resources/" > <span>Resources</span> </a> </li> <li class="nav-blog flex relative is-subitem" data-label="- Blog" data-slug="blog" data-length="6"> <a class="flex py-0.5 rounded-theme hover:text-brand" href="https://www.interline.io/blog/" > <span>- Blog</span> </a> </li> <li class="nav-consulting flex relative is-subitem" data-label="- Consulting" data-slug="consulting" data-length="12"> <a class="flex py-0.5 rounded-theme hover:text-brand" href="https://www.interline.io/consulting/" > <span>- Consulting</span> </a> </li> <li class="nav-applied-research flex relative is-subitem" data-label="- Applied Research" data-slug="applied-research" data-length="18"> <a class="flex py-0.5 rounded-theme hover:text-brand" href="https://www.interline.io/resources/applied-research/" > <span>- Applied Research</span> </a> </li> <li class="nav-osm-extracts flex relative is-subitem" data-label="- OSM Extracts" data-slug="osm-extracts" data-length="14"> <a class="flex py-0.5 rounded-theme hover:text-brand" href="https://app.interline.io/osm_extracts/interactive_view" > <span>- OSM Extracts</span> </a> </li> <li class="nav-about-interline nav-current flex relative" data-label="About Interline" data-slug="about-interline" data-length="15"> <a class="flex py-0.5 rounded-theme hover:text-brand" href="https://www.interline.io/about/" > <span>About Interline</span> </a> </li> </ul> </nav> </div> <div class="p-4 mt-4 flex gap-2 border-y border-brd"> <button class="flex gap-0.5 p-[3px] border border-brd text-typ-tone rounded-theme hover:bg-bgr-tone" aria-label="Toggle color scheme" data-color-scheme-toggle @click="toggleColorScheme(event)"> <span data-theme="light" class="px-[5px] py-0.5 border border-transparent opacity-50 rounded-theme"> <i class="icon icon-sun size-4 stroke-2"> <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-sun-filled" width="24" height="24" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"> <path stroke="none" d="M0 0h24v24H0z" fill="none"/> <path d="M12 19a1 1 0 0 1 .993 .883l.007 .117v1a1 1 0 0 1 -1.993 .117l-.007 -.117v-1a1 1 0 0 1 1 -1z" stroke-width="0" fill="currentColor" /> <path d="M18.313 16.91l.094 .083l.7 .7a1 1 0 0 1 -1.32 1.497l-.094 -.083l-.7 -.7a1 1 0 0 1 1.218 -1.567l.102 .07z" stroke-width="0" fill="currentColor" /> <path d="M7.007 16.993a1 1 0 0 1 .083 1.32l-.083 .094l-.7 .7a1 1 0 0 1 -1.497 -1.32l.083 -.094l.7 -.7a1 1 0 0 1 1.414 0z" stroke-width="0" fill="currentColor" /> <path d="M4 11a1 1 0 0 1 .117 1.993l-.117 .007h-1a1 1 0 0 1 -.117 -1.993l.117 -.007h1z" stroke-width="0" fill="currentColor" /> <path d="M21 11a1 1 0 0 1 .117 1.993l-.117 .007h-1a1 1 0 0 1 -.117 -1.993l.117 -.007h1z" stroke-width="0" fill="currentColor" /> <path d="M6.213 4.81l.094 .083l.7 .7a1 1 0 0 1 -1.32 1.497l-.094 -.083l-.7 -.7a1 1 0 0 1 1.217 -1.567l.102 .07z" stroke-width="0" fill="currentColor" /> <path d="M19.107 4.893a1 1 0 0 1 .083 1.32l-.083 .094l-.7 .7a1 1 0 0 1 -1.497 -1.32l.083 -.094l.7 -.7a1 1 0 0 1 1.414 0z" stroke-width="0" fill="currentColor" /> <path d="M12 2a1 1 0 0 1 .993 .883l.007 .117v1a1 1 0 0 1 -1.993 .117l-.007 -.117v-1a1 1 0 0 1 1 -1z" stroke-width="0" fill="currentColor" /> <path d="M12 7a5 5 0 1 1 -4.995 5.217l-.005 -.217l.005 -.217a5 5 0 0 1 4.995 -4.783z" stroke-width="0" fill="currentColor" /> </svg> </i> </span> <span data-theme="dark" class="px-[5px] py-0.5 border border-transparent opacity-50 rounded-theme"> <i class="icon icon-moon size-4 stroke-2"> <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-moon-filled" width="24" height="24" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"> <path stroke="none" d="M0 0h24v24H0z" fill="none"/> <path d="M12 1.992a10 10 0 1 0 9.236 13.838c.341 -.82 -.476 -1.644 -1.298 -1.31a6.5 6.5 0 0 1 -6.864 -10.787l.077 -.08c.551 -.63 .113 -1.653 -.758 -1.653h-.266l-.068 -.006l-.06 -.002z" stroke-width="0" fill="currentColor" /> </svg> </i> </span> </button> </div> </div> <main class="main"> <section class="px-4 sm:px-6" data-post-hero=""> <div class="max-w-wide mx-auto py-12 flex items-center flex-col gap-8 md:flex-wrap md:flex-row md:items-end mb-12 relative before:content-[''] before:absolute before:bottom-0 before:left-0 before:w-full before:h-[1px] before:bg-fading"> <div class="text-typ-tone w-full flex-1 flex flex-col gap-4 mx-auto max-w-wide flex-[2]" data-post-hero-content> <h1 class="text-typ font-semibold tracking-tight text-2xl md:text-3xl lg:text-4xl xl:text-5xl"> About Our Team and Firm </h1> </div> </div> </section> <section class="max-w-wide mx-auto flex flex-col gap-6 lg:flex-row" data-post-content> <aside class="px-4 md:px-0 w-full max-w-content mx-auto lg:max-w-xs" data-toc x-init="$nextTick(() => { renderTOC('h2,h3,h4') })"> <div class="sticky border-b border-brd pb-2 mb-8 lg:border-none top-[92px]" x-data="{ tocOpen: false }" > <button class="w-full text-xs lg:text-[0.8rem] uppercase text-typ-tone font-semibold border border-brd px-6 py-2 mb-2 flex items-center justify-center gap-2 rounded-theme hover:bg-bgr-tone lg:border-none lg:px-2.5 lg:py-1 lg:cursor-text lg:hover:bg-bgr lg:justify-start" :data-toc-toggle="tocOpen ? 'active' : 'inactive'" aria-label="Table of Contents" @click="tocOpen = !tocOpen"> <span class="mt-[1px]">Table of Contents</span> <i class="icon icon-plus size-[14px] stroke-[2.5] hidden lg:invisible stroke-2"> <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-plus" width="24" height="24" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M12 5l0 14" /><path d="M5 12l14 0" /></svg> </i> <i class="icon icon-minus size-[14px] stroke-[2.5] hidden lg:invisible stroke-2"> <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-minus" width="24" height="24" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M5 12l14 0" /></svg> </i> </button> <div data-toc-content class="text-typ-tone text-sm lg:text-[0.95rem] lg:block" :class="tocOpen ? 'block' : 'hidden'"> </div> </div> </aside> <article class="ghost-content prose md:prose-lg prose-theme lg:flex-1" data-no-overflow> <p>We founded Interline Technologies in 2018 in the San Francisco Bay Area, and we continue to serve our customers from here, along with a team that's distributed across the United States.</p><h2 id="principals">Principals</h2><div class="kg-card kg-product-card"> <div class="kg-product-card-container"> <div class="kg-product-card-title-container"> <h4 class="kg-product-card-title"><span style="white-space: pre-wrap;">Drew Dara-Abrams</span></h4> </div> <div class="kg-product-card-description"><p><b><strong style="white-space: pre-wrap;">Drew Dara-Abrams Ph.D.</strong></b><span style="white-space: pre-wrap;"> is a co-founder and Principal at Interline Technologies. At Interline, Drew manages the firm's consulting engagements and product development. Drew's previous experience spans both industry and academic labs in transportation and geography.</span></p><p><span style="white-space: pre-wrap;">His experience in industry includes serving as Head of Mobility Products for the Mapzen division of Samsung. While at Mapzen, he recruited and managed a team to build the Transitland open transit data platform, develop a worldwide routing/trip-planning engine, and build a global system to derive road traffic speeds from GPS data for The World Bank. Previously, Drew served as Chief Technology Officer for Kinnexxus, Inc. where he and his colleagues completed two successful Small Business Technology Transfer (SBIR) grants from the National Institutes of Health. He's developed and managed web applications serving upwards of millions of users, and has provided strategic, technical, and statistical consulting to major corporations, universities, and start-ups.</span></p><p><span style="white-space: pre-wrap;">Drew holds a Ph.D. in computational geography from the University of California, Santa Barbara, and co-authored two textbooks, </span><i><em class="italic" style="white-space: pre-wrap;">Supporting Web Servers</em></i><span style="white-space: pre-wrap;"> and </span><i><em class="italic" style="white-space: pre-wrap;">E-Commerce &amp; Internet Law</em></i><span style="white-space: pre-wrap;">, published by Prentice-Hall.</span></p></div> </div> </div><div class="kg-card kg-product-card"> <div class="kg-product-card-container"> <div class="kg-product-card-title-container"> <h4 class="kg-product-card-title"><span style="white-space: pre-wrap;">Ian Rees</span></h4> </div> <div class="kg-product-card-description"><p><b><strong style="white-space: pre-wrap;">Ian Rees Ph.D.</strong></b><span style="white-space: pre-wrap;"> is a co-founder and Principal at Interline Technologies. At Interline, Ian leads engineering and operations efforts, building and maintaining open data pipelines to power publicly accessible trip planners, accessibility analysis, and data validation for Interline鈥檚 clients.</span></p><p><span style="white-space: pre-wrap;">Prior to Interline, Dr. Rees was a software engineer at Samsung鈥檚 Mapzen division and technical lead of the Transitland project, an effort to create an open, user-contributed, user-editable, fully validated repository of all public GTFS data in the world. Previous to Samsung, Ian held postdoctoral positions at Lawrence Berkeley National Laboratory and Baylor College of Medicine, where he administered a data center and developed an online platform for biological imagery analysis.</span></p><p><span style="white-space: pre-wrap;">Ian holds a B.S. in Biochemistry from the University of Houston, and a Ph.D. in Structural and Computational Biology from Baylor College of Medicine. Ian is proficient in several programming languages including Python, Ruby, and JavaScript, and is experienced building complex applications using PostgreSQL, Redis, Docker, Kubernetes, and all three of the major public clouds (Amazon Web Services, Google Cloud Platform, and Microsoft Azure).</span></p></div> </div> </div><h2 id="associates-and-partners">Associates and Partners</h2><p>Using both our physical location in Silicon Valley and relationships across the North American transportation sector, Interline has built a network of specialized associates and partners to serve our clients.</p><p>Interline鈥檚 associates enable our firm to deliver large results to SaaS customers and our consulting clients.</p><p>Interline鈥檚 partners organizations join our team to support critical projects: </p><div class="kg-card kg-product-card"> <div class="kg-product-card-container"> <div class="kg-product-card-title-container"> <h4 class="kg-product-card-title"><span style="white-space: pre-wrap;">Garnet Consulting</span></h4> </div> <div class="kg-product-card-description"><p><a href="https://www.garnetconsultingpdx.com/?ref=interline.io" rel="noreferrer"><b><strong style="white-space: pre-wrap;">Garnet Consulting</strong></b></a><span style="white-space: pre-wrap;"> (Portland, OR) specializes in collaborative and inclusive transit technology, operations, and software consulting for rural, small urban, and intercity agencies and the organizations that serve them.</span></p></div> </div> </div><div class="kg-card kg-product-card"> <div class="kg-product-card-container"> <div class="kg-product-card-title-container"> <h4 class="kg-product-card-title"><span style="white-space: pre-wrap;">DCR Design</span></h4> </div> <div class="kg-product-card-description"><p><a href="https://dcrdesign.net/?ref=interline.io" rel="noreferrer"><b><strong style="white-space: pre-wrap;">DCR Design</strong></b></a><span style="white-space: pre-wrap;"> (Southern California) is a cartographic services and information design firm with deep experience in public transit, active transportation, and geospatial analysis.</span></p></div> </div> </div><div class="kg-card kg-product-card"> <div class="kg-product-card-container"> <div class="kg-product-card-title-container"> <h4 class="kg-product-card-title"><span style="white-space: pre-wrap;">Lab Zero Innovations</span></h4> </div> <div class="kg-product-card-description"><p><a href="https://www.labzero.com/?ref=interline.io"><b><strong style="white-space: pre-wrap;">Lab Zero Innovations</strong></b></a><span style="white-space: pre-wrap;"> (San Francisco) combines user-centered design skills, agile management methods, and full-stack engineering capabilities.</span></p></div> </div> </div><div class="kg-card kg-product-card"> <div class="kg-product-card-container"> <div class="kg-product-card-title-container"> <h4 class="kg-product-card-title"><span style="white-space: pre-wrap;">Trillium Solutions</span></h4> </div> <div class="kg-product-card-description"><p><a href="https://trilliumtransit.com/?ref=interline.io"><b><strong style="white-space: pre-wrap;">Trillium Solutions</strong></b></a><span style="white-space: pre-wrap;"> (Portland, OR) specializes in the creation of transit data and creates GTFS feeds for hundreds of transit agencies around the United States. Interline enlists Trillium for engagements that involve custom GTFS creation and data analysis.</span></p></div> </div> </div><h2 id="small-business-certifications">Small Business Certifications</h2><p>Interline Technologies LLC is certified as a small business by the following organizations:</p><ul><li>California Department of General Services</li><li>Los Angeles County Metropolitan Transportation Authority (LA Metro)</li></ul><h2 id="associations">Associations</h2><p>Interline collaborates with fellow companies, researchers, and institutions through participation in the following associations:</p><ul><li><a href="https://mobilitydata.org/?ref=interline.io">MobilityData</a> as a dues-paying member company</li><li><a href="https://uc.foundation/?ref=interline.io">Urban Computing Foundation</a> with Drew Dara-Abrams serving on the foundation鈥檚 Technical Advisory Council</li><li><a href="https://docs.opentripplanner.org/en/latest/Governance/?ref=interline.io">OpenTripPlanner</a> with Drew Dara-Abrams serving on the Project Leadership Committee</li><li><a href="http://www.trb.org/?ref=interline.io">Transportation Research Board</a> with Drew Dara-Abrams serving as a member on the standing committee on transit data (AP090) and the Transit IDEA review panel</li></ul><h2 id="contact">Contact</h2><div class="kg-card kg-toggle-card" data-kg-toggle-state="close"> <div class="kg-toggle-heading"> <h4 class="kg-toggle-heading-text"><span style="white-space: pre-wrap;">Learning how to use Transitland?</span></h4> <button class="kg-toggle-card-icon" aria-label="Expand toggle to read content"> <svg id="Regular" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"> <path class="cls-1" d="M23.25,7.311,12.53,18.03a.749.749,0,0,1-1.06,0L.75,7.311"></path> </svg> </button> </div> <div class="kg-toggle-content"><p dir="ltr"><span style="white-space: pre-wrap;">If you're a developer, we recommend you start by signing up for a Transitland Free account and review the documentation. If you have questions, please post them to the </span><a href="https://github.com/transitland/transitland/discussions?ref=interline.io" rel="noreferrer"><span style="white-space: pre-wrap;">Transitland discussion board on GitHub</span></a><span style="white-space: pre-wrap;">.</span></p></div> </div><div class="kg-card kg-toggle-card" data-kg-toggle-state="close"> <div class="kg-toggle-heading"> <h4 class="kg-toggle-heading-text"><span style="white-space: pre-wrap;">Need a quote for Transitland Enterprise?</span></h4> <button class="kg-toggle-card-icon" aria-label="Expand toggle to read content"> <svg id="Regular" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"> <path class="cls-1" d="M23.25,7.311,12.53,18.03a.749.749,0,0,1-1.06,0L.75,7.311"></path> </svg> </button> </div> <div class="kg-toggle-content"><p dir="ltr"><span style="white-space: pre-wrap;">If your needs can't be met by the Transitland Free or Transitland Professional plans, please </span><a href="https://opcrm.page.link/q5DT?ref=interline.io" rel="noreferrer"><span style="white-space: pre-wrap;">contact us for a quote for Transitland Enterprise</span></a><span style="white-space: pre-wrap;">.</span></p></div> </div><div class="kg-card kg-toggle-card" data-kg-toggle-state="close"> <div class="kg-toggle-heading"> <h4 class="kg-toggle-heading-text"><span style="white-space: pre-wrap;">Have another question?</span></h4> <button class="kg-toggle-card-icon" aria-label="Expand toggle to read content"> <svg id="Regular" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"> <path class="cls-1" d="M23.25,7.311,12.53,18.03a.749.749,0,0,1-1.06,0L.75,7.311"></path> </svg> </button> </div> <div class="kg-toggle-content"><p dir="ltr"><span style="white-space: pre-wrap;">You're welcome to email our team at </span><a href="mailto:info@interline.io" rel="noreferrer"><span style="white-space: pre-wrap;">info@interline.io</span></a></p></div> </div><div class="kg-card kg-callout-card kg-callout-card-blue"><div class="kg-callout-emoji">馃摤</div><div class="kg-callout-text">To follow Interline, find us on <a href="https://www.linkedin.com/company/interline-io/?ref=interline.io">LinkedIn</a>, our <a href="http://eepurl.com/dmWHln?ref=interline.io">newsletter</a>, and our <a href="https://www.interline.io/blog" rel="noreferrer">blog</a>. </div></div> </article> </section> </main> <footer class="px-4 sm:px-6 bg-bgr mt-16" data-footer> <div class="max-w-container mx-auto relative before:content-[''] before:absolute before:top-0 before:left-0 before:w-full before:h-[1px] before:bg-fading"> <div class="grid grid-cols-2 md:grid-cols-4 lg:grid-cols-6 gap-4 py-8 md:gap-8 md:py-12"> <div class="flex flex-col items-start gap-3 col-span-2 md:col-span-1 lg:col-span-2" data-footer-brand> <a href="https://www.interline.io" data-brand> <picture data-logo='dark'> <source srcset="/content/images/size/w100/format/webp/2024/11/interline-logo-white-on-transparent-2.png 100w, /content/images/size/w320/format/webp/2024/11/interline-logo-white-on-transparent-2.png 320w, /content/images/size/w640/format/webp/2024/11/interline-logo-white-on-transparent-2.png 600w" sizes="(max-width: 800px) 200px, 320px" type="image/webp" > <img class="h-[var(--logo-h-mobile)] w-[var(--logo-w-mobile)] md:h-[var(--logo-h-desktop)] md:w-[var(--logo-w-desktop)] will-change-[filter] transition-[filter] blur" onload="this.classList.remove('blur')" loading="lazy" srcset="/content/images/size/w100/format/webp/2024/11/interline-logo-white-on-transparent-2.png 100w, /content/images/size/w320/format/webp/2024/11/interline-logo-white-on-transparent-2.png 320w, /content/images/size/w640/format/webp/2024/11/interline-logo-white-on-transparent-2.png 600w" sizes="(max-width: 800px) 200px, 320px" src="/content/images/size/w30/2024/11/interline-logo-white-on-transparent-2.png" alt="Interline Technologies" /> </picture> <picture data-logo='default'> <source srcset="/content/images/size/w100/format/webp/2023/10/Interline-logo-full-1.png 100w, /content/images/size/w320/format/webp/2023/10/Interline-logo-full-1.png 320w, /content/images/size/w640/format/webp/2023/10/Interline-logo-full-1.png 600w" sizes="(max-width: 800px) 200px, 320px" type="image/webp" > <img class="h-[var(--logo-h-mobile)] w-[var(--logo-w-mobile)] md:h-[var(--logo-h-desktop)] md:w-[var(--logo-w-desktop)] will-change-[filter] transition-[filter] blur" onload="this.classList.remove('blur')" loading="lazy" srcset="/content/images/size/w100/format/webp/2023/10/Interline-logo-full-1.png 100w, /content/images/size/w320/format/webp/2023/10/Interline-logo-full-1.png 320w, /content/images/size/w640/format/webp/2023/10/Interline-logo-full-1.png 600w" sizes="(max-width: 800px) 200px, 320px" src="/content/images/size/w30/2023/10/Interline-logo-full-1.png" alt="Interline Technologies" /> </picture> </a> <p class="text-typ-tone">We&#x27;re a product and consulting business that helps organizations understand and improve transportation networks, digitally.</p> <nav class="flex items-center gap-2 text-typ-tone text-base" data-socials="footer" x-data="socials"> <a :href="rss" :class="rss && '!block'" class="hidden p-2 border border-brd bg-bgr rounded-theme hover:bg-bgr-tone hover:text-brand hover:border-brand" aria-label="RSS"><i class="icon icon-rss w-4 h-4 stroke-2 stroke-2"> <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-rss" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"> <path stroke="none" d="M0 0h24v24H0z" fill="none"/> <circle cx="5" cy="19" r="1" /> <path d="M4 4a16 16 0 0 1 16 16" /> <path d="M4 11a9 9 0 0 1 9 9" /> </svg> </i><span class="sr-only">RSS</span></a> <a :href="threads" :class="threads && '!block'" class="hidden p-2 border border-brd bg-bgr rounded-theme hover:bg-bgr-tone hover:text-brand hover:border-brand" aria-label="Threads"><i class="icon icon-threads w-4 h-4 stroke-2 stroke-2"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="icon icon-tabler icons-tabler-outline icon-tabler-brand-threads"> <path stroke="none" d="M0 0h24v24H0z" fill="none" /> <path d="M19 7.5c-1.333 -3 -3.667 -4.5 -7 -4.5c-5 0 -8 2.5 -8 9s3.5 9 8 9s7 -3 7 -5s-1 -5 -7 -5c-2.5 0 -3 1.25 -3 2.5c0 1.5 1 2.5 2.5 2.5c2.5 0 3.5 -1.5 3.5 -5s-2 -4 -3 -4s-1.833 .333 -2.5 1" /> </svg> </i><span class="sr-only">Threads</span></a> <a :href="linkedin" :class="linkedin && '!block'" class="hidden p-2 border border-brd bg-bgr rounded-theme hover:bg-bgr-tone hover:text-brand hover:border-brand" aria-label="Linkedin"><i class="icon icon-linkedin w-4 h-4 stroke-2 stroke-2"> <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-brand-linkedin" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"> <path d="M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6z"></path> <rect x="2" y="9" width="4" height="12"></rect> <circle cx="4" cy="4" r="2"></circle> </svg> </i><span class="sr-only">Linkedin</span></a> <a :href="discord" :class="discord && '!block'" class="hidden p-2 border border-brd bg-bgr rounded-theme hover:bg-bgr-tone hover:text-brand hover:border-brand" aria-label="Discord"><i class="icon icon-discord w-4 h-4 stroke-2 stroke-2"> </i><span class="sr-only">Discord</span></a> <a :href="github" :class="github && '!block'" class="hidden p-2 border border-brd bg-bgr rounded-theme hover:bg-bgr-tone hover:text-brand hover:border-brand" aria-label="Github"><i class="icon icon-github w-4 h-4 stroke-2 stroke-2"> <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-brand-github" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"> <desc>Download more icon variants from https://tabler-icons.io/i/brand-github</desc> <path stroke="none" d="M0 0h24v24H0z" fill="none"/> <path d="M9 19c-4.3 1.4 -4.3 -2.5 -6 -3m12 5v-3.5c0 -1 .1 -1.4 -.5 -2c2.8 -.3 5.5 -1.4 5.5 -6a4.6 4.6 0 0 0 -1.3 -3.2a4.2 4.2 0 0 0 -.1 -3.2s-1.1 -.3 -3.5 1.3a12.3 12.3 0 0 0 -6.2 0c-2.4 -1.6 -3.5 -1.3 -3.5 -1.3a4.2 4.2 0 0 0 -.1 3.2a4.6 4.6 0 0 0 -1.3 3.2c0 4.6 2.7 5.7 5.5 6c-.6 .6 -.6 1.2 -.5 2v3.5" /> </svg> </i><span class="sr-only">Github</span></a> <a :href="instagram" :class="instagram && '!block'" class="hidden p-2 border border-brd bg-bgr rounded-theme hover:bg-bgr-tone hover:text-brand hover:border-brand" aria-label="Instagram"><i class="icon icon-instagram w-4 h-4 stroke-2 stroke-2"> <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-brand-instagram" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"> <desc>Download more icon variants from https://tabler-icons.io/i/brand-instagram</desc> <path stroke="none" d="M0 0h24v24H0z" fill="none"/> <rect x="4" y="4" width="16" height="16" rx="4" /> <circle cx="12" cy="12" r="3" /> <line x1="16.5" y1="7.5" x2="16.5" y2="7.501" /> </svg> </i><span class="sr-only">Instagram</span></a> <a :href="pinterest" :class="pinterest && '!block'" class="hidden p-2 border border-brd bg-bgr rounded-theme hover:bg-bgr-tone hover:text-brand hover:border-brand" aria-label="Pinterest"><i class="icon icon-pinterest w-4 h-4 stroke-2 stroke-2"> <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-brand-pinterest" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"> <path stroke="none" d="M0 0h24v24H0z" fill="none"/> <line x1="8" y1="20" x2="12" y2="11" /> <path d="M10.7 14c.437 1.263 1.43 2 2.55 2c2.071 0 3.75 -1.554 3.75 -4a5 5 0 1 0 -9.7 1.7" /> <circle cx="12" cy="12" r="9" /> </svg> </i><span class="sr-only">Pinterest</span></a> <a :href="reddit" :class="reddit && '!block'" class="hidden p-2 border border-brd bg-bgr rounded-theme hover:bg-bgr-tone hover:text-brand hover:border-brand" aria-label="Reddit"><i class="icon icon-reddit w-4 h-4 stroke-2 stroke-2"> <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-brand-reddit" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"> <path stroke="none" d="M0 0h24v24H0z" fill="none"/> <path d="M12 8c2.648 0 5.028 .826 6.675 2.14a2.5 2.5 0 0 1 2.326 4.36c0 3.59 -4.03 6.5 -9 6.5c-4.875 0 -8.845 -2.8 -9 -6.294l-1 -.206a2.5 2.5 0 0 1 2.326 -4.36c1.646 -1.313 4.026 -2.14 6.674 -2.14z" /> <path d="M12 8l1 -5l6 1" /> <circle cx="19" cy="4" r="1" /> <circle cx="9" cy="13" r=".5" fill="currentColor" /> <circle cx="15" cy="13" r=".5" fill="currentColor" /> <path d="M10 17c.667 .333 1.333 .5 2 .5s1.333 -.167 2 -.5" /> </svg> </i><span class="sr-only">Reddit</span></a> <a :href="telegram" :class="telegram && '!block'" class="hidden p-2 border border-brd bg-bgr rounded-theme hover:bg-bgr-tone hover:text-brand hover:border-brand" aria-label="Telegram"><i class="icon icon-telegram w-4 h-4 stroke-2 stroke-2"> <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-brand-telegram" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"> <desc>Download more icon variants from https://tabler-icons.io/i/brand-telegram</desc> <path stroke="none" d="M0 0h24v24H0z" fill="none"/> <path d="M15 10l-4 4l6 6l4 -16l-18 7l4 2l2 6l3 -4" /> </svg> </i><span class="sr-only">Telegram</span></a> <a :href="tiktok" :class="tiktok && '!block'" class="hidden p-2 border border-brd bg-bgr rounded-theme hover:bg-bgr-tone hover:text-brand hover:border-brand" aria-label="Tiktok"><i class="icon icon-tiktok w-4 h-4 stroke-2 stroke-2"> <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-brand-tiktok" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"> <desc>Download more icon variants from https://tabler-icons.io/i/brand-tiktok</desc> <path stroke="none" d="M0 0h24v24H0z" fill="none"/> <path d="M9 12a4 4 0 1 0 4 4v-12a5 5 0 0 0 5 5" /> </svg> </i><span class="sr-only">Tiktok</span></a> <a :href="whatsapp" :class="whatsapp && '!block'" class="hidden p-2 border border-brd bg-bgr rounded-theme hover:bg-bgr-tone hover:text-brand hover:border-brand" aria-label="Whatsapp"><i class="icon icon-whatsapp w-4 h-4 stroke-2 stroke-2"> <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-brand-whatsapp" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"> <desc>Download more icon variants from https://tabler-icons.io/i/brand-whatsapp</desc> <path stroke="none" d="M0 0h24v24H0z" fill="none"/> <path d="M3 21l1.65 -3.8a9 9 0 1 1 3.4 2.9l-5.05 .9" /> <path d="M9 10a0.5 .5 0 0 0 1 0v-1a0.5 .5 0 0 0 -1 0v1a5 5 0 0 0 5 5h1a0.5 .5 0 0 0 0 -1h-1a0.5 .5 0 0 0 0 1" /> </svg> </i><span class="sr-only">Whatsapp</span></a> <a :href="youtube" :class="youtube && '!block'" class="hidden p-2 border border-brd bg-bgr rounded-theme hover:bg-bgr-tone hover:text-brand hover:border-brand" aria-label="Youtube"><i class="icon icon-youtube w-4 h-4 stroke-2 stroke-2"> <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-brand-youtube" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"> <desc>Download more icon variants from https://tabler-icons.io/i/brand-youtube</desc> <path stroke="none" d="M0 0h24v24H0z" fill="none"/> <rect x="3" y="5" width="18" height="14" rx="4" /> <path d="M10 9l5 3l-5 3z" /> </svg> </i><span class="sr-only">Youtube</span></a> <a rel="me" :href="mastodon" :class="mastodon && '!block'" class="hidden p-2 border border-brd bg-bgr rounded-theme hover:bg-bgr-tone hover:text-brand hover:border-brand" aria-label="Mastodon"><i class="icon icon-mastodon w-4 h-4 stroke-2 stroke-2"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="icon icon-tabler icons-tabler-outline icon-tabler-brand-mastodon" ><path stroke="none" d="M0 0h24v24H0z" fill="none" /><path d="M18.648 15.254c-1.816 1.763 -6.648 1.626 -6.648 1.626a18.262 18.262 0 0 1 -3.288 -.256c1.127 1.985 4.12 2.81 8.982 2.475c-1.945 2.013 -13.598 5.257 -13.668 -7.636l-.026 -1.154c0 -3.036 .023 -4.115 1.352 -5.633c1.671 -1.91 6.648 -1.666 6.648 -1.666s4.977 -.243 6.648 1.667c1.329 1.518 1.352 2.597 1.352 5.633s-.456 4.074 -1.352 4.944z" /><path d="M12 11.204v-2.926c0 -1.258 -.895 -2.278 -2 -2.278s-2 1.02 -2 2.278v4.722m4 -4.722c0 -1.258 .895 -2.278 2 -2.278s2 1.02 2 2.278v4.722" /></svg> </i><span class="sr-only">Mastodon</span></a> </nav> </div> <span class="hidden lg:block"></span> <div class="flex flex-col gap-2 mt-2" data-footer-nav="primary"> <span class="font-semibold">Navigate to</span> <nav class=""> <ul class="flex flex-col items-start gap-2 text-typ-tone text-sm"> <li class="nav-transitland-platform flex flex-col relative" data-label="Transitland Platform" data-slug="transitland-platform" data-length="20"> <a class="flex hover:text-brand" href="https://www.interline.io/transitland/" > <span>Transitland Platform</span> </a> </li> <li class="nav-intro-to-transitland flex flex-col relative is-subitem" data-label="- Intro to Transitland" data-slug="intro-to-transitland" data-length="22"> <a class="flex hover:text-brand" href="https://www.interline.io/transitland/" > <span>- Intro to Transitland</span> </a> </li> <li class="nav-transitland-apis-for-developers flex flex-col relative is-subitem" data-label="- Transitland APIs for Developers" data-slug="transitland-apis-for-developers" data-length="33"> <a class="flex hover:text-brand" href="https://www.interline.io/transitland/apis-for-developers/" > <span>- Transitland APIs for Developers</span> </a> </li> <li class="nav-custom-bulk-transit-data-exports flex flex-col relative is-subitem" data-label="- Custom Bulk Transit Data Exports" data-slug="custom-bulk-transit-data-exports" data-length="34"> <a class="flex hover:text-brand" href="https://www.interline.io/transitland/custom-bulk-transit-data/" > <span>- Custom Bulk Transit Data Exports</span> </a> </li> <li class="nav-all-stops-in-the-united-states flex flex-col relative is-subitem" data-label="- All Stops in the United States" data-slug="all-stops-in-the-united-states" data-length="32"> <a class="flex hover:text-brand" href="https://www.interline.io/transitland/all-us-stops-bulk-data/" > <span>- All Stops in the United States</span> </a> </li> <li class="nav-compare-transitland flex flex-col relative is-subitem" data-label="- Compare Transitland" data-slug="compare-transitland" data-length="21"> <a class="flex hover:text-brand" href="https://www.interline.io/transitland/compare/" > <span>- Compare Transitland</span> </a> </li> <li class="nav-transitland-plans-pricing flex flex-col relative is-subitem" data-label="- Transitland Plans &amp; Pricing" data-slug="transitland-plans-pricing" data-length="30"> <a class="flex hover:text-brand" href="https://www.transit.land/plans-pricing/" > <span>- Transitland Plans &amp; Pricing</span> </a> </li> <li class="nav-interline-routing-platform flex flex-col relative" data-label="Interline Routing Platform" data-slug="interline-routing-platform" data-length="26"> <a class="flex hover:text-brand" href="https://www.interline.io/routing-platform/" > <span>Interline Routing Platform</span> </a> </li> <li class="nav-intro-to-valhalla flex flex-col relative is-subitem" data-label="- Intro to Valhalla" data-slug="intro-to-valhalla" data-length="19"> <a class="flex hover:text-brand" href="https://www.interline.io/valhalla/" > <span>- Intro to Valhalla</span> </a> </li> <li class="nav-valhalla-tilepacks flex flex-col relative is-subitem" data-label="- Valhalla Tilepacks" data-slug="valhalla-tilepacks" data-length="20"> <a class="flex hover:text-brand" href="https://www.interline.io/valhalla/tilepacks/" > <span>- Valhalla Tilepacks</span> </a> </li> <li class="nav-global-hosted-valhalla-apis flex flex-col relative is-subitem" data-label="- Global Hosted Valhalla APIs" data-slug="global-hosted-valhalla-apis" data-length="29"> <a class="flex hover:text-brand" href="https://rapidapi.com/interline-technologies-interline-technologies-default/api/interline-global-valhalla-navigation-and-routing-engine/" > <span>- Global Hosted Valhalla APIs</span> </a> </li> <li class="nav-transitland-routing-api flex flex-col relative is-subitem" data-label="- Transitland Routing API" data-slug="transitland-routing-api" data-length="25"> <a class="flex hover:text-brand" href="https://www.transit.land/documentation/routing-api/" > <span>- Transitland Routing API</span> </a> </li> <li class="nav-resources flex flex-col relative" data-label="Resources" data-slug="resources" data-length="9"> <a class="flex hover:text-brand" href="https://www.interline.io/resources/" > <span>Resources</span> </a> </li> <li class="nav-blog flex flex-col relative is-subitem" data-label="- Blog" data-slug="blog" data-length="6"> <a class="flex hover:text-brand" href="https://www.interline.io/blog/" > <span>- Blog</span> </a> </li> <li class="nav-consulting flex flex-col relative is-subitem" data-label="- Consulting" data-slug="consulting" data-length="12"> <a class="flex hover:text-brand" href="https://www.interline.io/consulting/" > <span>- Consulting</span> </a> </li> <li class="nav-applied-research flex flex-col relative is-subitem" data-label="- Applied Research" data-slug="applied-research" data-length="18"> <a class="flex hover:text-brand" href="https://www.interline.io/resources/applied-research/" > <span>- Applied Research</span> </a> </li> <li class="nav-osm-extracts flex flex-col relative is-subitem" data-label="- OSM Extracts" data-slug="osm-extracts" data-length="14"> <a class="flex hover:text-brand" href="https://app.interline.io/osm_extracts/interactive_view" > <span>- OSM Extracts</span> </a> </li> <li class="nav-about-interline nav-current flex flex-col relative" data-label="About Interline" data-slug="about-interline" data-length="15"> <a class="flex hover:text-brand" href="https://www.interline.io/about/" > <span>About Interline</span> </a> </li> </ul> </nav> </div> <div class="flex flex-col gap-2 mt-2" data-footer-nav="secondary"> <span class="font-semibold">For more info</span> <nav class=""> <ul class="flex flex-col items-start gap-2 text-typ-tone text-sm"> <li class="nav-terms flex flex-col relative" data-label="Terms" data-slug="terms" data-length="5"> <a class="flex hover:text-brand" href="https://www.interline.io/legal/terms/" > <span>Terms</span> </a> </li> <li class="nav-privacy flex flex-col relative" data-label="Privacy" data-slug="privacy" data-length="7"> <a class="flex hover:text-brand" href="https://www.interline.io/legal/privacy/" > <span>Privacy</span> </a> </li> <li class="nav-support flex flex-col relative" data-label="Support" data-slug="support" data-length="7"> <a class="flex hover:text-brand" href="https://www.interline.io/support/" > <span>Support</span> </a> </li> <li class="nav-docs flex flex-col relative" data-label="Docs" data-slug="docs" data-length="4"> <a class="flex hover:text-brand" href="https://www.interline.io/docs/" > <span>Docs</span> </a> </li> </ul> </nav> </div> <div class="flex flex-col gap-2 mt-2" data-footer-nav="categories"> <span class="font-semibold">Read on our blog</span> <nav class=""> <ul class="flex flex-col items-start gap-2 text-typ-tone text-sm"> <li class="flex flex-col relative"> <a href="/blog/tag/about-interline/" class="flex hover:text-brand">About Interline</a> </li> <li class="flex flex-col relative"> <a href="/blog/tag/transitland/" class="flex hover:text-brand">Transitland</a> </li> <li class="flex flex-col relative"> <a href="/blog/tag/gtfs/" class="flex hover:text-brand">GTFS</a> </li> <li class="flex flex-col relative"> <a href="/blog/tag/511-sf-bay-regional-feed/" class="flex hover:text-brand">511.org SF Bay Regional Feed</a> </li> <li class="flex flex-col relative"> <a href="/blog/tag/openstreetmap/" class="flex hover:text-brand">OpenStreetMap</a> </li> <li class="flex flex-col relative"> <a href="/blog/tag/geojsonl/" class="flex hover:text-brand">GeoJSONL</a> </li> </ul> </nav> </div> </div> <div class="py-4 md:py-6 flex flex-wrap items-center gap-2 relative before:content-[''] before:absolute before:top-0 before:left-0 before:w-full before:h-[1px] before:bg-fading"> <div class="text-sm text-typ-tone"> <span data-footer-date>&copy; 2018 - 2025&nbsp;<a class="hover:underline" href="https://www.interline.io">Interline Technologies LLC</a>.</span> </div> <button class="flex gap-0.5 p-[3px] border border-brd text-typ-tone rounded-theme hover:bg-bgr-tone" aria-label="Toggle color scheme" data-color-scheme-toggle @click="toggleColorScheme(event)"> <span data-theme="light" class="px-[5px] py-0.5 border border-transparent opacity-50 rounded-theme"> <i class="icon icon-sun size-4 stroke-2"> <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-sun-filled" width="24" height="24" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"> <path stroke="none" d="M0 0h24v24H0z" fill="none"/> <path d="M12 19a1 1 0 0 1 .993 .883l.007 .117v1a1 1 0 0 1 -1.993 .117l-.007 -.117v-1a1 1 0 0 1 1 -1z" stroke-width="0" fill="currentColor" /> <path d="M18.313 16.91l.094 .083l.7 .7a1 1 0 0 1 -1.32 1.497l-.094 -.083l-.7 -.7a1 1 0 0 1 1.218 -1.567l.102 .07z" stroke-width="0" fill="currentColor" /> <path d="M7.007 16.993a1 1 0 0 1 .083 1.32l-.083 .094l-.7 .7a1 1 0 0 1 -1.497 -1.32l.083 -.094l.7 -.7a1 1 0 0 1 1.414 0z" stroke-width="0" fill="currentColor" /> <path d="M4 11a1 1 0 0 1 .117 1.993l-.117 .007h-1a1 1 0 0 1 -.117 -1.993l.117 -.007h1z" stroke-width="0" fill="currentColor" /> <path d="M21 11a1 1 0 0 1 .117 1.993l-.117 .007h-1a1 1 0 0 1 -.117 -1.993l.117 -.007h1z" stroke-width="0" fill="currentColor" /> <path d="M6.213 4.81l.094 .083l.7 .7a1 1 0 0 1 -1.32 1.497l-.094 -.083l-.7 -.7a1 1 0 0 1 1.217 -1.567l.102 .07z" stroke-width="0" fill="currentColor" /> <path d="M19.107 4.893a1 1 0 0 1 .083 1.32l-.083 .094l-.7 .7a1 1 0 0 1 -1.497 -1.32l.083 -.094l.7 -.7a1 1 0 0 1 1.414 0z" stroke-width="0" fill="currentColor" /> <path d="M12 2a1 1 0 0 1 .993 .883l.007 .117v1a1 1 0 0 1 -1.993 .117l-.007 -.117v-1a1 1 0 0 1 1 -1z" stroke-width="0" fill="currentColor" /> <path d="M12 7a5 5 0 1 1 -4.995 5.217l-.005 -.217l.005 -.217a5 5 0 0 1 4.995 -4.783z" stroke-width="0" fill="currentColor" /> </svg> </i> </span> <span data-theme="dark" class="px-[5px] py-0.5 border border-transparent opacity-50 rounded-theme"> <i class="icon icon-moon size-4 stroke-2"> <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-moon-filled" width="24" height="24" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"> <path stroke="none" d="M0 0h24v24H0z" fill="none"/> <path d="M12 1.992a10 10 0 1 0 9.236 13.838c.341 -.82 -.476 -1.644 -1.298 -1.31a6.5 6.5 0 0 1 -6.864 -10.787l.077 -.08c.551 -.63 .113 -1.653 -.758 -1.653h-.266l-.068 -.006l-.06 -.002z" stroke-width="0" fill="currentColor" /> </svg> </i> </span> </button> </div> </div> </footer> <template data-toggle-template> <button class="ml-0.5" data-class="rotate-180" title="Menu toggle" aria-label="Menu toggle" aria-controls="" aria-expanded="false" @click="toggleSubmenu(event)" > <i class="icon icon-chevron-down size-4 stroke-2 stroke-2"> <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-chevron-down" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"> <path stroke="none" d="M0 0h24v24H0z" fill="none"></path> <polyline points="6 9 12 15 18 9"></polyline> </svg> </i> </button> </template> <script> function renderSubmenus() { const navItems = document.querySelectorAll('[data-nav] li') const subItems = document.querySelectorAll('.is-subitem') const mobileClass = "hidden pl-4 flex flex-col gap-0.5 py-1 px-1.5 basis-full" const desktopClass = "z-[50] min-w-[calc(100%_+_24px)] absolute flex flex-col gap-1 shadow-2xl border border-brd rounded-theme-xxs bg-bgr py-2 px-1.5 -ml-2 mt-11 opacity-0 invisible translate-y-1 transition-all" // Remove '-' signs subItems.forEach(item => { const itemName = item.querySelector('a span') itemName.innerText = itemName.innerText.slice(1) }); // Add subitems in place let subMenu, hasItems navItems.forEach((item, index) => { if (item.classList.contains('is-subitem') && !navItems[index - 1].classList.contains('is-subitem')) { navItems[index - 1].classList.add('is-mainitem'); navItems[index - 1].setAttribute('x-on:click.outside', 'closeSubmenus(event)') } subMenu = item.classList.contains('is-subitem') ? subMenu : document.createElement('ul'); if (item.classList.contains('is-subitem')) { subMenu.appendChild(item) subMenu.setAttribute('data-submenu', '') subMenu.getAttribute('id') === null ? subMenu.setAttribute('id', navItems[index - 1].getAttribute('data-slug')) : '' const menuType = subMenu.closest('nav').getAttribute('data-nav') subMenu.classList = menuType === 'desktop' ? desktopClass : mobileClass } else { item.appendChild(subMenu) } }); const dropdownMenus = document.querySelectorAll('[data-nav] .is-mainitem') const toggle = document.querySelector('[data-toggle-template]'); dropdownMenus.forEach(menu => { const toggleBtn = toggle.content.firstElementChild.cloneNode(true); toggleBtn.setAttribute('aria-controls', menu.getAttribute('data-slug')) menu.insertBefore(toggleBtn, menu.children[1]); }); } </script> <script> window.socials = { rss: '/blog/rss/', threads: '', linkedin: 'https://www.linkedin.com/company/interline-io/', discord: '', github: 'https://github.com/interline-io', instagram: '', pinterest: '', reddit: '', telegram: '', tiktok: '', whatsapp: '', youtube: '', mastodon: 'https://mastodon.social/@interline' } document.addEventListener('alpine:init', () => { Alpine.data('socials', () => (window.socials)) }) </script> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10