1 / 56

Faster! Faster!

Faster! Faster!. Accelerating your business with blazing prototypes. Drew Engelson @ handofdoom. Why am I here?. I ’ m Drew Engelson. I work for Celerity “ The business acceleration consultancy ” We help get companies “ unstuck ” I help organizations decide what tech to buy or build

jdavin
Download Presentation

Faster! Faster!

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Faster! Faster! • Accelerating your business with blazing prototypes Drew Engelson @handofdoom

  2. Why am I here?

  3. I’m Drew Engelson • I work for Celerity • “The business acceleration consultancy” • We help get companies “unstuck” • I help organizations decide what tech to buy or build • National Geographic Society • PBS • American Diabetes Association • Then we make it happen

  4. First… a disclaimer • I’m a Pythonista • I’m a Djangonaut • Blame OSCON 2006

  5. Hence, my huge man-crush on JKM Photo: Jason Samsa @ Flickr

  6. Cultures of stagnation

  7. Risk aversion

  8. Always choosing path well traveled

  9. "Innovation is R&D’s job” a.k.a. Not your job

  10. Dwelling on past investments

  11. Over-management and review of new ideas

  12. “We have too much real work to do.”

  13. Cultures of Innovation Props to Josh Linkner

  14. Fuel passion

  15. Celebrate ideas

  16. Foster autonomy

  17. Encourage courage

  18. Fail forward

  19. Think small

  20. Institutionalize this stuff

  21. COTS vs. Open Source

  22. “COTS is the safer choice” No one ever got fired for choosing ___________.

  23. “COTS does it out of the box” That’s horse crap!

  24. Photo: Daleeast @ Flickr

  25. Photo: Kethera @ Flickr

  26. Rapid Prototypes

  27. “If only I could show you!”

  28. Developers [sometimes] have good ideas Give ‘em a chance!

  29. Reduce the potential cost of failure;Timebox the experiment “OK, you get 2 days”

  30. The Framework Showdown

  31. The challenge • Build a simple, fully functional prototype • A basic web service for image transformation • Requirements • Pass in a source image url, desired height and width • Pull down the image to server • Resize the image on the server • Return derivative image

  32. The challenge url = http://farm8.staticflickr.com/7138/7576110858_d66eec09f5_z.jpg width = 200 height = 200 Photo: Tomcrenshaw @ Flickr

  33. I’m talking REAL functional code;minimize throw away work Evolve to production

  34. Surveyed a few frameworks • PHP • Zend • CodeIgniter • Python • Django • Flask • Bottle • I know, there are many other choices… Which is your favorite?

  35. Compared on • Learning curve • Ease of bootstrapping dev environment • Ease of development • # of files created or touched • # of lines written or modified • Complexity of code • Speed of deployment • Need to share with others, right? • Note: This is a very non-scientific study

  36. The non-scientific results

  37. $ pip install Flask requests PIL Then write ~19 lines of Python

  38. import cStringIO import requests from PIL import Image from flask import Flask, request, send_file app = Flask(__name__) @app.route('/', methods=['GET', ]) def resize(): url = request.values['url'] req = requests.get(url) resource = cStringIO.StringIO(req.content) image = Image.open(resource) image = image.resize((int(request.values['w']), int(request.values['h'])), Image.ANTIALIAS) resource = cStringIO.StringIO() image.save(resource, 'JPEG') resource.seek(0) return send_file(resource, mimetype='image/jpeg') if __name__ == '__main__': app.run(debug=True)

  39. Quick and easy local server Django: manage.pyrunserver Flask: app.run()

  40. Get boilerplate out of the way!

  41. Don’t trust anything that has built-in smilies  Sorry, CodeIgniter

  42. How do I share it?

  43. $ git push heroku master Really... does anything else matter?

  44. What does this all mean?

  45. Use what you know! Learning curve is biggest time suck.

  46. Keep it real Don’t assume failure… this may have legs.

  47. Don’t be afraid of… Failure; the unknown; the undead

  48. Give ‘em a little rope… But don’t hang ‘em with it

  49. Hold a few “hack days”

  50. Spread knowledge;Hold sessions to share ideas I call these “mind melds”

More Related