I'm Ryan Tablada. I've been developing software, advising teams, building open-source projects, launching side projects, and mentoring devs for over 12 years. I live in Nashville with my fiancée and our dog. When I'm not developing or thinking of how to make software a more fun place for everyone, I love to play music, cook, and play video games.
12 years is a lot to fit on one page, so just like good docs, here's a nav list to help jump to relevant sections:
- How I got here…
- Applications of All Sizes
- Mentoring, Teaching, Workshops, and Video Courses
- A Love For Open Source and Developer Tooling
How I got here…
I started writing software back with Java and Visual J# (an old .NET gaming platform from the early 00s) and got into daily software development around 2010 when I began working with local agencies to develop sites with PHP. Wanting something more maintainable and productive, I eventually landed on early versions of Laravel, and I started contributing to the docs, Eloquent, and the JavaScript integration story early on.
As clients demanded more interactivity, I began to focus my career on JavaScript, front-end assets, and the tooling to improve developing JavaScript applications. I worked through the tough days of UI framework churn between Backbone, Angular, Ember, Polymer, and more. To make the development experience more bearable (and to make these tools work with existing Laravel or Rails apps), I built a bunch of early build tools and integrations in Ruby, Node.js, and PHP (seriously as frustrating as build tooling can be today… we have it pretty great now.). This led me to work with Stef Penner on early iterations of Ember CLI, which helped direct a lot of modern build tooling across the JavaScript ecosystem today!
With a desire to continue opening software up to more devs, I created documenting and video courses and taught for 2 years at The Iron Yard code boot camp. I continued working on open-source learning resources and improvements to UI accessibility and developer friendliness. To aid in teaching and mentoring developers (as well as to meet my own development needs), I created countless learning platforms, starter projects, and build tools.
I've focused a lot of my time on understanding and improving the developer experience when working with web UIs and UX.
I've researched and given conference talks about UI framework dev experience and render/reactivity paradigms across React, Vue, and Ember/Glimmer(this is particularly relevant to the use of useEffect
in Headless UI as well as the aim to make Headless more universal and performant).
Most of my day-to-day development has been using Ember.js and Glimmer, but I've kept up with React and Vue patterns and state management to help mentor developers, influence my own design decisions in Ember, and advise on broader OSS.
Since teaching at The Iron Yard, I returned to contract work and have spent most of those seven years working with N2Retail on a large retail management platform as a lead software engineer. Along with a small <12-person team I architect, develop, and maintain a set of projects spanning 20 different applications (APIs, UIs, ETL Processes, reporting functions), over 400 unique route interfaces, and over 300 entities, all supporting over a quarter million unique retail transactions and tens of millions of dollars a week.
Through all of this, my focus has stayed the same: make development more fun, less frustrating, more maintainable, and more accessible!
Applications of All Sizes
I started my career in the agency world, building and maintaining applications for small startups and local businesses; this drilled into me a love for a productive, meaningful developer experience where iteration cannot come at the cost of stability and maintainability into the future. Today I work on developing and maintaining a large enterprise retail management application with N2Retail and Prototypal. I focus my development, advisement, and architectural decisions around code stability with meaningful TDD, maintainability (through the use of well-tested and performant OSS projects that we help contribute to), developer productivity (by investing in our dev tooling, performant sharable primitives, and CI/cloud infrastructure), and communication (through meaningful pairing sessions, code reviews, issue/ticket creation, and code readability/consistency).
Over the last seven years working with N2Retail and Prototypal, I've had the opportunity to work on a bunch of unique and challenging tasks:
- Reduced CI Builds, Tests, and Deploys from 2+ hours to <15 mins - I used a variety of techniques including monorepo project change detection (to remove work for non-impacted code paths, modules, and projects), build/test performance tuning performance, build and test parallelization, dependency upgrades, module graph untangling, and application performance tuning. Over those years, I've also helped move from a lot of hand-deployed resources and mixed CI from CircleCI, Gitlab, or Travis to a set of GitHub Actions configurations and deployment via AWS CDK and Dockerized on-site nodes (deployed at each retail location).
- Designed, built, and maintained BI reports and 3rd party integrations - I've used various tools to facilitate internal and external reporting across millions of rows of data and various filtering metrics in our retail system. With my team, I've worked with 3rd party vendors and our power users to ensure accurate, performant, and meaningful outputs across various formats, including emailed binary files and huge interactive sortable and filterable UI tables.
- Designed, developed, and maintained near real-time data management system - I worked with my team to build a set of multiple interfaces for the data management users to efficiently view, edit, and manage the inventory of around 300k items across 16 stores while keeping the cloud-based application as, or more performant as, the previous competitor on-device database management tool we replaced. I particularly loved architecting and developing the performance, including the database access, network payloads, UI data caching, efficient item searches (across user-configurable settings and preferences), async rendering, and table renders/reflows for all 300k items in the browser. I also heavily paired with two teammates on memory leaks associated with the editing interface and maintainable code patterns for the complex keyboard events (spanning multiple application boundaries) required to mimic the legacy system and user requests.
Mentoring, Teaching, Workshops, and Video Courses
From my early days contributing to Laravel and Backbone, I have always wanted to use my knowledge and experience to help developers have fun, level up, build cooler projects, and write more maintainable code. This has taken a lot of forms over the years, from teaching five cohorts of students full-time at The Iron Yard (TIY) code boot camp for two years (as well as mentoring other TIY instructors), individual mentorship, conference/meetup organizing and speaking, designing and teaching in-person workshops, and designing/recording/editing/supporting hours of video course content.
- Instructed and graduated 50+ students at The Iron Yard - I had the meaningful opportunity to design and modify the curriculum for five cohorts of front-end engineering students at two campuses (Little Rock and Nashville). Through the class, I took new developers and taught them HTML, CSS/SCSS, JavaScript, Vue, React, Ember, and some basic Node.js skills based on student interests/progress and local industry technical needs.
- Mentored 5 Iron Yard instructors - For the last three cohorts at The Iron Yard, I took on the role of a "Mentor Instructor" and would meet virtually with a group of 4-6 other instructors and advised them on student pedagogy, curriculum modifications, course management, and other skills.
- Organized Local JS Meetup - Along with a team of other organizers, I helped organize speakers and fill in for missing speakers at Nash.js. I gave talks covering rendering engine performance, API design using GraphQL/JSON:API, and more.
- Designed, Taught, and Led In-Person Workshops - For EmberConf 2019, I designed and taught a workshop on modernizing Ember.js applications to the latest code standards and major release. Attendees included developers from LinkedIn, Apple, Square, and other companies worldwide.
- Created EmberGrep Screencast Courses and Videos - From 2014 to 2016, I built a set of courses on Ember.js, CSS, and front-end development. These courses were exciting to develop as I was able to teach bleeding-edge JS tooling quickly and effectively. Embercasts was self-produced, designed, recorded, edited, published and supported.
- Designed, Recorded, and Developed Embercasts Courses - In 2017, I worked with Erik Bryn, who funded and reviewed my custom curriculum for six different courses covering JavaScript, Ember.js, styling with SCSS, and various server-side API languages/frameworks (Rails, Node.js with Koa, .NET Core, and Elixir with Phoenix). I also worked with the team to build and maintain the online learning platform, including team licensing and progress saving.
A Love For Open Source and Developer Tooling
- Worked on Ember Learning Team - Along with the Ember Learning Team, I helped write, review, and advise on updates to guide changes with the release of the Ember Octane edition. I worked on improving the accessibility and readability for developers of all experience levels and specifically focused on making the guides approachable for those more familiar with React or Vue.
- Designed and contributed build tooling For Ember Guides and Empress Blog - To deploy the Ember Octane guides, I helped develop build tooling to move the guides from a set of confusing build transformations to a regular Ember application and set of markdown files: unlocking guide contribution to more of the Ember.js community and speeding up deploy times. (psst. Empress drives my site here too)
- Advised JSON:API spec team, jsonapi.net core, and Kurier.js projects - To aid with the public API design and user-friendliness/documentation, I worked with the JSON:API spec team on the operation specification and communication. Along with the spec feedback, I co-developed early iterations of Kurier.js (a Typescript implementation of the JSON:API spec) and helped design and paired with the project maintainer to improve operation transactions and access control.
- Published and maintained Node/Ember Project and Package Deprecation Tooling - Maintaining project deprecations and knowing what packages, warnings, or lint errors to try and tackle first can be overwhelming. I have built a set of various NPM packages including
ember-pod-workflow-cli
andember-project-deprecation-dashboard
: a set of CLI and CI tools that guide developers through codemods, identifying manual deprecation warnings, and addressing lint/build warnings by breaking the problem into module aware (and import/usage aware chunks) allowing teams to identify and tackle the most important modules first. Click here to see the latest output of the pod deprecation dashboard for my project with N2Retail. - Developed build tooling starter kit for new developers - While teaching at The Iron Yard and conducting workshops, I developed a quick build tooling setup that let developers use ES6 modules, node_module imports, and SCSS precompilation, predating the existence of Bundlr or Vite. This tool helped students and teams quickly write production-level modern JavaScript without learning or maintaining Webpack configs.