Matt Stills
Full Stack Web Developer & Atlanta Native
I've been working on the March Madness Live desktop experience for the past three years. Recently, for the 2015-2016 season, I was lead on the web development side of the application. There are many systems and moving parts involved to deliver the live video experience that must function in harmony. It is one of the largest and most complex projects that I've ever worked on and we are extremely proud to deliver it without any major issues every year for the Men's D1 Basketball tournament. It's always exciting to be part of such a huge production with so many eyes on it. The 2016 version of the application is a JavaScript application that uses the Backbone and Handlebars.
I have worked on a number of really exciting projects over the past few years since moving over to the NCAA Digital (NCAA.com) team from SI.com. I will update this space as soon as I have a chance to document some of them (read: there's a lot) in detail. For now, just visit the site on the device or platform of your choice as it is fully adaptive. It was re-designed back in late October 2013. At that time, we also upgraded to Drupal 7 from version 6. My team of me and three other developers are responsible for the entire shebang and we're really proud of it!
Below were my contributions to the Sports Illustrated website in the ~2 years that I was working on it. The business and website have gone through many changes since then, including a full-scale redesign. Unfortunately, that means none of these pages nor functionality below are live on the public internet these days.
SI Now is a live video hub designed for the eponymous show. There is a new episode every business day and the app cycles through three states: upcoming, live, and archived. Each is a slightly different view. Nailing down the state and temporal logic was somewhat challenging but the hub came together nicely. A carousel at the top lets you navigate through past episodes. It features a clip reel for each date as well as other widgets such as a poll and related episodes which can be manipulated via the CMS platform.
Built with: JavaScript, Freemarker, Handlebars.js, Date.js
For 2013, we totally re-designed the draft tracker experience for NFL. It is, for all intents and purposes, a single-page JavaScript app with a tabbed navigation. There are a variety of data-intensive views available. During the draft itself, the page was 100% dynamic and updated live similar to how the Gameflash apps work. This same app is also used as the foundation for the very similar NBA draft tracker.
Built with: JavaScript, jQuery, Handlebars.js
For the desktop version of NCAAB Gameflash, we had to make some low-level tweaks to the proven architecture that powers the other Gameflash apps. Again, we opted for very light usage of XSLT to allow for a nimble deploy flow. The architecture changes allow for coverage tiers as not all college basketball games get a full data feed. This app always knows what data it has and presents only what is available in a clean manner. Aside from coding the low-level changes, I mostly served as an advisor on this project so new develoeprs would have a chance to learn about the architecture.
Built with: JavaScript, jQuery, XSLT, Handlebars.js
A mobile-optimized version of the desktop app. Like its siblings, this app was built using Twitter bootstrap and has optimizations for portrait vs. landscape orientations as well as iPhone Retina. I handled a lot of the app development that included porting the desktop code over to our mobile-specific Gameflash architecture.
Built with: JavaScript, jQuery, Handlebars.js, Bootstrap
These two 'brand' blogs were the first of their kind. Though a stable of sports-related blogs already existed within the SI network, these warranted a totally new design. Both are built on the Wordpress and hosted on their VIP platform using mostly custom plugins that we wrote from scratch to help promote SI's non-sports content. Wordpress widgets were also heavily utilized to allow unprecedented editorial control through the dashboard.
Built with: JavaScript, jQuery, Wordpress, PHP
This network bar was designed to work on any site. As such, it is a compact JavaScript-only solution that can easily be dropped into the <head/> of partner websites and the like. It serves as a real-time window into what is happening all over the SI network of websites and is powered by JSON feeds straight out of the main site CMS and from the Wordpress blogs' RSS.
Built with: JavaScript, jQuery, JSONP
For the desktop version of NBA Gameflash, we employed all of the tricks and valuable lessons learned from previous apps. The development went faster than ever! We decided to curb back reliance on server-side markup even further (XSLT), making the entire viewport of the app rendered by JavaScript thanks to Handlebars, just like the newer mobile sites. In addition to overseeing the full development, I programmed the live court view.
Built with: JavaScript, jQuery, XSLT, Handlebars.js
A mobile-optimized version of the desktop app. This was built using Twitter bootstrap and has optimizations for portrait vs. landscape orientations as well as iPhone Retina. I served as a advisory developer on this project helping to bring some new members into the fold on Gameflash, I also ported the court from desktop and optimized it for mobile devices.
Built with: JavaScript, jQuery, Handlebars.js, Bootstrap
The Major League Baseball version of the Gameflash App built for SI.com. This is a highly dynamic data-driven JavaScript app that can serve as a second-screen or replacement experience for live games. I served as the lead developer on this project, and designed the architecture that supports it. My favorite part was working on the base-running and hit trajectory animations.
Built with: JavaScript, jQuery, XSLT, Mustache.js
A mobile-optimized version of the desktop app. This was built using Twitter bootstrap and has optimizations for portrait vs. landscape orientations as well as iPhone Retina. I served as the lead developer on this project. Although this project uses the same JS codebase as the desktop app, all of the templates and markup was completely redone for mobile devices.
Built with: JavaScript, jQuery, Handlebars.js, Bootstrap
The National Football League version of the Gameflash App built for SI.com. Like the other Gameflash apps, it is a data-driven JavaScript app. I programmed the football field and a lot of the underlying architecture including a queue-based JSONP loading mechanism that has since been re-used on a number of other projects.
Built with: JavaScript, jQuery, XSLT
A mobile-optimized version of the desktop app. This app has optimizations for portrait vs. landscape orientations as well as iPhone Retina. It uses pre-compiled Handlebar templates for an extra speed boost. I was the sole developer on this project. The JS codebase from desktop was revamped to use the new architecture we developed during the MLB project.
Built with: JavaScript, jQuery, Handlebars.js
The NCAA college football version of the Gameflash App built for SI.com. Although it looks very similar to the NFL version, the data feed that drives the app was different enough to warrant its own codebase and logic. This was my first project for SI.com and I learned a lot about building dynamic and highly optimized apps in JavaScript for the modern web. All Gameflash apps proudly work in browsers going back to IE7.
Built with: JavaScript, jQuery, XSLT
A mobile-optimized version of the desktop app. This app has optimizations for portrait vs. landscape orientations as well as iPhone Retina. It uses pre-compiled Handlebar templates for an extra speed boost. This was developed simultaneously with the NFL mobile app. I served as an advisor for this, handing down code as I ported it from the NFL version and helping new developers on the team learn the desktop codebase.
Built with: JavaScript, jQuery, Handlebars.js, Bootstrap
This is a March Madness live scoreboard app with built-in channel guide and social buzz functionality. It has a modal form where you can enter your zip-code and lookup TV providers in your area. Once a provider has been selected, the app calls out to an API to retrieve the station number for each game.
Built with: JavaScript, jQuery
Functionality and feature-wise, Branches is essentially a social networking site. However, it is specifically geared for community/school organizers. Built on top of Drupal 7, this is an otherwise totally custom site. I worked on a team of developers to create the many custom modules powering this system. I worked specifically on the single-sign-on (Facebook connect), news feed/feed sharing, and a unified notification system.
Built with: PHP, Drupal 7, MySQL
A lesson planning web app designed for grade-school teachers. We wanted this app to have a 'native desktop app' feel. Therefore, it is completely AJAX-ed out (ie. there is no page reloading). It makes heavy usage of CSS3 transitions for snappy animation effects where-supported, and falls back on JavaScript animations in older browsers. Bonus feature: it has a new color scheme each month.
Built with: PHP, Drupal 6, MySQL, jQuery
I was born in Athens, Georgia in the spring of 1986. I've lived in Georgia my whole life but I grew up in Atlanta and it is the place I call home. Ever since I could reach a keyboard, I have been using computers. I was fortunate enough to have one in the household as my dad's work provided him with one of the first laptops ever made by IBM. I immediately fell in love with computers and considered them to be the best "toys" out there. To my childhood mind, it was like something straight out of Star Wars (incidentally some my favorite movies at the time to this day). Eventually, my family bought a desktop computer and put it where anyone might think to put a revolutionary and expensive luxury appliance - the kitchen. It was made by a company called Micron and had 0.75 GB (read: three quarters of a gig!) of disk space with 16MB of RAM. It came with Windows 3.11 at first before Windows 95 came out a few years later.
My interest in programming was initially sparked in a rather unconventional way: by using mIRC, a popular internet relay chat client. Even back in the late 90's, mIRC featured a fully-fledged scripting language with C-style syntax and a surprising amount of documentation to accompany it. That was the first time I ever defined a variable or used an if/else statement. I read their documentation for fun, eager to learn about new ways to solve problems in my scripts and eventually ended up teaching myself how to program computer software.
From there I quickly became interested in more general systems languages like BASIC and C. Something about programming awakened this auto-didactic spirit within me and I quickly took to absorbing as much computing-related knowledge as I could. I've have heard the term "knowledge sponge" used before and that is what it felt like. This was conveniently right around this time that the internet was really starting to penetrate mainstream society and eventually grew to achieve the ubiquity and importance that is apparent today. Broadband connections were becoming more and more affordable. Suddenly every business wanted needed a website. I had always enjoyed making little websites in plain HTML (don't tell anyone... this page is just plain HTML with a smidge of JavaScript) and fooling around in Adobe Photoshop. Forgive the corniness of this statement but as the internet grew up, so did I. Working my way through Atlanta Public Schools and then Georgia Tech, I made websites for money, friends, and family. Sometimes I would make things just for fun or out of curiosity. When it came time to start a career, picking web development was a no-brainer. I'm very fortunate to be able to say truthfully that love what I do for a living and I try to remind myself of how lucky I am each and every day. Sometimes I think of what I do as solving gigantic puzzles, like a type of 3D jigasw on steroids. They may not always be fun puzzles, nor fair, but that's all part of the challenge.
The best jobs are the most challenging ones and the learning is never over.
These days, I am partial to Apple's software. I have a lot of love for their operating systems, especially OS X. As such, I do all of my working and playing on Macs (usually a Macbook Pro model). Still though, I strongly feel that taking a step back and considering the right tool for the job is always preferable to blindly adopting what you know.
I'm a tad picky about keyboards since they are a rather important component of any programmer's day-to-day life. I think it's worth spending the time to find a keyboard that you love and that feels perfect. To the delight (or chagrin) of cubemates everywhere, I've finally settled on the Cherry Brown MX switches which have great feedback and are relatively quiet to boot.
When it comes to software applications, everybody has their own preferences that they will probably defend adamantly. I could ramble on all day about my favorite applications and tools but I think the most relevant thing to actually list here is what I use for developement. Don't worry, it is a short list!
Various specialty software like Photoshop obviously comes in handy in my day-to-day work. For most everything else, there is the command line. For my terminal, I like to use use iTerm 2 with zsh (if available) for shell.