Scroll To View More
Bill Jacobs, Software Developer in Greenville, SC, United States
Bill Jacobs

Software Developer in Greenville, SC, United States

Member since February 4, 2019
Bill is an MIT graduate with five years of professional experience as a web developer. During his tenure at the Facebook mobile team, the number of monthly active users on mobile grew from about 50 million to over 400 million. He is knowledgeable in Python, Django, Ruby on Rails, and React.
Bill is now available for hire

Portfolio

  • Skytap
    Ruby, Ruby on Rails, JavaScript, CoffeeScript, C, Java, REST
  • Appetas
    Python, Django, JavaScript, Backbone.js, jQuery, REST, Heroku
  • Facebook
    PHP, JavaScript, SQL, Objective-C, Java, Ruby

Experience

  • JavaScript, 8 years
  • C, 2 years
  • iOS, 2 years
  • Ruby on Rails (RoR), 1 year
  • Android, 1 year
  • Django, 1 year
  • Python, 1 year
  • React, 1 year
Greenville, SC, United States

Availability

Part-time

Preferred Environment

Sublime Text, Git

The most amazing...

...task I've completed was rewriting almost all of Facebook's mobile site - laying the groundwork for expanding the mobile and desktop sites over the coming years.

Employment

  • Web Developer

    2014 - 2015
    Skytap
    • Improved log-in security by using industry-standard password hashing.
    • Implemented a staged VM startup, allowing clients to automatically get a database virtual machine up and running before booting up a web server VM.
    • Improved responsiveness and performance by pushing VM updates via WebSockets, rather than polling for changes.
    • Reduced data transfer for viewing a VM's screen by 25%, by optimizing the Guacamole library.
    • Refined the implementation of user roles and permissions.
    Technologies: Ruby, Ruby on Rails, JavaScript, CoffeeScript, C, Java, REST
  • Web Developer

    2013 - 2013
    Appetas
    • Implemented theme customization, enabling restaurant managers to customize the look and feel of their websites or to choose from over 30 preset themes.
    • Fixed several Internet Explorer rendering issues.
    • Worked on restaurant menu editing, including integration with Locu and Foursquare and a user interface for changing a menu.
    • Improved SEO for restaurant websites.
    • Implemented billing engine for creating monthly invoices for Appetas's partners.
    Technologies: Python, Django, JavaScript, Backbone.js, jQuery, REST, Heroku
  • Web Developer

    2009 - 2013
    Facebook
    • Rewrote the bulk of the mobile site to use Facebook's new MVC framework, and maintained the framework as it matured.
    • Implemented UI tests for 10+ mobile website pages and features.
    • Reduced the load time of the iPhone app by 50%.
    • Created an Objective-C framework for building UI tests for the iPhone app.
    • Drove an effort to preemptively secure the mobile site from exploits such as XSS and CSRF.
    • Improved the experience for junior developers as the mobile team expanded from about 5 developers to about 30 developers, by giving presentations, adding Lint checks and error logs, implementing scripts for generating skeleton code, and more.
    • Added GraphQL support to about 60 story types by rewriting them in a modern framework.
    • Designed and implemented a GraphQL API for Facebook's dynamically generated navigation links, including a rewrite of major components.
    Technologies: PHP, JavaScript, SQL, Objective-C, Java, Ruby

Experience

  • Paper Pickaxe (Development)
    https://www.paperpickaxe.com

    I was the sole creator of the Paper Pickaxe website (AWS, Java, React, GraphQL, Relay, ES6, jQuery, Python, Django, and OpenGL).

    Paper Pickaxe enables users to bring their Minecraft creations to life, using the art of paper crafting. It takes a piece of a Minecraft world as input and automatically generates a PDF file the user can print, cut out, and fold into that shape.

  • Facebook MVC Framework (Development)

    I was the sole developer responsible for expanding Facebook's MVC framework for PHP—which at the time supported only the minimalist subdomain Lite.facebook.com—to support Facebook's mobile website.

    I rewrote the majority of the mobile site to use the framework. Later, the bulk of the Facebook desktop site was moved to this framework which I continued to maintain.

  • iPhone UI Testing Framework (Development)

    I designed and implemented a framework for performing automated UI testing of Facebook's iPhone app.

    The framework is written in Objective-C, as are the test cases. Using Objective-C enables the tests to make calls to the app's native code. The design is single-threaded and asynchronous, and it allows asynchronous methods to be composed.

  • Navigation links API (Development)

    At Facebook, I was the primary developer responsible for designing and implementing a GraphQL API for the dynamically generated navigation links, internally referred to as "bookmarks."

    This required redesigning and rewriting major portions of the bookmarks code, in order to modernize the code and present a uniform interface that could be consumed not just by the desktop site, but also by the iPhone and Android apps. The API is designed to handle different categories of bookmarks (such as applications, groups, and events), ranking within each category, paging through results, and several other details. We were careful to do this in a way that coheres with the rest of the PHP codebase, accounts for the differences between all of the interfaces, deals with the lack of a frontend for some features on some app and web releases, and hopefully enables future changes to the system without requiring breaking changes to the API.

  • Staged VM Startup (Development)

    Using Ruby on Rails and JavaScript, another Skytap developer and I implemented staged VM startup in order to start a set of virtual machines in a particular order.

    The goal was to support use cases where one machine needs to be ready to service requests before another VM starts, such as when a web server needs to be able to immediately connect to a database server, as soon as the web server starts running.

    We implemented the simple approach of allowing the user to specify startup delays so that we waited a specified amount of time before booting each VM. This setting is attached to each group of VMs so instead of needing to specify the delays each time the user starts a VM group, he only needs to configure it once, and the "boot VM group" button will have the desired effect from then on.

Skills

  • Languages

    Python, C, C++, ECMAScript (ES6), GraphQL, HTML, Java, JavaScript, Objective-C, PHP, Ruby, SQL, CoffeeScript, CSS
  • Frameworks

    Django, Relay, Ruby on Rails (RoR)
  • Libraries/APIs

    jQuery, React, Backbone.js, OpenGL
  • Paradigms

    REST
  • Platforms

    Unix, Android, AWS EC2, Heroku, iOS
  • Storage

    AWS S3, MongoDB

Education

  • Master's degree in Electrical Engineering and Computer Science
    2004 - 2009
    MIT | Massachusetts Institute of Technology - Cambridge, MA, USA
I really like this profile
Share it with others