Michael Dalessio
http://mike.daless.io mike.dalessio@gmail.com 201.602.9038 Madison, NJ

I write code for a living, but I also do it for fun. I've had success as a manager and a technical lead. I encourage agile software development practices which emphasize early and continuous delivery of valuable software.

TL;DR
Technology Skills
Ruby.
I love Ruby, though I'm comfortable with many other languages. I have experience building language extensions in C, Java, and FFI (dynamic bindings).
C, C++, STL.
I've done large-scale OO design and implementation. I have experience writing portable code for platforms old and new.
Web development with Rails and Javascript.

I've successfully deployed highly-available data-intensive web applications supporting multiple (read: old) browsers.

I've written large Javascript applications using many of the common libraries you'd expect.

High performance parallel computing.
I've got experience with PVM and MPI toolkits. I've hand-rolled data serialization as well as used libraries like protobuf and ASN.1/BER. I've built a fault tolerant load balancer and implemented job scheduling algorithms.
System-level programming.
I've got experience with threaded and evented processing models. I'm familiar with various methods of IPC, including message queues and sockets. I've done network programming on both *nix and Windows using TCP and UDP.
Linux system administration.
Notably, I've performed this role on large compute clusters, though it was quite a few years ago.
Debugging and profiling.
My go-to tools include strace, valgrind, gdb, gprof, gperftools and wireshark.
FORTRAN.
Yes, I've got deep knowledge of FORTRAN, having integrated it with C and C++ at the source level and at linktime. No, I don't expect this to ever be useful again.
Other languages.
I've been known to write Golang, Java Lisp, Clojure, and Scala in addition to what's listed above; though I wouldn't claim to be an expert in any of them. I've got extensive scripting experience, primarily in Ruby, Perl and bash.
Screen scraping.

I've done screen scraping for fun and for profit, including HTML+JS and proprietary terminal applications. Some tools I like to use include Mechanize and Nokogiri, two OSS projects that I help maintain.

Organizational Skills
Team Building.
I've had success hiring and managing strong development teams, and improving existing teams.
Framework Building.
I've designed and built application frameworks to deliver complex functionality to domain-expert developers. Notably, I designed and built the OO framework used by Bloomberg to build Launchpad.
Technology Integration.
I've successfully dealt with technology integration issues such as consensus, training, documentation and inertial resistance while meeting business demands.
Mentoring.
I'm able to mentor developers in technology and design, both in an informal office setting and in formal training classes. I'm also an experienced technical trainer, having run many large "developer boot camps".
Client management.
I've got years of experience working with clients of all sizes in a variety of verticals. I know that everything works better when people trust and respect each other.
Financial and Energy Markets.
I have experience building trading systems for equity and fixed income financial markets, and for energy markets. I'm also comfortable with bond math and the FI derivative market.
Figuring It Out.

I can read man pages. I know what an RFC is. I like reading other people's code.

Mad Communication Skillz.
Me talk good. Me also write good. Me so funny.
Curriculum Vitæ
Professional Experience

VP, Engineering @ Pivotal Cloud Foundry (Oct 2016 — Present)

Engineering Director @ Pivotal Cloud Foundry (July 2014 — Sept 2016)

Wore many hats to help the Pivotal Cloud Foundry engineering organization scale out to more than 60 teams in six cities across four timezones.
Still learning, every day.

For the CF Foundation, led two OSS Project Management Committees: Buildpacks, and Developer Tools.

Learned to appreciate how hard it is to build an open-source foundation, and keep the big tent big.

Office Director @ Pivotal Labs NYC (Sept 2012 — July 2014)

As the business owner of the NYC consulting practice for Pivotal Labs, was responsible for all aspects of revenue and headcount.
Learned how to have uncomfortable conversations. Learned how to make decisions based on incomplete information. Learned how to run a sales pipeline. Learned how to run a candidate pipeline. Learned how to be a business owner.

Director of Technology @ Benchmark Solutions (Feb 2010 — Aug 2012)

Managed and was technical lead for frontend team (web and native Windows client), realtime data infrastructure team, and the reference data team.
I'm still not sure what I learned here; we can get a beverage and discuss it, though.

Office Director and Agile Software Developer @ Pivotal Labs (Nov 2008 — Feb 2010)

Office Director, NYC office. (Sept 2009 — Feb 2010)
Learned how to feed and care for awesome developers. Learned that pair-interviewing is the best way to determine a developer's skill level and fitness.
Agile Software Developer. (Nov 2008 — Sept 2009)
Learned the value of pair-programming, and where it's most effective. Learned the value of test-driving. Learned Agile and XP methodologies. Learned how to aggressively refactor. Learned what a sustainable development process looks like.

Founder and Managing Partner @ Pharos Enterprise Intelligence (Jan 2008 — Present)

Architect and lead developer for a turn-key Energy Management System.

Learned how critical the "minimum viable product" is to success. Learned how important an early-alpha client is to success. Learned how unimportant long-term planning often is to success. Learned how important it is to choose the right business partner.

Director of Application Development @ USPOWERGEN (May 2006 — Dec 2007)

