Matt Stills

Full Stack Web Developer

Matt Stills

Full Stack Web Developer & Atlanta Native

Client / Frontend


JavaScript has absolutely flourished over the past decade. New frameworks and tools are being developed at a pace that is surprisingly rapid even by technology standards. Some of the largest and most popular frameworks now have the backing of the likes of Google (Angular) and Facebook (React). Javascript has even become a "compile target" now for other scripting languages like CoffeeScript, Dart, and TypeScript earning it the (dubious) nickname of the "bytecode of the web." Beloved (or not) for its speed, dynamism, and unique prototypal inheritance system, JavaScript is one of my favorite languages! Once a programmer harnesses its highly dynamic and asynchronous nature, as well as the the "unorthodox" (at least if you're used to Java or C++) object-oriented style, the power of JavaScript is hard to deny. Support for the new ES6 and even ES7 syntaxes is coming fast making it one of the most exciting languages around these days.

JavaScript Frameworks

When writing JavaScript for the browser and working with the DOM, libraries like jQuery or similar are still invaluable. Although cross-browser issues are becoming less and less of an issue, legacy support is still expected for a lot of websites. Understanding the idiosyncrasies between various browser vendors and versions is part of being a web developer but there is no shame in letting a framework handle the nitty gritty once you do. John Resig is considered an internet hero for his work in this area. Utility frameworks like Underscore.js or a full-fledged app framework like Backbone, React, or Angular might be a good choice depending on the project's complexity and the size of your team.


Separating logic from presentation is a popular organizational strategy that becomes invaluable when designing any sufficiently large web application. Taking the time to craft tidy and flexible templates does yield long-term benefits. As a result, JavaScript string-based templating libraries have become popular. There are some great standalone options such as Handlebars.js and Dust.js (now maintained by LinkedIn). Most single page app frameworks (a la Angular and Ember) include their own templating language or expect you to use one. They're all fundamentally the same but with different feature sets and syntax.

HTML 5 & CSS 3

This one is pretty self-explainatory for a web developer. These two technologies are the fundamental building blocks of the web. Modern web layouts should take advantage of the latest and greatest parts of the spec (which are ever evolving) wherever possible! As traffic shifts and expands to mobile devices (which all tend to support modern web browsers and cutting edge features), it is becoming more and more feasible to use more bleeding edge web technologies without having to worry about legacy support. This is the situation that we've been waiting for for years! The modern spec for HTML and CSS is very exciting and has gainedappreciable support amongst all of the browser vendors. New features are being proposed all the time and experimental functionality is available in lots of beta-channel releases of browsers if you're into that type of thing.

Dynamic Layouts (Responsive, Fluid, et al)

In this day and age, there is a vast range of web-enabled devices that could be in the hands of your user. And guess what? They expect your website to not only work on that device, but to also offer a pleasant experience. It is taken for granted that your users will be able to do the same things on their phone as they are able to do on their desktop. Crafting mobile web designs that "respond" to any viewport and resolution is a challenging but very rewarding process. There are several dominant strategies being utilized to accomplish this. Responsive and fluid or some hybrid of the two are the most common. Some sites have decided to bifurcate the frontend presentation via an adaptive aproach (ie. serving different page entirely depending on the user agent). All of these techniques have their pros and cons and take time and careful planning to implement correctly. The extra work will certainly be appreciated by users when they can view (and more importantly, use) your site on their device of choice be it phone, desktop, tablet, or an internet-enabled toilet.

Cross-Browser Support

It is tempting to take advantage of all these shiny new web features that seem to be cropping up on a monthly basis. However, it is important not to leave older browsers and their respective users behind in the dust. Think of your parents! Think of your grandparents! They're just as important as any other user of your site. Sometimes websites and applications do need to work in IE 7 or a Firefox 3.5. Graceful degradation, progressive enhancement; there are many techniques out there for delivering the best to the modern browser crowd while still allowing for everyone else to use your site with all the functionality humming. (Ok, maybe not IE 7.)

Server / Backend


Finally JavaScript has been freed from the browser! Node.js is a server-side JavaScript engine based on Google's V8 which has become very popular. It seems to be an especially good fit for powering web APIs and various other web services. A lot of the time Node is not necessarily used to server HTML webpages but instead in a more behind-the-scenes role supporting various systems and mobile applications which need to perform numerous async transactions, etc. That's not to say it can't also be used to serve full websites. The ability to use the same language on the client and serverside (ie. isomorphic JS) is undeniably neat. Meanwhile, thanks to its very capable eponymous package manager, NPM, Node has a great community to boot that is getting bigger every day.


Love it or hate it, PHP powers a vast portion of the web and it is not going anywhere. PHP is not a hip language. PHP is not a sexy language. It is the beautifully flawed but ubiquitous and strangely powerful language doing the heavy-lifting behind the scenes at top-tier sites such as Facebook and Wikipedia among many others that you probably visit every day. It is an important language. Taking advantage of the latest features in PHP is a must though. The latest version (PHP7) has been optimized very well and touts a load of great new syntax and language features. PHP has grown and evolved (read: improved) a lot since the days when it earned its infamous reputation.


Drupal is an extremely powerful and flexible open-source CMS system written in PHP. Drupal is also very peculiar and to get the most out of it, you are encouraged to learn how to do things the "Drupal Way" as it is often called. I say this to point out that it has a fairly steep learning curve and also that the "Drupal Way" is oftentimes counter-intuitive or unorthodox. You shouldn't be discouraged from learning it though. You can make any sort of website or web application using Drupal. I am willing to bet many of your favorite websites run on Drupal. I have experience with versions 6, 7, and 8 primarily writing custom modules (my preference) but also with setting up and/or maintaining Drupal sites that employ a variety of popular 3rd party modules.

Wordpress / WP VIP

Sometimes you don't necessarily need all of the power and flexibility of something like Drupal. Also written in PHP, Wordpress fills another important niche in the CMS world and powers a huge array of (non-Tumblr) blogs that populate the internet. However, the CMS has really matured over the years and come closer in feature-set to Drupal albeit still not as flexible nor performant. I also have experience maintaining sites and writing custom plug-ins and themes for Wordpress as well as working with their premium Wordpress VIP service.

Web Servers

Every web developer knows about Apache, by far the most popular web server out there and cornerstone of the famous LAMP stack. Knowing how to setup and configure an Apache server is a vital skill for modern web developers and probaly always will be. Nginx is a relative new-comer, but rapidly being adopted for its simplicity of config, scalability, and unbridled speed when it comes to serving static files.


Freemarker is a templating system for Java. It is far more advanced (or, if you prefer - complicated) than some of the JavaScript string-based templating systems I have discussed above. It can be used to perform logical tests and even allows you to create functions and macros to do some rudimentary programming. It is the antithesis of "logic-less" templating.

SQL Databases

When it comes to relational databases, there are many flavors of SQL that each have suble differences but largely do the same thing. I have experience with: MySQL, MariaDB, PostgreSQL, and sqlite. The database is a cornerstone of your webstack and knowing how to get the data you need out of one efficiently is an important part of any web developer's repertoire. I have experience designing schema and working with DBAs to ensure that the data architecture will be performant and easily indexed, etc.

Non-SQL Databases

Document-based or "schema-less" databases have emerged and found uses over the past decade as well. They're no longer hailed as the "SQL-killers" they were initially thought to be but it seems now the two will continue to coexist. They're sometimes even used in tandem for certain applications. NoSQL is most useful for storing certain types of data (usually JSON documents) in a much more flexible fashion and have rightfully found their place filling a niche that traditional relational DBs leave open. Plus, the RESTful APIs and JSON storage formats that are commonly found "out of the box"in some noSQL DBs are especially convenient for the web. I have experience with CouchDB and MongoDB.


This is a technology that I have a bit of a love/hate relationship with. As much as I would prefer this not to be the case: XML is still a very common data format found around the web. That is to say: it probably won't be dying out anytime soon. XSLT is the powerful language used to bend XML to your will despite its extremely clunky and verbose syntax. I have experience using it to create HTML and JSON output, normally intended for further processing by a front-end scripting language.

Everything Else

Popular Web APIs

Every web developer probably knows (and fears, or at least respects) the big social networks. The most important REST APIs belong to the likes of Facebook, Twitter, Instagram, Youtube, and Google. I have worked with all of these APIs before to implement features such as single-sign-on using oAuth and various other social-related functions. I also have experience with REST API offerings from Flickr, Last.FM, and many other "smaller" companies.


When I first got an iPhone, I immediately felt compelled to learn how to build apps for it. Enter Objective-C. Apple really put a lot of thought into their tools and it shines through in the quality of their 3rd party app offerings. This is what has allowed them to dominate the mobile app landscape for so long although Android has a healthy marketplace as well now. The xCode IDE is a dream come true as far as IDEs go and rivals Microsoft's Visual Studio. Of course, I must mention Swift - Apple's new language for developing iOS applications. I have not had a chance to use it yet but in reading about it it sounds like a great successor.

Systems Languages

Although my main background and interests are in the web, I also have experience with C and Java. Java helped me learn about classical object-oriented programming and knowing C is important to understand what is going on under the hood in some of the other languages that I use such as Objective-C and PHP. I admire the simplicity of C, especially given that it is still very much relevant in certain industries. I am also closely watching modern systems language projects that are still in their infancy such as Rusta> and Go.

Shell Scripting

As a web developer, I deal with a lot of *nix systems on a regular basis. Aside from being able to get around on the command-line, knowing shell-scripting can vastly improve a programmer's efficiency and allows for automationg of tedious tasks that would otherwise be very time-consuming. BASH is the most common target for shell scripting, but sometimes you need to write something that works in good ole plain sh. If I feel that the script is only ever going to be used by me and performance is not a concern, I might just use zsh or even Node.JS.

Operating Systems

Being comfortable and thus being able to work quickly and effectively in your computer's operating system environment is another important facet of any developer whether the machine in question is your personal computer or your company's webserver(s). This is absolutely one of the most underlooked skills when it comes to developers and the realm where many time-savers and workflow efficiencies can be found. You need to be able to configure with agility, mouse around accurately, and type fast. I feel at home in pretty much all of the major/common operating systems including: OS X (any version), Linux (Ubuntu), various Unix distros including Darwin (Mac), and Windows 2000/XP/7.

Version Control

Hopefully programmers everywhere these days already understand the importance of version control - whether working on a team or solo - there should be no need for me to extol their virtues in this day and age. Please note that version control is not a glorified backup system. If you think of it as such, you as missing out on at least 90% of the benefits. Many modern build and deployment systems are designed to be compatible with popular version control systems. I have experience with Git, SVN, and CVS. As a matter of fact, I use Git to version and deploy this website.

Adobe Photoshop / Illustrator

Though I'm not a designer by trade, possessing a general competency in Photoshop and Illustrator is a very helpful skill for any web developer. It isn't uncommon for me to assist with cutting complicated layouts, re-sizing/re-touching/editing images, making small tweaks to effects or copy, and even optimizing assets for the web. The developer knows exactly what and how and to what dimensions they need a cut made. Plus, sometimes I do dabble a bit with design whenever someone gives me the opportunity. I know just enough to be dangerous.

Excel Macros

This is about as far away from web development as I will stray. Microsoft Excel is a powerful data tool that I, like most of its users, have a that classic love/hate relationship with. Nevertheless, knowing how to do some VB macro scripting comes in handy from time-to-time and it is definitely a niche skill +1 that can make life easier by automating data manipulation similar to how shell scripting allows for automation of operating tasks. For the record, I think Microsoft Excel is a great piece of software, probably the best part of the Office Suite.

Testing, Building, & Deploying

I have begun to write tests for my JavaScript using frameworks like Jasmine and Mocha. There are new test frameworks coming out all the time but they all do the same thing: automate software testing. For workflow and aesthetic testing (ie. end-to-end testing), I use CasperJS. Tests of course have a large up-front cost but it should pay for itself many times over for any sufficiently long-lived project (and especially if there is a large team of developers working on it). Grunt is great for composing build and test-related tasks like concatenation and minification of project files. Finally, code deployment can be done in a variety of ways; sometimes a simple Git post-receive hook will do. For more complex projects, a continuous integration suite like Bamboo, Jenkins, or Travis might be right. Lastly, this will get its own entry soon enough but Docker has exploded onto the scene and is one of the most exciting virtualization tools ever. If you don't already live in a containerized world, chances are you will soon!

The web moves at a blistering pace.
This space showcases projects I've been involved with over the past few years.

March Madness Live (2013-present)

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.

NCAA Digital (2014-present)

I have worked on a number of really exciting projects over the past few years since moving over to the NCAA Digital ( team from 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!

Sports Illustrated (2011-2013)

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

    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

  • NFL Draft Tracker

    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

  • NCAAB Gameflash (Desktop)

    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

  • NCAAB Gameflash (Mobile)

    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

  • Brand Blogs (hosted with Wordpress VIP)

    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

  • Network Bar

    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

  • NBA Gameflash (Desktop)

    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

  • NBA Gameflash (Mobile)

    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

  • MLB Gameflash (Desktop)

    The Major League Baseball version of the Gameflash App built for 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

  • MLB Gameflash (Mobile)

    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

  • NFL Gameflash (Desktop)

    The National Football League version of the Gameflash App built for 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

  • NFL Gameflash (Mobile)

    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

  • NCAAF Gameflash (Desktop)

    The NCAA college football version of the Gameflash App built for 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 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

  • NCAAF Gameflash (Mobile)

    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

  • March Madness Channel Guide '12

    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

  • Things You Can't See

    Being a frontend developer has the built-in benefit of having lots of forward-facing projects ready for showing off to people. However, not everything I do is so easily articulated via a simple screenshot or available for live-viewing through links. All of the things below are under the hood and behind the scenes.
    • CMS migration - Worked on a migration to an entirely new, proprietary CMS system (the less this transition was noticable to the public, the better! The aim of a good migration is be completely seamless).
    • Lazy/async loading - Implemented an async loading track to prioritize site-critical JavaScript ahead of things like ads that can be loaded asynchronously. Similarly, social buttons and things that didn't need to be loaded until a user explicitly interacted with them were moved to a lazy-loading track.
    • Documentation - All developers seem to understand the value of documentation but way fewer actually put in the time/effort to write it. I've lead a number of efforts on the team to document critical site functionality and code. I always do my best to find time to document anything that I'm working on for my own benefit as well as the benefit of future maintainers.
    • Search optimization and social integration - Worked to implement a laundry list of SEO improvements as well as some social optimizations that were recommended by various consulting groups.
    • JSONP Loader - Wrote a JSONP queue-based loading mechanism with a slew of callbacks that has been utilized throughout much of my work at SI. The piece has been invaluable for each and every Gameflash project we did.

Teacher Resource Network (2010-2011)

  • Branches

    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

  • Lesson

    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

"Simplicity is complexity resolved." - Constantin Brancusi

Quick Bio Last updated Jun 2016

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.

Hardware / Software

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.