Page 1 of 31  >> (less recent)

pyvideo status: April 9th, 2015 Thu, 09 Apr 2015

What is pyvideo.org

pyvideo.org is an index of Python-related conference and user-group videos on the Internet. Saw a session you liked and want to share it? It's likely you can find it, watch it, and share it with pyvideo.org.

Status

It's been about a year since my last status report. The last year was tough for a bunch of reasons I don't want to go into. On top of that, I was pretty burned out and I had a ton of other stuff I needed to do. So I didn't do much with pyvideo for a long time.

However, we had a lot of help from other people. Sheila Miguez took over adminning the site and added a bunch of conferences. Paul Collins did a ton of work fixing technical debt issues and cleaning up richard codebase. Trey Hunner got richard working with Python 3. Spencer Herzberg, Magnun Leno, Reiner Gerecke, Wes Turner, Benjamin Bertrand, and Burak Guven fixed a bunch of bugs, added new functionality and cleaned up documentation.

I started to get back to things mid-March. I started with the ansible work that Sheila did and tweaked it so we could use it to deploy pyvideo. Then I redid all the infrastructure, updated richard to Django 1.7, fixed a bunch of django-browserid related issues, nixed some code and did some other cleanup. Then I had a few days left before PyCon US 2015 and I decided to throw together a rough playlist implementation.

Playlists are something Sheila and I have talked about for a while. It's great that pyvideo is an index of videos, but until now there's been no good way of collecting a subset of videos you think are interesting to watch later. There's been no good way of curating a group of videos and then sharing that list with other people. Perhaps you want to help people learn Flask. Perhaps you want to share videos about debugging in Python. Perhaps you want to collect videos related to a class you're teaching. Perhaps you want everyone to experience Erik Rose: Man of Mystery.

I landed a rough implementation of playlists today. It's not perfect; it's missing some key things. I wrote up some issues in the richard issue tracker for features that should get implemented to make it really useful. Even without some of those things, it's useful today.

Want to try it out?

Sign in to pyvideo. You'll see a "My playlists" link in the navbar at the top. Go to that page and create a playlist.

Now you can go to any video page on the site and add that video to your playlists.

All playlists are public. You can share the url of your playlists with other people.

Next step is to implement some of the other features listed in the richard issue tracker. If there are other things you want to see or you bump into problems, toss an issue in the tracker.

I hope you find it helpful!

Me: 2014 retrospective Thu, 19 Feb 2015

This is belated because I've been busy.

2014 was crazy. It had a lot of epically lousy parts, but also had some good parts. Like 2013, I don't know what I did with my 2014 goals.

2013 involved a lot of projects. 2014 involved fewer.

  • dennis: Lots of development on Dennis. It's really come along as a tool, though I wish I had more users since that would help flesh out issues.
  • denise: A web front-end for dennis. I did some work on it, but it needs some more to remove some of the sharp edges.
  • ernest: Everyone has a Bugizlla front-end--this is mine. I work on this with Mike, Ricky and Rehan. We made some solid improvements in 2014. Having said that, it's still pretty hacked-together and it's not generally useful to anyone else.
  • denton: A bunch of us keep a log of what we've worked on day-to-day in Standup. Denton pulls the weekly data and throws it into an email. It doesn't sound like much, but it runs on a RHEL 5 system with an aged Python 2.6 and it's a pain in the ass to use. Given that, Denton has virtually no dependencies and sports its own (mildly terrible) template parser. It continues to be a mildly fun hobby project to tinker with periodically.
  • elasticutils: I did a ton of work on ElasticUtils so that people could use it and get over the Elasticsearch 0.90 -> 1.x hump. After talking with Honza, Jannis, Erik and Rob at PyCon US 2014, we decided it wasn't worth keeping ElasticUtils going. Honza built elasticsearch-dsl does some of the things ElasticUtils does, but better. Several Django-focused shim libraries that sit on elasticsearch-dsl have appeared since then. In January 2015, I deprecated the project and no longer work on it.
  • richard, steve and pyvideo: I did a bunch of work on these three right after PyCon US 2014 and then I totally burned out. Sheila took over admin of pyvideo. I tried to reduce my role to fixing architectural problems with richard and steve. I haven't spent much time on either, though. I'd like to spend more time on them, but now I'm having difficulties finding free time to spend. These projects are currently struggling.

