About > Résumé

Nathan Smith
Frisco, Texas

I enjoy team collaboration where everyone has something to bring to the table. I prefer to work in a tight-knit group in which open communication is encouraged and creativity is valued. My biggest strengths are in accessibility, design aesthetics, and writing efficient front-end code. I have also been known to dabble in these back-end environments as necessary: C#, Node, PHP, Python, Rails.

My personality type is ENTJ.


Experience

Oct 2022 - present
Microsoft

Principal Software Engineer

After our incubation project graduated from the Office of the CTO, I transitioned to working under the banner of the Microsoft Casual Games Studio. The Washington Post penned an article about our project, Games for Work.

https://wapo.st/3tAZGMi


ARCADE

I was on a four-person dev team maintaining the app after its debut. I rewrote the core launcher (aka Arcade) using SolidJS. It was initially built in React but we standardized on Solid as our library of choice. This greatly simplified the code, increased performance, and lowered load time.


ICEBREAKERS

As part of the overhaul process, I rewrote the game IceBreakers — previously created in Svelte — using Solid as well. To enable our PMs to move fast and garner employee-sourced Q&A writing, I made a Node parser that took data from an Excel file and turned it into JSON content which could be read via a simple browser fetch.


TRIVIA & AI

I built a Trivia game that initially rolled out to Microsoft employees. It was powered by an internal Bing API which housed numerous question and answer combos. In the first iteration, I called the Bing API directly. During later iterations, a back-end dev coworker wrote an ingestion process that exported flat-file JSON batches by the tens of thousands. We referred to it as the Pack API. That allowed me to make numerous CDN requests rather than more expensive data calls, reducing our burn rate to pennies on the dollar.

Additionally, the generated content was run through an AI process which tagged each question with: category, difficulty, and labels. That metadata was then added back to the database and reexported as flat JSON, to enable more nuanced gameplay.

During a Microsoft Garage hackathon, I wrote a Python script to continuously run data about FIFA soccer games through ChatGPT. The goal was to test its viability for creating game content. It took some coaxing to get the AI to focus on aspects of historic games which humans might care about in a trivia context.


TELEMETRY & ON-CALL

Throughout Arcade and various games, I implemented Application Insights telemetry to anonymously track gameplay. This helped us better understand how to improve upon the user experience. It also served as a way to keep tabs on the health of our applications.

Every few weeks, it was my turn in the on-call rotation. I monitored incoming email/phone alerts and investigated the potential cause of bugs. This sometimes meant triaging tickets with the support folks from Microsoft Teams and/or corresponding with enterprise customers to debug their HAR logs. Occasionally, we found regional DNS snafus. In one particularly interesting situation, there was not enough resource allocation to Windows virtual machines.

Customer: "Why am I able to play some games, but not others?"

^ That one was a doozy. As it turned out, some compiled WASM bundles are quite beefy.


END-TO-END & UNIT TESTING

I built an end-to-end test using Playwright, which plays through the Trivia game with ten virtual players. This became the basis for stress testing our continuous integration environment. It was used in conjunction with Selenium Grid to spin up hundreds of faux users.

I wrote unit tests for all of my games' utility functions and common components. Most games had roughly 98% test coverage. These used Vitest, which is a test runner similar to Jest with a more straightforward setup approach and usage. It is compatible with multiple JS frameworks, whereas Jest tends to be more focused on React.


XANDR ADS & OXFORD API

I implemented Xandr advertisements and often circled back to ensure we kept regulatory compliance with evolving cookie privacy laws: CCPA, GDPR, etc. I wrote a watcher script that would periodically clear out cookies from ads that were potentially no longer in use, to give us peace of mind that third parties were not placing any long-lived trackers outside of our purview.

Beyond that, I created a site that allowed players of word games within Teams to click externally and look up definitions via the Oxford Dictionaries API. When a user searched for a new word, I would refresh ads on the page. That made the interaction feel merited, rather than spamming ad rotation and potentially distracting from research into a word's etymology.


MENTORING

Microsoft had a program called Career Jam, which paired would-be mentors with those seeking career guidance and general level-up advice. After having a few sessions as a mentee myself, I regularly volunteered to serve as a mentor to others. I met a number of people from different walks of life, all of whom had taken paths that eventually led them to tech occupations. It was a good way to step out of my day-to-day workflow and gain some perspective about the broader company.


