The MVP is dead; long live the MVP

Timing the switch from "minimum viable" to "maximum value".

January 26, 2016

Silvrback blog image
J-Class yacht "Lionheart" - 'minimum viable' was never part of the brief

Before we started building YunoJuno I invited my two co-founders to join me at the London leg of Eric Ries' launch promotion for "The Lean Startup". They both went to the wrong venue, so never got to see Mr Ries, but that's their . . .

Read More

Measuring user satisfaction with rolling NPS

Incorporate NPS surveys into your project to have maximum insight

January 10, 2016

tl;dr Our latest project (django-nps) allows you to run continuous, rolling NPS surveys, and to segment NPS by any user attribute.

NPS (Net Promoter Score) is a well-known methodology for capturing user 'satisfaction' with your product. I won't go into the details here - there's a wealth of info elsewhere on the web - but . . .

Read More

Keeping track of Django project dependencies

Introducing django-package-monitor

November 27, 2015

tl;dr We’ve released django-package-monitor, a django app to make it easier to see which packages are out of date.

UPDATE: I messed up the dependencies in the original package, and the latest package depends on a source install of semantic_version, so you will need to use the --process-dependency-links option when installing dpm. See . . .

Read More

Unexpected UUIDField upset

That moment when you realise your Universally Unique Identifier... isn't.

October 08, 2015

@stevejalim – YJ Tech Lead

We like UUIDs at YJ. One use of them we're particularly fond of is sticking specific yet meaning-free labels on objects, so we don't have to worry about exposing 'walkable' integer PKs or human-readable usernames or any of that awkward stuff.

As such, we've used our own UUIDField . . .

Read More

Async race conditions (Django, RQ)

Solving the case of the missing objects

September 30, 2015

tl;dr Beware of race conditions when using async queues and accessing data which may not have been committed on the main process.

Whenever we have to update an external system (pushing out data to out CRM system, notifications to HipChat, sending emails, that sort of thing) we send the data asynchronously by queueing up a function with . . .

Read More

Django, Whitenoise, and Heroku

September 16, 2015

tl;dr Heroku’s filesystem is ephemeral, so be careful when running the collectstatic command - it doesn’t necessarily do what you think it does..

Our current production asset delivery setup looks like this:

  1. Run grunt locally to generate static files
  2. Commit changes to repo
  3. Push to Heroku
  4. Run collectstatic to push staticfiles to S3
  5. Configure . . .

Read More

Generating MoM, YoY and CMGR from SQL

Does anyone round here know SQL any more?

August 25, 2015

We recently hired someone to help us with some data analysis and reporting requirements. We're not really big enough to claim that what we needed was a Data Scientist, but that is effectively what we were looking for. And as is our wont, we created a simple test for applicants, designed to show some ability to extract meaning from data . . .

Read More

  Subscribe by Email and Never Miss a Post