I also spent time on a bunch of other projects:

  • peep: I helped a bunch on peep adding support for github tarball urls which we use a lot for Input and SUMO. I'm now a maintainer and help out with project maintenance.
  • django-ratelimit: James did an overhaul that I reviewed and helped with.
  • Sandstone: Schalk built this project as a Bootstrap version of Mozilla Sandstone look and feel. I was thinking I'd use it, but it seriously lacked documentation so I helped work on that for a while.
  • elasticsearch-dsl-py: I spent a portion of PyCon US 2014 sprints talking with Honza, Rob and Jannis about what I liked about ElasticUtils and we worked out parts of the elasticsearch-dsl-py API. Since then, I very occasionally comment on issues. I'd like to spend more time on this project, but Input and SUMO are still stuck on Elasticsearch 0.90, so I don't have anywhere to use it, yet.

At work, I spend most of my time on fjord which powers Mozilla Input.

2014 was interesting:

  • The sec-champs group fizzled out. I continue to help manage Django security updates across the various Mozilla web-sites. (Security)
  • I continue to work on l10n issues by improving the Dennis PO/POT linter. I also wrote Denise which anyone (particularly translators) can use without having to install Dennis. (L10N)
  • I got around to writing a site-health dashboard for Input. This makes it much easier to spot issues after deployments and code changes. (IT)
  • I wrote a smoketests test suite using Selenium for Input. This reduced goofs with feedback that we had periodically. (QA)
  • We set up Fjord to work with Vagrant. The vagrant provisioning script is a bash shell script and isn't idempotent which is a bit of a drag occasionally. However, this system has made it a lot easier for new people to contribute to Fjord/Input development. L. Guruprasad helped a ton here. (Community building)
  • I overhauled the feedback forms on Input making them more responsive, accessible and generally better. (UX/UI)
  • I wrote a translation system for Input which does automated machine and human translation. It's currently using Gengo, but the system is modular so we could write modules for other translation companies. This translates incoming feedback in non-English languages allowing our analysis tools to operate on everything in English. (Software engineering)
  • I started a Dashboards for Everyone project which coupled an API for querying feedback on Input with some examples using d3 for converting that code into dashboards. I thought this project would do a lot to alleviate peoples' needs for data, but as far as I can tell, it never caught on. (Software engineering)
  • Early in 2014, I started working on a data retention policy for Input data. Over the course of 2014, this policy gelled and was implemented. (Privacy)
  • In 2014, I committed to writing up project plans for the bigger Input projects and maintaining them in public. The thinking was that this lets other people follow along and correct missteps. Also we have a record of why we did certain things the way we did them. In reality, I don't think anyone really cared and/or looks at them. Still, it occasionally helps me, so that's probably good enough. (Project management)

Challenges for the year:

  • I think I'm easier to work with than I was in previous years. I spent some time fixing how I did things. Over the course of 2014, the indications that I was hard to work with have mostly disappeared. It's entirely possible that's because I switched projects and work with different people now. As a side note, User Advocacy group at Mozilla is amazing to work with.
  • I'm still working on too many things. I continued working on fixing this. I retired ElasticUtils which was taking a lot of time. I retired from working on playdoh, funfactory and friends. Still, there are projects I want to work on that I haven't/can't, so that bums me out.
  • Two roommates is still crazy. It'll be like that for a while, I think.
  • Wearing lots of hats on the Fjord/Input project really took a toll: project manager, architect, lead/solo developer, QA, deployer, ... I do it all. I learned I can do this, but that it's exhausting and I spent most of 2014 feeling overwhelmed and like I can't move fast enough. I really appreciate Ricky, Rehan and Mike helping with reviews and technical questions I have, else I would be sunk.