RESEARCH PROJECT

I took a class as part of my master's degree studies: TECM 5750Measuring usability and user experience for professional and technical communication. Wherein, students learned to gather qualitative and quantitative data. For my semester-long research project, I picked the topic "Meetings & Gaming" to garner broader feedback about how people use online meeting apps, plus their preferences around video and/or board games. I compiled the results of that study into this report.


Jun 2021 - Oct 2022
Microsoft

Principal Software Engineer

From the official job description…

We are the office of the CTO for Microsoft. We help take the absolute best ideas and turn them into products. In our regular jobs of gathering information, synthesizing recommendations, and enabling Microsoft's engineering teams to achieve more, we are grounded in technology and partnerships. We work with a distinguished set of engineering leaders exploring ideas and are responsible for incubating them.

I was on an eight-person incubation team, within the Office of the CTO organization. We built concept projects which may/not become real products. I worked on multiplayer games that run during MS Teams meetings. Our games were initially created in React and our APIs used SignalR (WebSocket).

https://en.wikipedia.org/wiki/SignalR

MS requires localization of production content. I worked on our LangService, a TypeScript class that swaps UI strings based on a user's language. It would retrieve a manifest, then fetch the appropriate JSON.


PERF TUNING

We realized React is not particularly well suited to games beyond turn-based play. Once we made games with concurrency, we saw React inconsistencies for state management.

As a research spike, I developed a new game in Svelte.

https://svelte.dev

It performed much better. We had less data loss due to SignalR broadcasting real-time changes. From there, I created another game in Svelte and rewrote some of our existing games as well.


TEAMS PLATFORM

I was a liaison to the larger Teams group, working alongside their platform team to add more UI extensibility. This was a twofer. It helped further our gaming initiative. It also served as a connection point between Teams and other app integrations.


BONSAI AI

I worked with a Bonsai (Microsoft AI) solution architect, to teach AI "brains" how to play Otrio.

https://bit.ly/ms-bonsai

https://otrio.com

It was an experiment between two incubation teams, during off-peak work hours. I created a Node.js server with game logic that could be bundled via Docker. It served as a conduit between:

  • Learning AI vs. Human
  • Learning AI vs. Incumbent AI

The AI was having trouble distinguishing where it could play — sometimes opting to choose an invalid move — so the Bonsai team added action masking. In addition to passing current board state, I sent an array indicating which spots were taken. If players were out of moves for a given spot, I would also mask those areas.


Dec 2019 - May 2021
Reaktiv Studios

Lead Front-End Developer

I created a set of internal React components, for use on client facing projects. I also built vanilla JS versions of those UI elements, to be used with flat HTML. This versatility allowed us to apply the same markup and styles for single page JS apps and/or CMS generated content.

The components can be viewed via our Storybook.

https://ui.reaktivstudios.com/storybook

The code has 95%+ unit test coverage.

https://ui.reaktivstudios.com/coverage/lcov-report

I wrote about how I built our Tabs and Accordion components here.

https://css-tricks.com/the-anatomy-of-a-tablist-component-in-vanilla-javascript-versus-react


Along with my coworker Cory Webb, I was interviewed for the React Wednesdays live stream.

You can view an archive of the video here.

https://youtu.be/rx2RrVpFToo


I created training curriculum about Jest, Next, and React.

I led video calls for devs at partner agencies. On retainer, I would periodically do code reviews of their projects.

Some devs needed help moving from classes to React Hooks. I created comparisons, built using both approaches.


The advent of the block editor (aka Gutenberg) in WordPress was a paradigm shift in thinking about CMS generated content. I did theme updates to ensure that we supported things like alignwide and alignfull throughout, Jetpack plugins, and other page layout blocks.

I also built the React equivalent of handy WP elements, such as the media block.

https://wordpress.org/support/article/media-text-block

That meant we could be consistent across various projects. This allowed us to take a "headless" approach.

I wrote a blog post on that topic.

https://reaktivstudios.com/blog/headless-wordpress


I applied Google's AMP framework to client sites.

https://amp.dev

I ensured that we met page speed performance metrics. This involved working within a CSS file size budget, and planning for async image loading. It also meant getting creative to appease AMP's restrictions around extra JavasScript.


