• I am Scott MacDowell
  • Front End Developer
  • Growth Hacker
  • Full Stacker
  • Designer
Example of search for plays and creating a play

LOLPlaybook

Role: Everything (Creator)

The LOLPlaybook is being developed to help League of Legends players effectively coordinate with teammates. This application allows players to easily draw out set plays, share them, and organize playbooks.

This is a bootstrapped startup I have been working on alone. Tasks have included design, full-stack dev, project management, market research, competitive analysis, monetization strategy and quite a bit more.

In Progress

How was it made?

The Technology

Built on the MEAN stack:

MongoDB, Express.js, Angular.js, and Node.js.

Additional backend tech:

Mocha (with Should and Supertest) for BDD.

Passport for authentication.

JWT-Simple for token handling.

Mongoose for easier MongoDB management.

Aysnc for asynchronous control flow.

Additional front end tech:

Kinetic for HTML5 canvas drawing.

JQuery to handle UI/UX features.

My Creation Process

The process for creating a new application can seem daunting at first, but with solid experience and constant organization, the process ends up being fairly straight forward.

I have created and managed the development of numerous apps, in doing so I've learned from others and from my own mistakes.

This is an actual example of how I create an app from idea to conception.

Step 1: Mind Maps & Mocks

First things first, I had to get my ideas out and sorted. I used a simple tool I love called MindMup.

Next I took these sorted ideas and created working mockups using Balasamiq

Step 2: Designing

Once the ideas, the flow, and the mocks were set I started on designing the front-end of the application.

Using Photoshop & Illustrator, I meticulously transformed my mocks into visual prototypes of the app.

Although the designs always change and are amended, I find that it helps to really see a professional design prototype. It definitely aids in pointing out potential pitfalls and generating new ideas.

Step 3: Gotta Be AGILE

Developing is easiest when each task, feature and function to be created is laid out on paper. While I can operate efficiently in a lean startup, cowboy coding environment, I prefer something more organized.

For the LOLPlaybook I used pivotal tracker to manage myself in an AGILE environment. I absolutely love working in an AGILE manner as I find it both motivating and intuitive to developing.

Step 4: A RESTful API

Next it was onto building the API that is used as the main hub for the LOLPlaybook. I chose Node.js because of it’s speed, ease of use, and my familiarity with it. I considered Sinatra, but decided to stick with a pure JS stack.

I like to keep my code tight and modular, so I adopted a Behavior Driven Development workflow. Test to fail, fix to green. Never leave the project in the red. For my testing setup I found that Mocha in conjunction with Should.js, Supertest.js fit all my API testing needs.

I chose MongoDB in coupled with Mongoose.js for my database backend as it fits into Node so incredibly well.

Step 5: The Front End

I am currently at this stage of development. The front end is being built with Angular.js, LOLPlaybook is my first project using Angular and boy is there a lot to learn. I'm loving it though.

If I am working alone, I always try and leave the front end for last. All too often so much changes on the backend, which just leads to constant front end changes. If I am working with a team, the front end is developed in parallel with the backend.

The most interesting challenge so far though has been working with HTML5 Canvas, allowing the user to draw out set plays and the challenge of saving those plays and loading them from the api.

Step 6: Launch!

Last but most certainly not least, the launch!

Once everything is built to spec and tested out, the app will be deployed to the wild. I will most likely use Digital Ocean or RackSpace to host the Node driven API and the front end. I plan on using Mongolabs to host the database and Amazon AWS for my content.

I will also create a staging branch to make and test revisions and new features before they are deployed to production.

Pagination Controls:
Example of Rundavoo

Rundavoo

Role: Full-Stack Engineer

Rundavoo is a social planning platform created to simplify the planning process through group collaboration and by helping businesses connect with planners.

During beta, I owned the front end and "views" portion of our Ruby on Rails stack. I also worked a bit with the Models and Controllers. During the second year, we switched to an API driven platform where I owned the front end / views and contributed to the Backbone.js portion of the web app.

View Website *website has since been changed

The Technology

Beta Build

Built on a Rails based Stack:

Ruby on Rails, PostgreSQL, HTML5, CSS3, JS.

Other backend technologies include:

RSpec (with FactoryGirl and Capybara) for testing.