System architect and lead developer for an Energy Management System.
Learned that developer efficiency is the most important thing for a startup. Learned how to write Ruby extensions in C. Learned how to scrape data. Learned how robust and awesome the Ruby open-source community is.
Directory of Technology across multiple power plants.
Learned what the M&A due diligence process looks like. Learned how an integration projects can turn into a train wreck. Levelled up in dealing with office politics. Learned how annoying it is to have to write and enforce corporate IT policies. Learned how time-consuming regulatory audits are (SOX 404 and NERC Cybersecurity). Learned how to manage a cap-ex budget.
Head of Software Development @ ASPEED Software (Aug 2004 — Apr 2006)
Managed a team of developers building SDKs for parallel computing on large clusters.
Learned how to demo a product. Learned how to present to business stakeholders. Learned how to quickly set up a sane development environment. Learned how to set up sane customer support.
Assisted clients in parallelizing applications (Professional Services).
Learned how build a static code analyzer. Learned how to read and use profiler output. Learned how to support customers. Learned what a sane deployment process looks like. Learned how to read terrible legacy code.
Lead developer on parallel-computing SDK.

Learned that the USPTO will grant software patents on practically anything. Learned how to build a load-balancer. Learned how to administer large clusters. Learned how to serialize data efficiently. Learned how to implement efficient, portable network code.

Infrastructure Applications Lead @ Moneyline/Telerate (Nov 2003 — Aug 2004)
Managed a team porting applications to a new pub/sub API as the last phase of a ticker plant rollout.
Learned that smart developers, without business context, invariably work on the wrong problems. Learned that projects get shut down if they don't deliver business value early-and-often.
Managed a team of offshore developers building an internal application for browsing ticker plant data.
Learned why managing offshore developers is hard.
Implemented a high-performance UDP feed to integrate third-party data vendors.
Learned about multicast networking. Learned how to do I/O using a threaded model, and why it's hard (harder than it should be) to do right.

Chief Architect for Bloomberg Launchpad @ Bloomberg, L.P. (Jun 1995 — Aug 2003)

Extended the Launchpad OO platform to provide services, like pub/sub, IPC and instant messaging. (2002 — 2003)
Learned how to lead a team of A developers. Learned that customer IT policies are complicated. Learned the value of enabling developers to do complex things without specialized knowledge.

Designed, built, and led development on Bloomberg Launchpad, the next-gen Bloomberg UI. (2001 — 2003)

Learned how to implement malloc. Learned that mmap rules. Learned how C++ and FORTRAN program initialization work. Learned how to implement a polymorphic OO type system in C. Learned that leveraging open source is a really, really good idea. Learned the power of targetting a known interface (GTK+) to a completely new technology (Bloomberg Win32). Learned why building specialized debugging tools are sometimes necessary. Learned that office politics can ruin a good time.

Designed and built the Trading Systems Desktop ("TW") using the new Bloomberg UI (Win32 controls). (1997 — 2001)

Learned the value of providing policy on top of mechanism. Learned that it's possible to make a system do things it wasn't designed to do, and that it's a hallmark of good design. Learned how a lack of developer frameworks can slow forward progress for even talented developers. Learned to love building developer tools.
Helped integrate C into a land of FORTRAN. (1997 — 1998)
Learned how the call stack works. Learned how linkers work. Learned that some technologists are secretly Luddites.
Built and maintained a set of customer-facing TCP/IP feeds. (1997 — 2000)
Learned networking the hard way. Learned the art of abstraction. Learned why meta-programming rules.
Coordinated and taught the Bloomberg "boot camp" developer training classes. (1996 — 2000)
Learned how to speak in front of an audience of developers. Learned how to teach. Learned how to tell A developers from B developers.
Wrangled a huge time-series dataset. (1995 — 1999)
Learned how to be coherent on a 3AM phone call. Learned to be careful and how to plan. Learned that some query optimizers are truly terrible.
Undergraduate Experience
NASA Space Telescope Science Institute (1993 — 1995)
Research assistant to Dr. Rex Saffer.
Learned FORTRAN and bash. Learned how to parallel-process big jobs across a cluster. Learned that raw data is often noisy. Learned that minimizing an objective function with many dimensions using noisy data is hard. Learned that meta-knowledge is often more important than knowledge. Learned that you have to love what you do to be good at it.
Rowland Department of Physics @ The Johns Hopkins University (1993 — 1995)
Research assistant to Dr. Doyle T. Hall.
Learned Emacs. Learned how to learn a language from its reference manual. Learned how to build 3-D graphic visualizations. Learned how to catch a hacker.
Rowland Department of Physics @ The Johns Hopkins University (1992 — 1993)
Assistant System and Network Administrator for the Department of Physics and Astronomy.
Learned that *nix rules. Learned how networks work, the hard way. Learned how to disassemble and fix a computer. Learned how to run a data center.
Education
The Johns Hopkins University (Sept 1991 — May 1995)
Graduated with a B.A. in Physics.
Learned to focus intensely. Learned to think logically. Learned to seize the day. Learned to love writing code. Learned how to learn.
Volunteer Work

Co-organizer of GORUCO

GORUCO is the premier NYC regional Ruby conference, now in its elventh year.
Open Source Experience

Co-Author of nokogiri

Nokogiri is currently the most popular XML/HTML parsing library for Ruby developers. It supports CSS and XPath querying, has push and pull SAX parsers, validates DTD and XSD schemas, performs XSLT transformations, and has a very simple and usable API. It's implemented in Ruby, C and Java.

Author of loofah and loofah-activerecord

Loofah is the default HTML sanitizer in Rails, which can be used to prevent cross-site scripting (XSS) attacks. It provides a variety of methods to clean or remove unsafe HTML, and delivers ActiveRecord plugins for Rails applications.

Core Maintainer of mechanize

Mechanize is a Ruby library used for automating website interaction and screen-scraping. It fully supports browser history and cookies, and allows easy authentication and form submission.
Selected Smaller Projects and Contributions