In 2015, I want to:

  • Spend time working on pyvideo, richard, dennis and ernest and get them to better places.
  • Overhaul my blog. Douglas is great, but the blog theme has issues and has since I last overhauled it in like the mid-2000s.
  • Find more time to tinker. I had like zero tinker time in 2014--it was just too crazy. No tinker means I'm falling behind (or at least feeling like I'm falling behind).
  • Blog more. I did a few impressive things. I wish I had blogged about them so that there's a record of me doing those things and also so that others could learn from my experiences. It's hard to find the time, though.

That's 2014 in a nutshell!

ElasticUtils: I'm stepping down and deprecating the project Mon, 05 Jan 2015

What is^Wwas it?

ElasticUtils is^Wwas a Python library for building and executing Elasticsearch searches.

See the Quickstart for more details.

I'm taking my ball and going home

For the last few years, I've maintained ElasticUtils. It's a project I picked up after Jeff, Dave and Erik left.

Since I picked it up, we've had 13 or so releases. We switched the underlying library from pyes to pyelasticsearch and then to elasticsearch-py. We added support for a variety of Elasticsearch versions up to about 1.0. We overhauled the documentation. We overhauled the test suite. We generalized it from just a Django library into a library with a Django extension. We added MappingTypes. We worked really hard to make it backwards compatible from version to version. It's been a lot of work, but mostly in spurts.

Since the beginning of the project in May 2011 (a year before I picked up maintenance), we've had 33 people contribute patches. We've had many more point out issues, ask questions on the #elasticutils IRC channel, send me email about this and that.

That's a good run for an open source project. There are a bunch of things I wish I had done differently when I was at the helm, but it's a good run nonetheless.

The current state of things, however, is not great. ElasticUtils has a ton of issues. Lots of technical debt accrued over the years, several architectural decisions that turned out to suck and have obnoxious consequences, lack of support for new features in Elasticsearch > 1.0, etc. It'll take a lot of work to clean that up. Plus it's got a CamelCase name and that's so passé.

At PyCon 2014, Rob, Jannis and I worked with Honza on the API for the library that is now elasticsearch-dsl-py. This library has several of the things I like about ElasticUtils. It's a project that's being supported by the Elasticsearch folks. It's got momentum. It supports many of the Elasticsearch > 1.0 features. There are several libraries that sit on top of elasticsearch-dsl-py as Django shims now.

ElasticUtils is at a point where it's got a lot of problems and there are good alternatives that are better supported.

Thus, this is an excellent time for me to step down as maintainer. Going forward from today, I won't be doing any more development or maintenance.

Further, I'm deprecating the project because no one should be using an unmaintained broken project when there are better supported alternatives. That way lies madness!

So, if you're using ElasticUtils, what do you do now?

ElasticUtils 0.10.2 has the things you need to bridge from Elasticsearch 0.90 to 1.x. You could upgrade to that version and then switch to elasticsearch-dsl-py or one of the Django shims.

On that note, so long ElasticUtils and thank you to everyone who's helped on and used ElasticUtils over the years!

Dennis v0.6 released! Line numbers, double vowels, better cli-fu, and better output! Tue, 16 Dec 2014

What is it?

Dennis is a Python command line utility (and library) for working with localization. It includes:

  • a linter for finding problems in strings in .po files like invalid Python variable syntax which leads to exceptions
  • a template linter for finding problems in strings in .pot files that make translator's lives difficult
  • a statuser for seeing the high-level translation/error status of your .po files
  • a translator for strings in your .po files to make development easier

v0.6 released!

Since v0.5, I've done the following:

  • Rewrote the command line handling using click and added an exception handler.
  • Merged the lint and linttemplate commands. Why should you care which file you're linting when the linter can figure it out for you?
  • Added the whimsical double vowel transform.
  • Added line numbers in the lint output. This will make it possible to find those pesky problematic strings in your .po/.pot files.
  • Add a line reporter to the linter.

Getting pretty close to what I want for a 1.0, so I'm pretty excited about this version.

Denise update

I've updated Denise with the latest Dennis and moved it to a better url. Lint your .po/.pot files via web service using http://denise.paas.allizom.org/.

Where to go for more

For more specifics on this release, see here: http://dennis.readthedocs.org/en/latest/changelog.html#version-0-6-december-16th-2014

