This is a general work log updated <strike>daily</strike> <strike>weekly</strike> sometimes...

This week's TODO list:

  • make sure code works, fix bugs, breakage
  • work some more on the api:
    • add oauth2 authentication
    • authentication class for python-social-auth integration code
  • start with a skeleton of the js project
  • really deal with permissions, and make a caching backend for it
  • deal with deduplication in preparation for an import script
  • write an import script, should be much easier now that the graphing backends and bulk insert stuff is already there
  • unbreak all those broken tests (only 6 pass at the moment, the schema changed quite a bit and the tests need to be readapted for it)

Work log

Week 1 19/5


  • compiled dependencies and tools (sage, git, etc..)
  • set up virtual env
  • set up pytoeba-dev repo/structure
  • setup pytoeba's project structure


  • added sentence and link models
  • threw out sage and compiled scipy/numpy
  • explored agpl for graph manipulation


  • added log model
  • added correction model
  • added tag models
  • added audio model
  • set up work log


  • read py.test documentation
  • read django testing documentation
  • wrote a passing test for the sentence manager


  • read "Test Driven development with Python"


  • Finished the sentence manager

Week 2 26/5


  • added scaffolding/structure for tests and fixtures using py.test
  • added database/form validation tests for:
    • sentence/link models
    • correction model
    • tag models
    • audio models
  • generated coverage reports


  • refactored tests and fixtures to be more modular
  • added more tests and expanded the manager some more


  • N/A

Week 3 2/6

  • python api for CRUD operations on Sentences/Tags/Links

Week 4 9/6

  • User, SocialAccount, Wall, Comment, Message models/managers
  • python-social-auth integration

Week 5 16/6

  • Haystack integration
  • mirroring haystack's searchqueryset api on models with indices
  • Added indices for sentences, comments, messages, wall posts, comments

Week 6 23/6

  • Exposed tastypie model resources (still needs work)
  • Added HTTPBasicAuth/SessionAuth to the api
  • Exposed haystack's auto_query through tastypie

Week 7 30/6

  • fixed various bugs
  • reorganized graphing code into backends (now we're pypy ready)
  • wrote a networkx graphing backend (pure python)
  • reorganized permissions code into backends
  • sql optimizations (bulk upsert, bulk update, etc...)
  • reading ng-book
  • rewrote bulk operations in the python api to utilize the raw sql bulk functions
  • wrote some orm manager integration for iplus1
  • wrote a tastypie resource for iplus1

Week 8 7/7

  • major optimizations in the sipy backend, replaced most python code with numpy code
  • more sql optimizations, this time in the part of the graphing code that gets the subgraph, more to come (dropping down from orm code to raw sql).
  • hooked most python api to tastypie resource classes, the api should support write functions and other custom read queries now.
  • fixed various bugs in haystack integration, did more testing on it.
  • wrote 2 custom pagination classes for the orm/tasty pie
  • hooked pagination classes to tastypie resources
  • hooked haystack autoquery to relevant tastypie resources (more to come here, it should support as much filtering and ordering as the searchqueryset api supports probably)
  • added outline to a plan to switch from O(n2) links in the Link table to O(2n) links using connected components. Also plans to support tatodb instead of the link table+ graphing backends
  • wrote cffi bindings for iplus1 following the available python extension. It should probably be fine to run this under pypy as well once jake gets the bindings to work.
  • addressed some of liori's comments on the latest mega patch
  • unbroke most of the schema. shit should be testable again. added migrations.

Week 9 14/7


Article available in: