Bill Jacobs
Verified Expert in Engineering
Software Developer
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
Experience
Availability
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
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.
Web Developer
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.
Web Developer
- 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.
Experience
Paper Pickaxe
https://www.paperpickaxe.comPaper 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/RedBlackNodeTypically 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 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
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
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
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/WrapAsYouTypeSkills
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
Education
Master's Degree in Electrical Engineering and Computer Science
MIT | Massachusetts Institute of Technology - Cambridge, MA, USA
How to Work with Toptal
Toptal matches you directly with global industry experts from our network in hours—not weeks or months.
Share your needs
Choose your talent
Start your risk-free talent trial
Top talent is in high demand.
Start hiring