Documentation and quickstart here: http://dennis.readthedocs.org/en/v0.6/

Source code and issue tracker here: https://github.com/willkg/dennis

Source code and issue tracker for Denise (Dennis-as-a-service): https://github.com/willkg/denise

6 out of 8 employees said Dennis helps them complete 1.5 more deliverables per quarter.

Dennis v0.5 released! New lint rules, new template linter, bunch of fixes, and now a service! Sun, 24 Aug 2014

What is it?

Dennis is a Python command line utility (and library) for working with localization. It includes:

  • a linter for finding problems in strings in .po files like invalid Python variable syntax which leads to exceptions
  • a template linter for finding problems in strings in .pot files that make translator's lives difficult
  • a statuser for seeing the high-level translation/error status of your .po files
  • a translator for strings in your .po files to make development easier

v0.5 released!

Since the last release announcement, there have been a handful of new lint rules added:

  • W301: Translation consists of just white space
  • W302: The translation is the same as the original string
  • W303: There are descrepancies in the HTML between the original string and the translated string

Additionally, there's a new template linter for your .pot files which can catch things like:

  • W500: Strings with variable names like o, O, 0, l, 1 which can be hard to read and are often replaced with a similar looking letter by the translator.
  • W501: One-character variable names which don't give translators enough context about what's being translated.
  • W502: Multiple unnamed variables which can't be reordered because the order the variables are expanded is specified outside of the string.

Dennis in action

Want to see Dennis in action, but don't want to install Dennis? I threw it up as a service, though it's configured for SUMO: http://dennis-sumo.paas.allizom.org/

Note

I may change the URL and I might create a SUMO-agnostic version. If you're interested, let me know.

Where to go for more

For more specifics on this release, see here: http://dennis.readthedocs.org/en/latest/changelog.html#version-0-5-august-24th-2014

Documentation and quickstart here: http://dennis.readthedocs.org/en/v0.5/

Source code and issue tracker here: https://github.com/willkg/dennis

Source code and issue tracker for Denise (Dennis-as-a-service): https://github.com/willkg/denise

3 out of 5 summer interns use Dennis to improve their posture while pranking their mentors.

Fiddling with Kibana Wed, 14 May 2014

I just kicked off a script that's going to take around 4 hours to complete mostly because the API it's running against doesn't want me doing more than 60 requests/minute. Given I've got like 13k requests to do, that takes a while.

I'm (ab)using Elasticsearch to store the data from my script so that I can analyze it more easily--terms facet is pretty handy here.

Given that I've got some free time now, I spent 5 minutes setting up Kibana.

