From 01b73acea75d2d5616a12491370c10b460974b02 Mon Sep 17 00:00:00 2001 From: Dane Harrigan Date: Thu, 29 Mar 2012 18:17:22 -0700 Subject: [PATCH] initial commit --- .../README.md | 28 ++++++++++++++++++ .../profile_picture.jpg | Bin 0 -> 12103 bytes 2 files changed, 28 insertions(+) create mode 100644 dane_harrigan-finding_true_love_in_legacy_software/README.md create mode 100644 dane_harrigan-finding_true_love_in_legacy_software/profile_picture.jpg diff --git a/dane_harrigan-finding_true_love_in_legacy_software/README.md b/dane_harrigan-finding_true_love_in_legacy_software/README.md new file mode 100644 index 0000000..6db466c --- /dev/null +++ b/dane_harrigan-finding_true_love_in_legacy_software/README.md @@ -0,0 +1,28 @@ +# Finding True Love in Legacy Software + +Every line of code has a story. Every block of code has a lesson. The +Heroku API is the oldest and largest codebase on the platform. This is +my story of being introduced to the code and why I've fallen for it. + +In this presentation I'll go through code that, at face value, may seem +strange or wrong, but offers much more when you place yourself in the +shoes of the developer at that time. + +Legacy software may come with code you'd rather not see or touch, but it +also comes with solutions to problems you don't have to relive and a +history of why certain decisions were made. + +I'll talk about how and why inheriting legacy code can be a great +experience. + +## Dane Harrigan + +Dane Harrigan is an Engineer at Heroku. When he's not coding at work, +he's building gems you've never heard of or contributing to projects you +have such as Rubinius, Radiant CMS or the Heroku Gem. + +![Profile picture](https://github.com/daneharrigan/call-for-proposals/raw/finding_true_love_in_legacy_software/dane_harrigan-finding_true_love_in_legacy_software/profile_picture.jpg) + +- [My website](http://dane.heroku.com) +- [My twitter](https://twitter.com/#!/daneharrigan) +- [Past talk video](http://www.youtube.com/watch?v=SupZjqYjwC4) diff --git a/dane_harrigan-finding_true_love_in_legacy_software/profile_picture.jpg b/dane_harrigan-finding_true_love_in_legacy_software/profile_picture.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9f0d41664dbedc2b97958a64e240ca310c6737b3 GIT binary patch literal 12103 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