Koala to help with Facebook graph & OAuth.

MixPanel to manage analytics & user data.

PostgreSQL for the database.

Other front end technologies include:

Mustache for front end templating.

SCSS to write more efficient CSS.

JQuery to handle UI/UX features.

&

Final Build

Built to be asynchronous:

Sinatra, Backbone.js, MongoDB, & Node.js.

The API:

Our team decided to build the API using Sinatra, my involvement here was minor.

Notable front end technologies:

Backbone.js as our MV* framework.

Express.js for the robust features.

Jasmine for testing.

Grunt to simplify chores and task running.

Handlebars for front end templating.

SCSS to write more efficient CSS.

Example of search for plays and creating a play

Paris Hilton

Role: Full-Stack & Digital Consultant

Paris Hilton and her team were looking for a new way to monetize her brand online. As a solution, my partner and I created fresh online marketing strategies and developed a unique application to monetize her traffic. Once launched, we managed the ad sales and media buys for her website.

I personally created and helped implement the marketing strategy, oversaw the data/analytics, and developed the web based application for this project.

View Website *website has since been changed

Lean Growth Engineering

Digital Strategy

What was developed?

We developed a heavily customized WordPress app which hosted all of her visual content on her website.

The app was connected to an iPhone app we had developed which enabled her to take pictures and directly upload them to all of her social properties.

This acted as a funnel, bringing all of her social traffic back to her website, effectively allowing us to monetize it ourselves.

Overview of work:

Developed the lean web app in WordPress and PHP

Managed eCommerce and implemented SEO strategies

Big data and analytics management

Monetization strategies included PPC, affiliate, and b2b partnerships.

Example of search for plays and creating a play

Allied Wallet

Role: VP of Marketing

Allied Wallet is an international payment processor, specializing in multi-currency transactions, "CNP" credit card processing. Allied also offers a full service payment gateway and eWallet solutions.

During my 4 years at Allied, I wore many hats. From project management to development, I had my hands in nearly everything. I also gained very unique experience, priceless connections, and valuable knowledge on just about every topic regarding the "payments" industry

View Website *website has since been changed

Overview of Work

Payments Guru

Technologies:

Front end developed in WordPress.

PHP was used to create scripts to boost SEO rankings, integrate customer's shopping carts, develop underwriting bots, and many other helpful hacks.

AGILE / SCRUM environment.

Dabbled in the backend using .Net.

Payments Experience:

High level knowledge of PCI-DSS Compliance, digital security, underwriting accounts, fraud prevention, and the specific workings of all methods of digital commerce. Examples of this expertise include transfers in ACH, Wires, eWallet and high level experience with all card brands and their specific regulations.

.

Growth Engineering.

Running a marketing department of any size company is no easy task, but with a clever mix automation and analytical direction, the job becomes a joy.

During my tenure at Allied Wallet, my contributions and leadership directly lead to the 1,500%+ growth seen over 4 years.