Steps:

  1. download the tarball
  2. untar it into a directory
  3. edit kibana-3.0.1/config.js to point to my local Elasticsearch cluster (the defaults were fine, so I could have skipped this step)
  4. cd kibana-3.0.1/ and run python -m SimpleHTTPServer 5000 (I'm using a Python-y thing here, but you can use any web-server)
  5. point my browser to http://localhost:5000

Now I'm using Kibana.

Now that I've got it working, first thing I do is click on the cog in the upper right hand corner, click on the Index tab and change the index to the one I wanted to look at. Now I'm looking at the data my script is producing.

The Kibana site says Kibana excels at timestamped data, but I think it's helpful for what I'm looking at now despite it not being timestamped. I get immediate terms facets on the fields for the doc type I'm looking at. I can run queries, pick specific columns, reorder, do graphs, save my dashboard to look at later, etc.

If you're doing Elasticsearch stuff, it's worth looking at if only to give you another tool to look at data with.

Dennis v0.4 released! Tweaks to Python 3 support, overhauled linter, string-by-string lint rules ignoring Thu, 01 May 2014

What is it?

Dennis is a Python command line utility (and library) for working with localization. It includes:

  • a linter for finding problems in strings in .po files like invalid Python variable syntax which leads to exceptions
  • a statuser for seeing the high-level translation/error status of your .po files
  • a translator for strings in your .po files to make development easier

v0.4 released!

v0.4 sports an overhauled linter. Instead of two rules ("malformed" and whatever the other one was), it now has a bunch of much smaller and more specific rules! Also, I renamed the rules so they are all numbered!

See the table of error/warning rules and their numbers here: http://dennis.readthedocs.org/en/v0.4/linting.html#warnings-and-errors

Additionally, dennis hits false positives for a variety of reasons. If you're doing a "keep the errors out of production!" kind of thing, then false positives can prevent locale files from making it. That sucks!

To alleviate this, dennis now allows you to tell it what to ignore in the extracted comments. What's an extracted comment? It's a comment in the .po file that starts with #.. You can specify the extracted comments with "context" or similar mechanisms depending on how you're extracting strings. You can tell dennis to skip specific rules or skip all the rules on a string-by-string basis.

Ignore everything:

#. dennis-ignore: *
msgid "German makes up 10% of our visitor base"
msgstr "A német a látogatóbázisunk 10%-át teszi ki"

Ignore specific rules (comma-separated):

#. dennis-ignore: E101,E102,E103
msgid "German makes up 10% of our visitor base"
msgstr "A német a látogatóbázisunk 10%-át teszi ki"

Ignore everything, but note the beginning of the line is ignored by dennis so you can tell localizers to ignore the ignore thing:

#. localizers--ignore this comment. dennis-ignore: *
msgid "German makes up 10% of our visitor base"
msgstr "A német a látogatóbázisunk 10%-át teszi ki"

I also tweaked some of the Python 3 support code because it looked at me funny.

Also, universal wheel!

For more specifics on this release, see here: http://dennis.readthedocs.org/en/v0.4/changelog.html#version-0-4-may-1st-2014

Documentation and quickstart here: http://dennis.readthedocs.org/en/v0.4/

Source code and issue tracker here: https://github.com/willkg/dennis

2 out of 10 people saw the Pirate translation on The Web We Want (Mozilla). Arrr!

Dennis v0.3.11 released! Fixes and Python 3 support Mon, 21 Apr 2014

What is it?

Dennis is a Python command line utility (and library) for working with localization. It includes:

  • a linter for finding problems in strings in .po files like invalid Python variable syntax which leads to exceptions
  • a statuser for seeing the high-level translation/error status of your .po files
  • a translator for strings in your .po files to make development easier

v0.3.11 released!

v0.3.11 adds Python 3 support (there might be problems, but it's working for me) and adds error detection for the case where there's a } but no {.

Definitely worth updating!

8 out of 11 people who have heard of Dennis and continue to ignore its baby mews of wonderfulness also have a severe allergy to rainbows and kittens.

Django Eadred v0.3 released! Django app for generating sample data. Fri, 18 Apr 2014

Django Eadred gives you some scaffolding for generating sample data to make it easier for new contributors to get up and running quickly, bootstrapping required database data, and generating large amounts of random data for testing graphs and things like that.

The v0.3 release is a small one, but good:

  • Added support for Python 3.3 and later (Thank you Trey Hunner!)
  • Fixed test infrastructure and added tox support.
  • Fixed documentation.

There are no backwards-compatability problems with previous versions.

To update, do:

pip install -U eadred

pyvideo status: April 9th, 2014 Wed, 09 Apr 2014

What is pyvideo.org

pyvideo.org is an index of Python-related conference and user-group videos on the Internet. Saw a session you liked and want to share it? It's likely you can find it, watch it, and share it with pyvideo.org.

Status

I fixed a few issues and finally (finally) pushed out major site updates. Some of them are implemented in the worst possible way (e.g. facet filters for the search page), but some of them are great (e.g. Amara subtitle support).

I'm still struggling with a lot of technical debt on the site and a lack of time to really focus on it. That's mostly what's been making fixing the issues, improving the site and adding conferences take so long.

Sheila and I will be at PyCon US and hanging around for sprint days. If anyone is interested in sprinting, we'll be there. Even if we don't get any coding done, figuring out how to solve some of the bigger problems and planning what should be done in the next year would be a huge accomplishment.

If you're at PyCon and see either of us, feel free to give us a piece of your mind in regards to how you use PyVideo and what could be better.

Page 1 of 31  >> (less recent)