SlideShare a Scribd company logo
1 of 43
Download to read offline
bongaus.fi
Spotting Service
  Powered by
    Django
           Juho Vepsäläinen
Who?
● Jukka Raimovaara (Mentalhouse Oy),
  ○ Perl-guru, hosting
● Juho Vepsäläinen (Koodilehto co-op),
  ○ Python, JavaScript
  ○ @bebraw (Twitter)
  ○ nixtu.blogspot.com
What?
● bongaus.fi - Spotting information in one
  place
● Target (QR) -> url -> Info
● Examine info later
● Competitions (who spotted most? ...)
● Analytics after event
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
Evolution
http://autiomaa.galleria.fi/kuvat/2012/agilejkl/20120418-IMG_8483.jpg
http://autiomaa.galleria.fi/kuvat/2012/agilejkl/20120418-IMG_8530.jpg
http://autiomaa.galleria.fi/kuvat/2012/agilejkl/20120418-IMG_8522.jpg
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
Technology
http://dl-web.dropbox.com/u/10320/django/wallpaper/magic-pony-django-wallpaper.png
Why Django?
● Challenge: team of two, tight schedule
● Familiar already. Could've used Node or
  something else but Django felt like a safe
  bet
● Admin UI big bonus on retrospect
http://www.flickr.com/photos/12142259@N00/4084706293/ PixelPlacebo CC BY-NC
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/
Architecture

    gunicorn


                      Bootstrap



                             Django 1.3
               (markdown, sorl-thumbnail, qrcode,    auth   Luova paja
                jsonrpclib, django-simplegravatar)




                        MySQL + South
In Addition
●   pip
●   virtualenv, virtualenvwrapper
●   git
●   Adobe InDesign (generated cards)
●   Adobe Illustrator (logo)
●   jQuery (Slimbox 2, Masonry, Rating)
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/
Lessons Learned
South
● Definitely worth using
● Worked mostly fine
● Had to dump it once and build own
  custom migration (SQLite to rescue)
● South's development (lack of it) worrying
http://www.flickr.com/photos/9049083@N04/2332755401/   aldoaldoz CC BY-NC-SA
Migration Migraine
1. Decided to do some drastic changes to
   schema
2. Dumped South
3. Wrote migration manually
4. Migrate data using SQLite
5. dumpdata -> JSON
6. loaddata -> MySQL
7. Use South again
http://www.flickr.com/photos/68907151@N00/45751138/ Kevin Severud BY-SA
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)
http://www.flickr.com/photos/92079962@N00/165513002/ Esther17 BY-NC-ND
Authentication + Authorization
●   Django's 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)
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
http://www.flickr.com/photos/95572727@N00/338474903/ Stuck in Customs BY-NC-SA
Testing
● Unit tests for core logic
● Eased development somewhat (harder to
  break)
● Probably should've tested views and urls
  too
● Acceptance tests that describe the user's
  flow might have been handy too to have
  (Selenium, zombie?)
http://www.flickr.com/photos/75654019@N00/100230432/ luxuryluke CC BY-NC-ND
Bootstrap
● Somewhat useful without customizations
  even
● Use vanilla version till you need to
  optimize (request size, amount etc.)
● Customizable using LESS (colors, etc.)
http://www.flickr.com/photos/25489182@N04/5022825091/ Philipp Lücke BY-NC
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)
"Perfect is the enemy of good"
Summary
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
?
?       ?

More Related Content

Similar to bongaus.fi - Spotting Service Powered by Django

Django: Beyond Basics
Django: Beyond BasicsDjango: Beyond Basics
Django: Beyond Basics
arunvr
 
Switching to angular.js silk way
Switching to angular.js   silk waySwitching to angular.js   silk way
Switching to angular.js silk way
Pavlo Iuriichuk
 
Behat Workshop at WeLovePHP
Behat Workshop at WeLovePHPBehat Workshop at WeLovePHP
Behat Workshop at WeLovePHP
Marcos Quesada
 
Counterclockwise past present future
Counterclockwise  past present futureCounterclockwise  past present future
Counterclockwise past present future
lolopetit
 
Gree Internship Presentation
Gree Internship PresentationGree Internship Presentation
Gree Internship Presentation
Kushagra Udai
 
SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13
SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13
SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13
Fred Sauer
 

Similar to bongaus.fi - Spotting Service Powered by Django (20)

Django: Beyond Basics
Django: Beyond BasicsDjango: Beyond Basics
Django: Beyond Basics
 
Testing Django APIs
Testing Django APIsTesting Django APIs
Testing Django APIs
 
Nightwatch 101 - Salvador Molina
Nightwatch 101 - Salvador MolinaNightwatch 101 - Salvador Molina
Nightwatch 101 - Salvador Molina
 
