Yoann Padioleau (Facebook)

Slides:



Advertisements
Similar presentations
CodeMap Google Maps for Source Code Yoann Padioleau (Facebook)
Advertisements

Visualizing maps on the web. What is a Map? A map is a drawing that is the representation, on a certain scale, of a terrain.
Google Earth/Sky in the Classroom. What is Google Earth/Sky? Google Earth is free program which allows users to: Explore geographic locations both on.
Improving your OpenEdge® Development Productivity David Lund Sr. Training Program Manager, Progress.
* * To use Internet Explorer 9 you need Windows® 7, but you can use Internet Explorer 8 on Windows® XP Fast Internet Explorer 9 harnesses the untapped.
CompSci Applets & Video Games. CompSci Applets & Video Games The Plan  Applets  Demo on making and running a simple applet from scratch.
Microsoft ® Research Faculty Summit 2002 Building Scalable User Interfaces for Mobile Devices using.NET Technologies Benjamin B. Bederson Computer Science.
ClearEye: An Visualization System for Document Revision CPSC 533C Project Update Qiang Kong Qixing Zheng.
Tree-Maps: A Space-Filling Approach to the Visualization of Hierarchical Information Structures Brian Johnson Ben Shneiderman (HCIL TR 91-06) Steve Betten.
Linux+ Guide to Linux Certification, Second Edition
Optimizing picture file size. Three things you can do to lower file size  Lower the resolution  Crop the picture  Save with a file format that uses.
FHIRFarm – How to build a FHIR Server Farm (quickly)
Standards for Technology in Automotive Retail STAR Workbench 1.0 Michelle Vidanes & Dave Carver STAR XML Data Architects, Certified Scrum Masters.
Introduction to GOOGLE EARTH.
Fusion Overview Paul Spencer CTO Jason Fournier Product Manager
Applets & Video Games 1 Last Edited 1/10/04CPS4: Java for Video Games Applets &
Siemens Power Generation, Instrumentation &Controls
Facebook Advertising Basics. ◦ BONUS -What do your Current Fans like? ◦ How to use the Power Editor ◦ How to get tons of new fans fast with ads ◦ How.
 Refers to sampling the gray/color level in the picture at MXN (M number of rows and N number of columns )array of points.  Once points are sampled,
Graphics and Hyperlinks b Graphics on the web are what make a web page interesting b Hyperlinks are what make it a “web”
OS provide a user-friendly environment and manage resources of the computer system. Operating systems manage: –Processes –Memory –Storage –I/O subsystem.
CS 474 Database Design and Application Terminology Jan 11, 2000.
Dali JPA Tools. About Dali Dali JPA Tools is an Eclipse Web Tools Platform sub-Project Dali 1.0 is a part of WTP 2.0 Europa coordinated release Goal -
Introduction to Eclipse Plug-in Development. Who am I? Scott Kellicker Java, C++, JNI, Eclipse.
AUTOMATION OF WEB-FORM CREATION - KINNERA ANGADI – MS FINAL DEFENSE GUIDANCE BY – DR. DANIEL ANDRESEN.
Introduction to CacheWorx Lucian Plesea - Esri Robert Jensen - Esri.
Office 2003 to Office 2007 Transition. What’s New?  Improved GUI  Bigger spreadsheets  1,048,576 rows x 16,384 columns  Improved memory and multi.
 By Thu Nguyen  Advisor: Prof. Krzysztof Janowicz GEOG 596A – Capstone Project.
