Bill Jacobs, Developer in Greenville, SC, United States
Bill is available for hire
Hire Bill

Bill Jacobs

Verified Expert  in Engineering

Software Developer

Location
Greenville, SC, United States
Toptal Member Since
March 22, 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.

Portfolio

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

Experience

Availability

Part-time

Preferred Environment

Git, Sublime Text

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.

Work Experience

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: REST, Java, C, CoffeeScript, JavaScript, Ruby on Rails (RoR), Ruby

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: Heroku, REST, jQuery, Backbone.js, JavaScript, Django, Python

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: Ruby, Java, Objective-C, SQL, JavaScript, PHP

Paper Pickaxe

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.

RedBlackNode

https://github.com/btrekkie/RedBlackNode
RedBlackNode is a Java implementation of red-black trees that supports arbitrary augmentation. It bridges the gap between theory and practice, making it theoretically possible for developers to solve a wide range of problems that benefit from augmentation but are also easy and practical.

Typically these applications efficiently locate a set of points of interest in a given map region, then quickly determine whether two vertices are connected in a changing graph and efficiently identify the nth largest item in a changing list of items.

Facebook MVC Framework

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

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

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

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.

WrapAsYouType

https://github.com/btrekkie/WrapAsYouType
WrapAsYouType is a plugin for the text editor Sublime Text. The plugin automatically performs hard word wrapping within specified file sections in real time as the user types. For example, WrapAsYouType can limit lines of C++ code contained in block comments (between /* and */) and sequences of line comments (after //) to a width of 80 columns. This reduces developer time by eliminating some of the grunt work in writing documentation.

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, Amazon EC2, Heroku, iOS

Tools

Sublime Text, Git

Storage

Amazon S3 (AWS S3), MongoDB

Other

Plugins

2004 - 2009

Master's Degree in Electrical Engineering and Computer Science

MIT | Massachusetts Institute of Technology - Cambridge, MA, USA

Collaboration That Works

How to Work with Toptal

Toptal matches you directly with global industry experts from our network in hours—not weeks or months.

1

Share your needs

Discuss your requirements and refine your scope in a call with a Toptal domain expert.
2

Choose your talent

Get a short list of expertly matched talent within 24 hours to review, interview, and choose from.
3

Start your risk-free talent trial

Work with your chosen talent on a trial basis for up to two weeks. Pay only if you decide to hire them.

Top talent is in high demand.

Start hiring