Oct 2018 - Oct 2019
InVision

Lead Software Engineer

I was one of several developers working on InVision Studio, a collaborative screen design app. I had experience working with: TypeScript, React, Redux, Electron, Node.js, and GraphQL. For testing, I worked with: Chai, Jest, Mocha, and Spectron.

https://youtu.be/v10t2azNaFs

I was part of several sub-teams, including one focused on investigating performance bottlenecks. I would profile slower parts of the app, and vet various potential solutions. Afterwards, though fine tuning perf is never "done," I documented our findings for the larger organization.

EXAMPLE

For dirty change detection, I wrote an object hashing function. I perf tested it against other "competitor" NPM packages. Ours ended up being the fastest implementation that was also consistent with hashing of other languages. This involved using Node's crypto, or browser based window.crypto if available.


Jun 2014 - Oct 2018
TandemSeven

Principal Front-End Architect

My job at TandemSeven was comprised of several aspects.


ARCHITECTURE & CODE

I worked primarily on JavaScript driven web applications. This included client projects as well as Journey360, our first party app for building journey maps around customer experience workflows.

I used frameworks and libraries such as: Backbone, D3, Handlebars, jQuery, Lodash, Node, React, Require, Sass, and Webpack.

In terms of actual code written, I am most proud of my role in rebuilding version 2.x of our Interactive Style Guide (ISG). Originally created using Handlebars templates, my coworker Mundi Morgado and I rewrote it using React over the course of about 30 days leading up to our talk at FrontPorch.io

A video of our talk and presentation slides are available here…

https://youtu.be/SoEPoww5BdA

https://speakerdeck.com/nathansmith/node-style-guide

Live demo…

https://t7.github.io/react-starter


MENTORING

Though I worked remotely, I had what could be called a highly collaborative role.

I was privileged to mentor several designers who aspired to learn HTML and CSS, in a company-wide effort to raise code "literacy" amongst our coworkers.

I would meet semi-weekly with other developers, in order to ensure that their respective projects were going well. As needed, we would walk through debugging and troubleshooting. I would also advise them on how to navigate the situational politics of consulting.


RECRUITING WORKFLOW

I was involved in vetting front-end candidates and reaching a consensus on hiring decisions. So much so, that we eventually settled on a consistent approach to this process.

I built out a recruiting workflow around GitHub, with a repository to house applicants' résumés, using "milestones" as job openings, and individual project "issues" as a way to discuss each candidate.

Ultimately, we would close each ticket with either a "hired" or "not hired" outcome, with the threaded discussion providing insights into how/why we arrived at each decision.


Feb 2012 - Jun 2014
projekt202

Principal UI Architect

I worked (somewhat interchangeably) as an IA, designer, and front-end developer on bespoke client projects. As part of my principal role, I tried to be available as a sounding board for UX and/or JavaScript questions.

(Though, truth be told, I probably learned more from my coworkers.)

I was involved in projects that utilized, in various facets: Drupal, Google Maps API, .NET MVC, and Ruby on Rails.

I also sought to streamline our workflow by encouraging others to try Sass/Compass (CSS preprocessor), and advocated Serve (get-serve.com) for rapid HTML templating.

To assist HR in recruiting for front-end developers, I wrote a JavaScript quiz to serve as a benchmark in screening applicants.

https://j.mp/js-quiz

I occasionally used PhoneGap to build mobile prototypes. I wrote an article explaining how to use it in conjunction with Handlebars.js for JSON-driven mobile apps. Demo here…

https://j.mp/net-handlebars

We also made use of the Titanium framework, which allows developers to write JavaScript to build native Android and/or iOS apps.

I co-presented at several venues with coworker Matt Baxter, on applying web skills (HTML, CSS, JS) to build mobile apps. In it, we covered some of the pro's and con's of "native" versus frameworks like PhoneGap and Titanium.

https://linkedin.com/in/mbxtr

https://j.mp/web-skills

Representative client industries included: banking, e-commerce, network security, retail marketing, and travel.


Oct 2011 - Feb 2012
Pure Charity

Front-End Developer

As the lead front-end developer on a Ruby on Rails team, I worked in conjunction with other developers, implementing two complete redesigns of our entire site in under four months. Our page layouts were built using the HTML and CSS prepropcessors Haml and Sass, as well as Compass.