Technical Workshops | Esri International User Conference San Diego, California Creating Geoprocessing Services Kevin Hibma, Scott Murray July 25, 2012.
Group 3: Art Gallery Monica Almendarez Content/Project Manager Willliam Egle Technology Manager Christina Pié Usability/ADA Compliance Manager Mirjana.
Demo: Power Tools for P8 Presenter: Jay Bowen Demonstration Topic: Choice List Features Demo URL below Power Tools Choice List Support 1. Native P8 Choice.
Eclipse 3.1 IDE Overview.
The Birth & Growth of Web 2.0 COM 415-Fall II Ashley Velasco (Prince)
Ryan MacDowell Marko Popović.  Currently it takes too much time and effort to understand how, where, and when people spend their money  Create a web.
Sciamachy features and usage with respect to end-users The typical fate of retrieval people dealing with large datasets… C. Frankenberg, SRON team, IUP.
Pad++: A Zooming Graphical Interface for Exploring Alternate Interface Physics Presented By: Daniel Loewus-Deitch.
By: Your Name ELEMENTS OF WEB DESIGN. VISUAL APPEAL Optimization of Graphics, for people to stay on your website, your pictures have to load out as soon.
More Graphics. Hit Testing Mouse clicked here What did I click on?
1 The Presenter Console Andre Fischer Software Engineer Impress Sun Microsystems 1.
The Emergent Structure of Development Tasks
Customer Webinar December 3, 2008
5 tips for a simpler way to work
Visual Studio 2010 and .NET Framework 4 Training Workshop
COLORS CAN COME ALIVE.
ONYX 12.2.
Improving Performance
Outline What does the OS protect? Authentication for operating systems
Logo here Module 3 Microsoft Azure Web App. Logo here Module Overview Introduction to App Service Overview of Web Apps Hosting Web Applications in Azure.
Plan Manager for Omnicast
Swapping Segmented paging allows us to have non-contiguous allocations
Create your Benner - intro
Productivity Tools Extensions to NetBeans IDE that make life easier
Outline What does the OS protect? Authentication for operating systems
ورشة عمل : لنفبرك معاً! تقديم : مها عبوش.
Introduction to the Kernel and Device Drivers
College & Career Awareness
The Google File System Sanjay Ghemawat, Howard Gobioff and Shun-Tak Leung Google Presented by Jiamin Huang EECS 582 – W16.
An Introduction to Device Drivers
Visual Studio 2005 “Personalized productivity”
cs5984: Information Visualization Chris North
Interpreting Binary Data
Working with images EIT, Author Gay Robertson, 2018.
Visual Studio 2010 and .NET Framework 4 Training Workshop
Chapter by Loco Power Week 10: High-Fidelity Prototype (Milestone)
Focus Group #2 Conducted using Adobe Connect
.NET Framework Data Providers
Transitioning To Windows 8 & Touchscreen 5 March 2013
NLM Digital Repository The Search for a New Book viewer
.Net for Test and Measurement
Presentation transcript:

Yoann Padioleau (Facebook) http://github.com/facebook/pfff CodeMap Google Maps for Source Code Yoann Padioleau (Facebook) http://github.com/facebook/pfff

About this talk Feel free to ask questions during the talk Disclaimer: I do not represent Facebook

Problem Dealing with huge codebase is difficult for noobs or new employees. Typical questions: What are the important functions in big API? What are the entry points? What is the big picture? Spend time mostly reading/understanding code, not so much writing new code. Not too bad for linux, books Tools to assist reading and understanding code?

Recent technological changes Huge monitors, 30’ Often have multiple ones Very high resolution (2600 x 1700) But we still use 80-columns based editors Or Eclipse which provides very few pixel for the actual code … Can we leverage all those pixels?

Codemap Approach Focus on assist reading/understanding code Program analysis + information visualization Google maps metaphor Zoom in/out Important stuff should be bigger

Demo

Features Big picture, treemaps, “macro level” Search, navigation Semantic-based code highlighting “micro level” Connection to editor (emacs/vim) Extensible via layers (predator mode) Smooth transition from macro ti micro Codemap is not an editor

Features: treemap Each rectangle is a file Size of rectangle =~ size of file Color of rectangle = “aspect” (test, main, storage, security, etc) “Code aware” (heuristics) Auto generated file do not eat real-estate Code is more important than data, xml, jpg Tiling, use all the space

Features: search and navigation Highlighted rectangle Ranked entities Navigation Up/down (not as smooth as google maps) Direct access to file (faster than speedbar or expand-directory widgets) Can see spread directories

Features: semantic code visualizer grammar-based highlighting, not regexps as in emacs/vim Know records vs functions vs constants Functions/classes are in bigger size than statements Tiling, use all the space, multi columns Semantic aware (global analysis) Important functions are in bigger size (if fontsize too small to fit the all file on a 30’ => split file) fast load of structure of the file in the brain

Layers: alternate color schemes Age (help find dead code) #authors (important stuff usually) Activity (what’s going on?) Code coverage Bugs/warnings of linter grep/sgrep results Top/Bottom modules …

$ git clone git://github.com/facebook/pfff.git Conclusion A semantic-based source code visualizer/searcher/navigator Accelerate loading the code into your brain (can see 20 files at once) Future work: Web UI, LXR 2? Smoother zoom Module/package dependencies $ git clone git://github.com/facebook/pfff.git

Related work SeeSoft (does not scale, no treemaps) Code Thumbnails (2 different modes) 3d visualization (not sure it helps, eat pixels) Disk explorer (not code aware, no micro-level) No smooth transition, 2 worlds.