/n.
Visiting
ryan.war.re/ redirects to ryan.war.re/n via an HTML meta refresh tag, for the same reason as the main site: the project uses Next.js static export with no server available for HTTP-level redirects. A <noscript> fallback link is also included on the root page.Resume Sections
The resume page is divided into four top-level sections, each introduced by an<Experience> heading component and populated by one or more <Activity> entries.
Technical Experience
Lists the programming languages, tools, and editors Ryan works with day-to-day, followed by a brief statement of engineering interests.
Relevant Work Experience
Chronological employment history from his 2012 student tech role at UW through his current Senior Software Engineer position at Stripe.
Related Activities
Personal projects and coursework, including the PiDuinoLock hardware project and ongoing web programming experience.
Education
Bachelor of Science in Computer Science and Software Engineering from the University of Washington, graduated June 2015.
Work Experience Entries
The following positions are rendered in reverse chronological order under the Relevant Work Experience heading.| Role | Company | Team | Period |
|---|---|---|---|
| Senior Software Engineer | Stripe | Internal Tools | March 2024 – Present |
| Software Engineer II | Stripe | Internal Tools | March 2021 – February 2024 |
| Software Engineer II | Amazon | Ads | July 2019 – February 2021 |
| Software Engineer | Amazon | Ads | July 2017 – June 2019 |
| Software Engineer II | Porch | — | August 2016 – July 2017 |
| Software Engineer | Porch | — | July 2015 – August 2016 |
| Software Engineer Intern | Ticketmaster/Live Nation | Commerce, Order Processing | March 2015 – June 2015 |
| Software Engineer Intern | Ticketmaster/Live Nation | Commerce, Order Processing | June 2014 – December 2014 |
| Web Development Intern | Sporcle | — | June 2013 – June 2014 |
| Technical Student Assistant | University of Washington | — | June 2012 – October 2013 |
React Components
The resume is assembled from four custom React components. Each has a narrow, well-defined responsibility.Experience — Section Heading
The simplest component. It accepts a single heading string prop and renders it as an <h2>.
Activity — Individual Entry
Activity is the primary content component. It renders a single job, project, or coursework entry — including the title, company (optionally linked), team name, date range, auto-calculated duration, and a bullet list of accomplishments.
start date is provided, Activity uses date-fns to calculate and display the elapsed time. The string "Present" is interpreted as today’s date.
[3 Years 5 Months] — and is re-calculated at build time each time the site is deployed.
ActivityList — Bullet List of Accomplishments
ActivityList receives the items array from Activity and renders each entry as an <li> inside a <ul>. It handles both string and ReactNode items transparently.
ExperienceItem — Linked Skill or Technology Name
ExperienceItem renders either a plain text span or a hyperlink, depending on whether a url prop is provided. It is used in two ways:
- Inline within
ActivityListitems — to link third-party tools mentioned in bullet points (e.g., Authy, Nymi, WordPress). - In the Technical Experience section — to render each technology and editor as a clickable link.
Technical Experience Section
The Technical Experience section usesActivityList directly (without an Activity wrapper) to display two bullet points. Each technology and editor name in those bullets is rendered as an <ExperienceItem> link.
Technologies listed:
| Language / Tool | Link |
|---|---|
| Java | java.com |
| Ruby | ruby-lang.org |
| React | react.dev |
| Scala | scala-lang.org |
| Go | go.dev |
| PHP | php.net |
| C++ | cplusplus.com |
| git | git-scm.com |
| Bash | gnu.org/software/bash |
| MySQL | mysql.com |
| PostgreSQL | postgresql.org |
The editors
Claude Code, Cursor, Vim, and IntelliJ are defined in an editors array of ExperienceItemProps and mapped into linked items. vscode is appended separately after the mapped list as & vscode, linked to code.visualstudio.com.Open Graph and Metadata
The resume page configures its<Head> with og:type set to profile (rather than website), and includes Open Graph profile fields alongside standard Twitter Card tags.
robots and googlebot meta tags include noemailindex on the resume (unlike the main site), which prevents search engines from indexing the ryan@war.re email address that appears in the resume header.