Though I still prefer JavaScript, I became proficient in CoffeeScript. Additionally, I worked with the Google Maps JavaScript API (v3), jQuery, Underscore.js, and the client-side "MVC" framework Backbone.js.

I also discovered an affinity for Serve, a way for designers and front-end developers to rapidly prototype the "V" of Rails' MVC, when iterating on view templates that will eventually be migrated into a full-fledged web app.


Jan 2011 - Sep 2011
Hewlett-Packard

UX Designer / Front-End Developer (Cloud Services)

I worked as a user experience designer and front-end developer, on a team that built web applications used to manage cloud computing and storage — powered by OpenStack.

We made use of Ruby on Rails, PHP, and Drupal. I created mockups and production user interfaces using the trusty "big three"… HTML, CSS, and JavaScript — specifically jQuery and the YUI Library.

To aid in the maintainability and efficiency of writing CSS, our team used Sass and Compass — a CSS preprocessing framework.


Dec 2008 - Dec 2010
Fellowship Technologies

UX Designer / Front-End Developer

I was an integral part of a self-managed development team, using the scrum software project methodology. Helped to redesign various web applications and ensured front-end code quality (HTML, CSS, JS - Prototype & jQuery). Did some programming in C# using .NET MVC. Also wrote modules in PHP to integrate our RESTful API with various 3rd party products, such as the ExpressionEngine CMS. Spoke at our annual Dynamic Church Conference, and other venues representing FT to the web-dev community.

Created 960.gs

Indirectly related, I created the 960 Grid System in 2008, as an effort to streamline IA sketching, designing and coding of grid based page layouts. It arose from my own personal need to have a solid starting point when doing freelance and professional work. Realizing it might benefit others too, I released it for free usage, and it has since been used by numerous web developers in their own projects.

Coauthor, jQuery Cookbook

I was one of several authors who co-wrote jQuery Cookbook, part of the acclaimed O'Reilly cookbook series (ISBN: 0596159773). Book proceeds donated to the jQuery Foundation, a non-profit that drives development and evangelism of jQuery. The jQuery JavaScript library has been used by companies such as: CBS, Dell, Google, Microsoft, Mozilla, NBC, and Netflix. It was an honor to be included amongst such a talented group of developers.


Apr 2008 - Dec 2008
Viewzi

Senior Front-End Developer

I was responsible for much of the front-end work, including writing HTML, CSS and JavaScript (using YUI). I also occasionally wrote PHP for templating and did visual mockups as needed. I helped to plan and build new DHTML search result views, as well as maintain and enhance existing views and the core platform. I built rapid prototypes of ideas around possible extensions of Viewzi for client implementations. I wrote our internal code standards documentation for front-end development, which included guidelines for contractors and in-house team members.

Conferences

In the latter part of '08 I had the opportunity to speak at various conferences and local events, including: Echo Conference, Webmaster Jam Session, Refresh Dallas and Adobe MAX. Topics ranged from the gospel and accessibility, pragmatism in front-end development, and using Fireworks to design sites to be built using Web Standards — HTML, CSS, JS.

.Net Magazine

I was asked to write an article about religious web design, for issue 176 of the UK based publication .Net Magazine. I was privileged to be one of three designers to participate in a "build-off," crafting a hypothetical home page for a real or fictitious place of worship. I used the 12-column grid from 960.gs to create the design, and annotated my thought process throughout. To see the finished article, as it appeared in print — click here.


Dec 2006 - Apr 2008
Dell EMC

Information Architect & Interface Designer

I worked with EMC client Amerisource Bergen Specialty Group. I was part of an integrated team, focused on rebuilding their e-commerce site. We worked in an iterative process using the scrum project management methodology. I handled IA tasks and coded HTML, CSS, and JavaScript.

I worked as an IA for EMC client Hotels.com as part of their UX team, improving interaction in their iterative redesign. I built rapid prototypes for user testing using JavaScript. To lighten the load on their developers, I occasionally coded HTML and CSS for production.

I designed a visual presentation for EMC client Nokia. This consisted of user interaction wireframes presented in a Keynote slideshow format.

I designed visual concepts and wireframes for various clients: AAFES, Turner Construction, Puget Sound Energy and Federal Reserve Bank of Dallas. Met with clients during pre-sales discussions, to help facilitate project scoping. For example: Dickies and Horizon Health.

