Skip to main content

The Library Corporation

An 1800s library with tall bookshelves and large overhead windows
Sep 1, 20194 min readAngularJS, Java, HTML5, CSS, Accessibility, WCAG

The Library Corporation

Duration: September 2019 - November 2021

Role: Software Engineer

The Context

After Internet Brands I wanted more scope, and I got it, just not in the way I'd pictured. TLC builds cataloging software that 5,500+ public and school libraries across the US run on. I joined a small team: a lead developer, a backend engineer, a PM, and me on the frontend. Three months in, the lead moved over to a separate venture project, and for the next 23 months I was the only frontend developer.

The Challenge

This role dropped me into unfamiliar territory on every axis at once:

  • New domain: Library cataloging is its own specialized world of serials, periodicals, MARC records, and controlled vocabularies. I'd never worked with librarians or had any sense of how they work.
  • New stack: AngularJS on the frontend, Java/Spring on the backend, Thymeleaf for templating, and my first time ever touching Java.
  • No onboarding: The lead who left hadn't documented much, and I was remote and isolated, reverse-engineering the whole thing from the codebase.
  • Waterfall process: Long feedback cycles, an impatient lead before he left, and barely any access to the people actually using the software.

I'll be honest: the first two weeks, imposter syndrome had me completely stuck. I didn't know where to start.

The Solution

What got me through it was treating the domain itself as the problem to solve. I leaned hard on the QA team, the backend developer, and eventually a cataloger SME who became my guide to how librarians actually work.

Building the Serials Cataloging System

This was the flagship of my time at TLC. Serials, the magazines, journals, and periodicals, had been the single most requested feature for years and had been put off again and again.

I worked with a designer, a PM, the backend developer, and a cataloger SME to architect it from scratch. The hard part was never the UI; it was modeling how serials actually behave and turning that into something catalogers could drive themselves:

  • Generation algorithms (the core of the system): Serials run on schedules, daily, weekly, monthly, quarterly, biannual, with issue types like Volume, Part, Issue, Index, and Section. Some are predictable and some are stubbornly irregular. I designed and built the algorithms that generate, clone, and duplicate issues off configurable rules, and I worked across both the AngularJS frontend and the Java/Spring backend to do it.
  • Flexible date/sequence handling: Depending on the publication type, an issue's date and sequence could be synchronized or fully independent, so the model had to treat date and sequence as two independently configurable axes rather than a single counter.
  • Surface features: Pagination, search, filtering, and navigating between serial records all sat on top of that engine.

This project more than doubled the application's feature count. I presented progress at company all-hands meetings all year, and honestly, that's a lot of what rebuilt my confidence after those rough first weeks.

WCAG Accessibility Compliance

Libraries serve every kind of patron, and a lot of institutions require accessibility compliance, but the legacy Thymeleaf templates had never once been audited.

So I went through 15+ views and remediated 200+ violations in about a month:

  • Missing alt text, input labels, and ARIA attributes
  • Broken links and empty buttons
  • Low contrast and incorrect heading hierarchy
  • No focus states or keyboard navigation
  • Missing semantic HTML and language meta tags

Polymorphic Cataloging Components

Different asset types, books, magazines, and encyclopedias, shared a lot of the same data-entry patterns but each had their own fields. Rather than duplicate components for every type, I built a polymorphic class that handled multiple asset types and swapped views based on the cataloging context.

This was pre-props AngularJS, so I went with a class-based approach. It cut the code duplication way down and made the UI flexible enough to take on new asset types without a major rewrite each time.

The Impact

  • Serials cataloging system delivered after a year of development, the most requested feature in the product's history
  • 200+ accessibility violations remediated across legacy views
  • 30+ features shipped as sole frontend developer
  • 5,500+ libraries served by the applications I maintained
  • Rebuilt confidence through consistent delivery and all-hands presentations

Why I Left

There was no promotion path, and the waterfall process meant painfully slow feedback loops, so I was ready for somewhere that moved faster. I left voluntarily for FightCamp.

What I Learned

This role taught me how to learn. New domain, new stack, no documentation, no senior to lean on; I just had to figure it out. The imposter syndrome from week one never fully went away, but I learned to work through it by stacking up small wins and building relationships with the people who understood the domain far better than I did.

Tech Stack

AngularJS, Java, Spring, Thymeleaf, HTML5, CSS3, WebAIM, Browser Accessibility Tools