Your SlideShare is downloading. ×
bongaus.fi - Spotting Service Powered by Django
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

bongaus.fi - Spotting Service Powered by Django

1,542

Published on

A talk I held at Djangoconfi '12. Beginner level. This talk mainly shows the whole process and stack used.

A talk I held at Djangoconfi '12. Beginner level. This talk mainly shows the whole process and stack used.

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,542
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. bongaus.fiSpotting Service Powered by Django Juho Vepsäläinen
  • 2. Who?● Jukka Raimovaara (Mentalhouse Oy), ○ Perl-guru, hosting● Juho Vepsäläinen (Koodilehto co-op), ○ Python, JavaScript ○ @bebraw (Twitter) ○ nixtu.blogspot.com
  • 3. What?● bongaus.fi - Spotting information in one place● Target (QR) -> url -> Info● Examine info later● Competitions (who spotted most? ...)● Analytics after event
  • 4. Why?● Initiated by Jyväskylä Design Week (contract work)● Extended on need basis (AgileJkl pivot)● On longer term we might want to get some bucks out of it
  • 5. Evolution
  • 6. http://autiomaa.galleria.fi/kuvat/2012/agilejkl/20120418-IMG_8483.jpg
  • 7. http://autiomaa.galleria.fi/kuvat/2012/agilejkl/20120418-IMG_8530.jpg
  • 8. http://autiomaa.galleria.fi/kuvat/2012/agilejkl/20120418-IMG_8522.jpg
  • 9. Development Notes● Instanssi demo: working Minimum Viable Product (MVP) with a few users● Design Week: no notable use, bottleneck in content production● AgileJkl pivot: success, around half (~100) of the attendees participated
  • 10. Technology
  • 11. http://dl-web.dropbox.com/u/10320/django/wallpaper/magic-pony-django-wallpaper.png
  • 12. Why Django?● Challenge: team of two, tight schedule● Familiar already. Couldve used Node or something else but Django felt like a safe bet● Admin UI big bonus on retrospect
  • 13. http://www.flickr.com/photos/12142259@N00/4084706293/ PixelPlacebo CC BY-NC
  • 14. Why Bootstrap?● Creating a good and responsive CSS layout is tough● Bootstrap helps quite a bit!● Provides column layout and lots of other goodies● http://twitter.github.com/bootstrap/
  • 15. Architecture gunicorn Bootstrap Django 1.3 (markdown, sorl-thumbnail, qrcode, auth Luova paja jsonrpclib, django-simplegravatar) MySQL + South
  • 16. In Addition● pip● virtualenv, virtualenvwrapper● git● Adobe InDesign (generated cards)● Adobe Illustrator (logo)● jQuery (Slimbox 2, Masonry, Rating)
  • 17. Data Model● Modeled Events, Targets, Spotting and a couple of more● Defined some business logic there instead of views (good idea in this case)● Could go further in this by using Managers and some meta-hackery. See http://dabapps.com/blog/higher-level- query-api-django-orm/
  • 18. Lessons Learned
  • 19. South● Definitely worth using● Worked mostly fine● Had to dump it once and build own custom migration (SQLite to rescue)● Souths development (lack of it) worrying
  • 20. http://www.flickr.com/photos/9049083@N04/2332755401/ aldoaldoz CC BY-NC-SA
  • 21. Migration Migraine1. Decided to do some drastic changes to schema2. Dumped South3. Wrote migration manually4. Migrate data using SQLite5. dumpdata -> JSON6. loaddata -> MySQL7. Use South again
  • 22. http://www.flickr.com/photos/68907151@N00/45751138/ Kevin Severud BY-SA
  • 23. Database● SQLite ok for dev● Made it difficult to spot certain issues, though due to loose constraints● MySQL in production (be careful with conf! UTF-8, engine)● Maintained demo fixtures for a while (good idea)
  • 24. http://www.flickr.com/photos/92079962@N00/165513002/ Esther17 BY-NC-ND
  • 25. Authentication + Authorization● Djangos native auth in dev● Custom solution (ext. auth.) in production● Ext. auth hooks into Django User, though● Some custom code for authorization (ie. target ownership)
  • 26. On External Auth● Part of Luova paja that runs on a CMS● Provides registration + login (FB, regular)● Effectively performs redirects and uses JSON-RPC● Utilizes checksums (secret keys) and user info exchange
  • 27. http://www.flickr.com/photos/95572727@N00/338474903/ Stuck in Customs BY-NC-SA
  • 28. Testing● Unit tests for core logic● Eased development somewhat (harder to break)● Probably shouldve tested views and urls too● Acceptance tests that describe the users flow might have been handy too to have (Selenium, zombie?)
  • 29. http://www.flickr.com/photos/75654019@N00/100230432/ luxuryluke CC BY-NC-ND
  • 30. Bootstrap● Somewhat useful without customizations even● Use vanilla version till you need to optimize (request size, amount etc.)● Customizable using LESS (colors, etc.)
  • 31. http://www.flickr.com/photos/25489182@N04/5022825091/ Philipp Lücke BY-NC
  • 32. Development Speed● Developing a MVP was a good idea (Instanssi demo)● The rest grew around that● Pivots affect velocity (new, possibly conflicting logic)● Tests are essential due to this (easier to spot goof ups)
  • 33. "Perfect is the enemy of good"
  • 34. Summary
  • 35. Summary● bongaus.fi provides a way to store spotting information in one place● Might grow into a business of some sort● MVPs are valuable!● Django+Bootstrap was a good combo
  • 36. ?? ?

×