I coded the Geniant blog. That involved doing HTML, CSS and Textpattern template integration. It was architected by Garrett Dimon and designed by Jared Christensen.

Speaker, BibleTech 2008

Logos Bible Software invited publishers, programmers, tagging experts, library scientists, technologists, thought leaders, design gurus, information architects, webmasters, and mash-up creators to lead conference sessions and roundtable discussions at BibleTech. Christian Bradford and I presented the topic Web Standards: Speaking Today's Vernacular.

Columnist, Digital Web Magazine

I was asked to be a columnist at Digital Web Magazine. I wrote an article entitled The Village Stew, and continue to pen more as time allows.

Coauthor, Textpattern Solutions

I had the privilege of co-authoring Textpattern Solutions (ISBN: 1590598326), a book on the elegant content management system Textpattern. It was published by Friends of ED, a subsidiary of Apress.


Sep 2005 - Dec 2006
Albertsons

Web User Interface Designer & Developer

I was integral in the creation of our internal coding standards and design patterns. We modeled the idea after the Yahoo Design Pattern Library. I wrote much of our HTML, CSS and JavaScript quality guidelines. I also designed user interfaces for intranet sites.

I was originally hired on primarily as a designer, but after proving myself proficient at writing code, was given a slight lateral promotion to the position of developer. In this position, I was afforded the opportunity to not only design interfaces but also have control over how the code was handled. I mainly wrote HTML, CSS, and occasionally did JavaScript.