Utopia Kindgoms scaling case: From 4 to 50K users
Utopia Kindgoms scaling case: From 4 to 50K usersUtopia Kindgoms scaling case: From 4 to 50K users
Utopia Kindgoms scaling case: From 4 to 50K users
 
Utopia Kingdoms scaling case. From 4 users to 50.000+
Utopia Kingdoms scaling case. From 4 users to 50.000+Utopia Kingdoms scaling case. From 4 users to 50.000+
Utopia Kingdoms scaling case. From 4 users to 50.000+
 
Drupal Flyover, CMS Expo
Drupal Flyover, CMS ExpoDrupal Flyover, CMS Expo
Drupal Flyover, CMS Expo
 
Monitoring your VM's at Scale
Monitoring your VM's at ScaleMonitoring your VM's at Scale
Monitoring your VM's at Scale
 
Pavlo Yuriychuk — Switching to Angular.js. Silk way
Pavlo Yuriychuk — Switching to Angular.js. Silk wayPavlo Yuriychuk — Switching to Angular.js. Silk way
Pavlo Yuriychuk — Switching to Angular.js. Silk way
 
Switching to angular.js silk way
Switching to angular.js   silk waySwitching to angular.js   silk way
Switching to angular.js silk way
 
Faster Drupal sites using Queue API
Faster Drupal sites using Queue APIFaster Drupal sites using Queue API
Faster Drupal sites using Queue API
 
Behat Workshop at WeLovePHP
Behat Workshop at WeLovePHPBehat Workshop at WeLovePHP
Behat Workshop at WeLovePHP
 
Counterclockwise past present future
Counterclockwise  past present futureCounterclockwise  past present future
Counterclockwise past present future
 
Nicolas Embleton, Advanced Angular JS
Nicolas Embleton, Advanced Angular JSNicolas Embleton, Advanced Angular JS
Nicolas Embleton, Advanced Angular JS
 
Introduction to serverless computing on Google Cloud
Introduction to serverless computing on Google CloudIntroduction to serverless computing on Google Cloud
Introduction to serverless computing on Google Cloud
 
Rebuild Team - 急成長プロダクトのDev&Opsで生じる悪循環とその解決策
Rebuild Team - 急成長プロダクトのDev&Opsで生じる悪循環とその解決策 Rebuild Team - 急成長プロダクトのDev&Opsで生じる悪循環とその解決策
Rebuild Team - 急成長プロダクトのDev&Opsで生じる悪循環とその解決策
 
Backbone 4.0
Backbone 4.0Backbone 4.0
Backbone 4.0
 
Gree Internship Presentation
Gree Internship PresentationGree Internship Presentation
Gree Internship Presentation
 
SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13
SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13
SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13
 
Delayed operations with queues for website performance
Delayed operations with queues for website performanceDelayed operations with queues for website performance
Delayed operations with queues for website performance
 
Introduction to Django
Introduction to DjangoIntroduction to Django
Introduction to Django
 

More from Juho Vepsäläinen

More from Juho Vepsäläinen (12)

Web application development - The past, the present, the future
Web application development - The past, the present, the futureWeb application development - The past, the present, the future
Web application development - The past, the present, the future
 
ECMAScript - From an idea to a major standard
ECMAScript - From an idea to a major standardECMAScript - From an idea to a major standard
ECMAScript - From an idea to a major standard
 
Quick introduction to Qwik
Quick introduction to QwikQuick introduction to Qwik
Quick introduction to Qwik
 
fooConf - JavaScript frameworks of tomorrow
fooConf - JavaScript frameworks of tomorrowfooConf - JavaScript frameworks of tomorrow
fooConf - JavaScript frameworks of tomorrow
 
JavaScript frameworks of tomorrow
JavaScript frameworks of tomorrowJavaScript frameworks of tomorrow
JavaScript frameworks of tomorrow
 
The future is mostly static
The future is mostly staticThe future is mostly static
The future is mostly static
 
Web application development - The past, the present, the future
Web application development - The past, the present, the futureWeb application development - The past, the present, the future
Web application development - The past, the present, the future
 
The future is mostly static
The future is mostly staticThe future is mostly static
The future is mostly static
 
Survive JavaScript - Strategies and Tricks
Survive JavaScript - Strategies and TricksSurvive JavaScript - Strategies and Tricks
Survive JavaScript - Strategies and Tricks
 
Bootstrap vs. Skeleton
Bootstrap vs. SkeletonBootstrap vs. Skeleton
Bootstrap vs. Skeleton
 
Static Websites - The Final Frontier
Static Websites - The Final FrontierStatic Websites - The Final Frontier
Static Websites - The Final Frontier
 
Intro to HTML5 Canvas
Intro to HTML5 CanvasIntro to HTML5 Canvas
Intro to HTML5 Canvas
 

Recently uploaded

+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 

Recently uploaded (20)

Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
A Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusA Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source Milvus
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024
 

bongaus.fi - Spotting Service Powered by Django