Source (2011-2012's growth not included).

SEO

Through aggressive link building, a meticulous attention to detail, fine tuning and endless hours of testing results, I was able to rank on the first page of Google for some of the most competitive keywords in the industry.

This saved Allied Wallet millions in advertising costs, and played a key role in helping Allied go from boutique startup to international corporation.

Digital Campaigns

I setup and managed all of our paid online advertising, including the landing page designs, a/b testing, and all analytics.

With a $xx,xxx per month budget, we saw the most success on Google AdWords and on Facebook. Due to the high margins of the industry, we were able to almost always able to come away in a profitable position.

Print Campaigns

Some say print is dead, I don't disagree but Allied's owner loved to see our logo in magazines.

While our print advertising did not directly bring in new business, the ads were aimed at acquiring new merchant account brokers. These brokers played a large role Allied Wallet growth.

B2B Partnerships

Another huge portion of our marketing strategy were the integrations with strategic B2B partners.

During my time with Allied Wallet I was able to have our payment gateway directly integrated and advertised in many popular shopping carts. Most notably: PrestaShop, VirtueMart, CubeCart, and OSCommerce.

A full list can be viewed here

Affiliate Marketing

In the payments industry, affiliate marketing comes in two forms. Paying webmasters for sending over traffic which end up as new leads, or more inportantly, dedicated resellers (or brokers), who send over prequalified leads and receive residual payments on those accounts.

These resellers were Allied Wallet's most important source for new business. Recognizing this, I championed the creation of a partnership program and internal department to acquire and manage our resellers.

Data Driven Decesions

With millions of accounts in our system, we were able to use that data to compile accurate descriptions of our demographics which drove our advertising decisions.

The biggest role of this data wasn't limited to marketing, it played a key role in fraud detection and reduction which in turn save Allied Wallet and its merchants millions of dollars in bogus transaction costs (chargebacks, fees, etc).

Pagination Controls:

For the Love of the Code

Image maps, tables everywhere, and oh the frames... the frames were the worst. Part of me misses the excitement of it all. I remember putting my first website up on tripod.com then showing my "work of art" to my friends and family exclaiming "I made this!", I was hooked.

A lot has changed since then. Thank goodness for that and thank Håkon Wium Lie (inventor of CSS) too, the widespread adoption of CSS is what finally coaxed me into this career. So here we are, front-end development is more exciting than ever before, what was once a simple job description has evolved into something beautiful and complex. With the advent of HTML5/CSS3 and the evolution javascript is currently undergoing... it is like the wild-west and it is an amazing time to be at the "front-end" of this tech movement.

The thing about programming, if it is your calling in life, it is impossible to ignore the thirst for more. It is this insatiable urge to keep learning, to keep pushing the boundaries, to keep coding after you've been at it for 12 hours because "you almost have it!", to know that no idea or concept is too impossible to bring to reality. For those that have no clue what I am talking about, this probably sounds ridiculous... but for those that do, just show me where the coffee machine is and lets start creating.

My Chops

I have been creating websites for almost 15 years now, professionally for 7. During that time I have picked up and developed serious projects in:

HTML5 / CSS3. In addition to its standard and more advanced uses, I have also built HTML5 Canvas features with Kinetic.js. For good measure I'll also mention that I have I adore SASS /SCSS / Compass, Mustache / Handlebars experience and some HAML experience.

PHP. From customizing CMS builds (WordPress, Joomla, etc), to scripting, all the way to MVC PHP frameworks such as CodeIgniter, I've done it all. While PHP was my first server side language, I tend not to use it much these days unless the job calls for it.

Javascript. Sure I have used JS since I began developing, but it was only a few years ago that I really fell in love with the language. I am excited by the object-oriented and server side direction it is heading with the creation of Node and all the MVC / MVVC / MV* frameworks that are springing up for it.

JQuery. This isn't really a language, more of a JS library, but hey you're not judging right? Not much to say about JQuery though. I use it. I love it. It makes traversing DOM elements a breeze and UI/UX enhancements fun.

Ruby on Rails. We originally built Rundavoo as a pure RoR webapp. During the build process I owned the Views portion of the project and paired 4-6 hours daily, working on the Model & Controller portions. I really enjoyed working with Ruby on Rails and would love the opportunity to do so again.

Node.js. Once Rundavoo decided to pivot and become asynchronous, our front-end was then built on Node & Backbone. During this time I learned the basics of Node and how powerful it is. Since then, I decided to use Node to build my API for LOLPlaybook. It was a joy to use. I have also built simple side projects with Node such as a chat app using socket.io and a very simple social networking site.

Backbone.js. After Rundavoo's pivot, we decided upon using Backbone.js as our front-end MVC framework. Once again I owned the Views portion of this, but also was able to work on all aspects of Backbone while pairing.

Angular.js. I am currently building LOLPlaybook's front-end in Angular. While I feel like it is very different from Backbone.js, the Angular methodology comes very naturally to me, and I could see myself choosing it over other options in the future.

TDD/BDD. Rundavoo was my first real introduction to testing. For the Ruby on Rails portion we used RSpec religiously in a TDD fashion. Once we changed to Node / Backbone on the front-end we used Jasmine. The LOLPlaybook is tested with a mixture of Mocha, Should, & Supertest, with Karma being used for integration tests.

Git. Not much else needs to be said here, Git rocks.

Databases. I have worked quite a bit with MYSQL & MongoDB. I also have experience working with PostgreSQL.

Other Languages. I have yet to really dive into Python, Java, .Net, or C based projects but would very much welcome the opportunity to do so.