In January of 2006, was recognized along with the other members of our Design Services team for excellence in the APEX (Albertson's Project EXecution) 6.0 web application. It allows for tracking and overview of Albertson's business project workflow. It was the company's first project to make use of Ajax and web standards.

I suggested and assisted in the reorganization of our internal network's storage drive, to better facilitate linking and collaboration of group efforts. It involved a new file naming schema and directory structure. This avoided data loss due to overwriting and enabled us to better track our projects.

I was periodically required to double check the quality level of our back-end developers' code, who had a tendency to rework our front-end CSS templates into nested tables, due to unfamiliarity with web standards.

Speaker, Gospelcon 2006

Gospel Communications hosts an annual Internet ministry conference, dubbed Gospelcon. In 2006, I was invited to speak about web accessibility as it pertains to facilitating Christianity online. Essentially, if we really believe the good news, we should care about the delivery.

Founder, Godbit Project

After getting settled in Boise, I began to meet and network with other Christian web designers and developers. Through a shared concern for how the Church at large fails to use the web to its full potential, we decided to start Godbit.com, to raise awareness about the benefits of web standards.

CSS Beauty, Contributor

I was invited by Alex Giron of CSS Beauty to be a regular contributor to the site, helping aggregate news that pertains to development with the use of CSS and other established web standards. I consider it an honor to be working with the other talented people who contribute to the site.

Judge, TXP Competition

I was asked by Tom Fadial of Textplates to be a judge in the template design competition for the Textpattern content management system. I helped sift through and sort the good from the bad, scoring each entry and offering critiques. Overall, it was a good turnout.


Sep 2002 - Aug 2005
Asbury Theological Seminary

Web developer & Multimedia

I worked briefly as a computer lab assistant in the campus library, and then was promoted to doing graphics and web design for the seminary. I was responsible for creating various class curriculum web page designs, as well as CD and DVD covers. I also did routine PC troubleshooting and periodically covered VIS, our remote audio and video system.

I played an integral role in redesigning the AsburySeminary.edu website. I handled some of the CSS layout, print/text sizing, and search capabilities.

I worked on annual campus-wide computer reallocation and upgrade process, handling hardware and software troubleshooting. I did camera work for Asbury Info Tech, both in studio and on location.

I also was a teaching assistant to Dr. Groeling, for IT605: Web & Internet in Ministry.

Freelance Web Developer & Video Production

I was responsible for creating RockUMC.com, a site for The Rock/La Roca United Methodist Church in Lexington, KY.

I also did camera work for The Rock/La Roca, recording church services.


Jun 2000 - Aug 2002
AIA Insurance

Network administrator & Webmaster

I was responsible for troubleshooting and maintaining the Associated Independent Agencies company network, consisting of multiple offices. I handled routine software updates and additions to the company website.

I was also tasked with recommending and purchasing computer hardware and software on behalf of the company.


Sep 1999 - May 2000
Washington State University

Research assistant & Computer technician

I worked in the Social and Economic Sciences Research Center (SESRC) doing qualitative interviews with survey participants. The topics varied, determined by what WSU had been commissioned to study.


Sep 1997 - May 1999
Easter Seals & YMCA

Lifeguard & Swim instructor

I worked as a lifeguard and swim instructor at two indoor pools, for Easter Seals and Minot Family YMCA.

I also taught Red Cross swim lessons, levels 1-6.


Pre 1997:

In high school, I worked a variety of food-service and grocery store jobs. I would be glad to talk at length about it, if anyone wants to know more. I also held a volunteer System Operator job for Microsoft's MSN Gaming Zone.


Education

Sep 2002 - Aug 2009
Asbury Theological Seminary

Master of Divinity

I held several positions in student government: Junior class vice president 2002-03. Communications director 2003-04. Middler class president 2004-05. I was also responsible for the visual identity and branding of the Student Leadership Team.

I also helped to facilitate Celebrate Recovery sessions at The Rock/La Roca United Methodist Church. I worked in an informal counseling capacity, to support those recovering from drug and alcohol addiction.

After doing about 2/3 of my classes on campus, I landed my first tech career job. It required relocation, so I finished my remaining credits via online classes over the next several years.


Sep 1999 - May 2002
Washington State University

Bachelor of Arts, Social Sciences

I worked in the Social and Economic Sciences Research Center (SESRC) doing qualitative interviews with survey participants. The topics varied, determined by what WSU had been commissioned to study.

I also did general IT troubleshooting and website updates for a local insurance agency.

I was involved in Campus Christian Fellowship. I co-led a campus Bible study for two dorms. I served as an evangelism intern, training other students in peer outreach.

I also played trumpet on the church worship team. I was involved in six stage productions (Christmas and Easter), often playing bit parts and helping on set.


Sep 1997 - May 1999
Minot State University

Bachelor of Architecture

NOTE: Did not finish. Here is the weird backstory.

  • MSU cut the architecture program after my freshman year, because the head of the department passed away. My major defaulted to computer science as the second choice and I did a year of classes like COBOL.

  • I liked the technical aspect of computer science but missed the visual component of architectural drafting. I figured: "Maybe a tech career is not for me."

  • Instead, I transferred — losing a bunch of credits in the process — and pivoted to a BA in social sciences. I did so with an eye toward pursuing a ministry master's degree instead.

Anywho, my initial undergrad experience was not great.


Other Skills

I consider myself to be pretty well rounded. I have an appreciation for much of the diversity in life. I have played the trumpet since 1987. I have dabbled in the following foreign languages: Greek, Hebrew, Japanese, and Spanish. I also speak some rudimentary Russian, because that is my wife's family origin. Suffice it to say, I am flexible and teachable.

As far as technical expertise goes, I have made numerous award-winning video game levels. I was formerly in a group called Wired Lamp Studios, several members of which have gone on to work for Nintendo, Raven, and UbiSoft. I am familiar with a variety of tech aspects, including: hardware, software, and web related languages. Below is a more extensive list.


Software

While I realize that simply knowing how to use various tools is not an indicator of skill, it can be helpful to list 'em out anyway. Here is a summary of apps and tech that I have used, with varying levels of success.

3D & Game design

3D Studio Max, AutoCAD, Blender, Brice, GTK Radiant, JED, Maya, MilkShape, Swift 3D, Terragen, UnrealEd.

Graphics

Adobe XD, Figma, Fireworks, Flash, Microangelo, OmniGraffle, Paint Shop Pro, Photoshop, Visio.

Code

Dreamweaver, Notepad, Sublime Text, TextMate, Visual Studio Code.

Languages

CoffeeScript, CSS, JavaScript, JSON, MySQL, PHP, HTML, Ruby, Sass, TypeScript, XML.

Office productivity

Adobe Acrobat, Apple Keynote, Libre Office, Microsoft Office.

Video & sound editing

Final Cut Pro, GarageBand, Goldwave, iMovie, Real Audio, Quicktime.


References available upon request.