[three]Bean

Two New zodbot Commands

Sep 29, 2014 | categories: zodbot, fedora View Comments

Our friendly neighborhood irc bot zodbot gained some new powers last week:

First, .vacation will tell you who is on vacation right now according to the fedocal vacation calendar:

│ threebean │ .vacation
│    zodbot │ threebean: The following people are on vacation:
│           │ cicku, monnerat, tomspur, vondruch, nphilipp, kdudka, mtasaka

Second, .pulls will report back the list of open pull requests on a given GitHub repository. Hopefully this will catch on among Fedora Infrastructure app developers as a way to facilitate and prompt code review:

│ threebean │ .pulls fedora-infra/tahrir
│    zodbot │ threebean: @oddshocks's "Add checks to check for attempted
│           │ duplicate additions of things in admin panel."
│           │ https://github.com/fedora-infra/tahrir/pull/286
│    zodbot │ threebean: @hroncok's "Reenable gravatar fallback"
│           │ https://github.com/fedora-infra/tahrir/pull/209

Writing zodbot plugins is fun and you can do it too. The source can be found in git right here.

View Comments

Facelift for the apps.fp.o landing page

Sep 29, 2014 | categories: fedora View Comments

The apps.fp.o landing page got an update last week:

It was reorganized -- the categories in place before weren't thought out that well, and we had started to out-grow them. I reorganized the apps loosely by "purpose". If you have input and want to suggest changes, please do file a bug or submit a patch.

It got a fresh theme -- I updated the css from old bootstrap-2.x conventions to bootstrap-3.1.x and am now using our Fedora bootstrap theme -- the same css base that FMN and bodhi2 use.

It now has status integration -- some apps on the landing page now draw additional information from status.fp.o to give viewers a heads up if they're not functioning correctly.

https://camo.githubusercontent.com/c4bc07d4fa66d99424a70301afa2dde3effe77f5/687474703a2f2f74687265656265616e2e6f72672f636c65616e65722d617070732e66702e6f2e706e67

gnokii tells me he uses this thing all the time in his "how to join Fedora" sessions since "nobody can remember all the different urls."

View Comments

Fedora Notifications, 0.3.0 Release

Sep 16, 2014 | categories: notifications, fedmsg, fedora View Comments

Just as a heads up, a new release of the Fedora Notifications app (FMN) was deployed today (version 0.3.0).

Frontend Improvements

Negated Rules - Individual rules (associated with a filter) can now be negated. This means that you can now write a rule like: "forward me all messages mentioning my username except for meetbot messages and those secondary arch koji builds."

Disabled Filters - Filters can now be disabled instead of just deleted, thus letting you experiment with removing them before committing to giving them the boot.

Limited Info - The information on the "context" page is now successively revealed. Previously, when you first visited it, you were presented with an overwhelming amount of information and options. It was not at all obvious that you had to 'enable' a context first before you could receive messages. It was furthermore not obvious that even if you had it enabled, you still had to enter an irc nick or an email address in order for things to actually work. It now reveals each section as you complete the preceding ones, hopefully making things more intuitive -- it warns you that you need to be signed on to freenode and identified for the confirmation process to play out.

Truncated Names - Lastly and least, on the "context" page, rule names are no longer truncated with a ..., so you can more easily see the entirety of what each filter does.

Backend Improvements

Group Maintainership - There's a new feature in pkgdb as of this summer: groups can now be maintainers of packages. I.e. the perl-sig group can own a number of core perl packages. FMN didn't know to route messages about such packages to you if you're a member of the perl-sig group, but now it does.

Automatic Accounts - And lastly, with an eye to the future, when new FAS accounts are added to the packager group, FMN notices this and creates them an FMN account turned on by default. (This is in preparation for the upcoming switch of FMN from opt-in to opt-out for packagers.)

Clock Skew - There's a feature where the IRC backend will try to tell you how delayed it was in delivering your message. If your koji build finishes while FMN is busy with other stuff, when it finally gets to your message it will tell you "your koji build finished 2 minutes ago". There was a little cosmetic bug in this where, due to clock skew between servers, FMN would tell you that "your koji build finished 2 seconds in the future".. confusing! This release fixes that.

Cache Locking - The backend keeps an in-memory cache of everyone's notification preferences (which it intelligently invalidates based on fedmsg activity). Some optimization improvements were made on the thread locking around that cache.


Thanks for all the RFEs and bugs filed so far. Happy Hacking!

View Comments

Fedora Badges Mailing List

Sep 11, 2014 | categories: fedora, badges View Comments

http://badges.fedoraproject.org/pngs/badges_fan.png

Want to help with the future direction of Fedora Badges and don't know where to start? One place we really need help is with the triaging, review, and conceptual work that goes into cooking up new badges.

It used to be that we had a real bottleneck. New badge ideas would be submitted to the fedora-badges trac but notifications of updates there (fresh insights, elaborations, requests for clarifications, etc..) would only be sent to members of the sysadmin-badges group (a small but sturdy crew).

Earlier this month, we hooked up trac notifications to the badges mailing list opening the door to broader participating -- you can now subscribe and take an active part in determining the future direction of the system!

http://threebean.org/blog/static/images/fedora-badges-all-the-things.jpg

NOTE -- Your action must be born of intrinsic motivation. There is no badge for joining the mailing list. I'm sorry.

http://rack.3.mshcdn.com/media/ZgkyMDEzLzA3LzE4Lzc1L0RyLldoby41Mjg5ZC5naWYKcAl0aHVtYgkxMjAweDk2MDA-/571ec44d/6da/Dr.-Who.gif
View Comments

Fedora Photowall

Sep 04, 2014 | categories: python, fedora View Comments

If you didn't already know it, there is a Fedora Badge for associating a libravatar with your Fedora account.

https://badges.fedoraproject.org/pngs/mugshot.png

A fun by-product of having such a thing is that we have a list of FAS usernames of people who have public avatars with predictable URLs. With that, I wrote a script that pulls down that list and assembles a "photo wall" of a random subset. Check it out:

http://threebean.org/blog/static/images/montage2.png

I wrote it as a part of another project that I ended up junking, but the script is neat on its own.

Perhaps we can use it as a splash image for a Fedora website someday (say, next year's Flock site or a future iteration of FAS?). It might make a fun desktop wallpaper, too.

Here's the script if you'd like to re-use and modify. You can tweak the dimensions variable to change the number of rows and columns in the output.

#!/usr/bin/env python
""" fedora-photowall.py - Make a photo montage of Fedora contributors.

Dependencies:
 $ sudo yum install python-sh python-beautifulsoup4 python-requests ImageMagick

Usage:   python fedora-photowall.py
Author:  Ralph Bean
License: LGPLv2+

"""

import hashlib
import os
import random
import urllib

import sh
import bs4
import requests

dimensions = (12, 5)

datadir = './data'
avatar_dir = datadir + '/avatars'
montage_dir = datadir + '/montage'


def make_directories():
    try:
        os.makedirs(datadir)
    except OSError:
        pass

    try:
        os.makedirs(avatar_dir)
    except OSError:
        pass

    try:
        os.makedirs(montage_dir)
    except OSError:
        pass


def avatars(N):
    url = 'https://badges.fedoraproject.org/badge/mugshot/full'
    response = requests.get(url)
    soup = bs4.BeautifulSoup(response.text)
    last_pane = soup.findAll(attrs={'class': 'grid-100'})[-1]
    persons = last_pane.findAll('a')

    persons = random.sample(persons, N)

    for person in persons:
        name = person.text.strip()
        openid = 'http://%s.id.fedoraproject.org/' % name
        hash = hashlib.sha256(openid).hexdigest()
        url = "https://seccdn.libravatar.org/avatar/%s" % hash
        yield (name, url)


def make_montage(candidates):
    """ Pull down avatars to disk and stich with imagemagick """

    filenames = []
    for name, url in candidates:
        filename = os.path.join(avatar_dir, name)
        if not os.path.exists(filename):
            print "Grabbing", name, "at", url
            urllib.urlretrieve(url, filename=filename)
        else:
            print "Already have", name, "at", filename
        filenames.append(filename)

    args = filenames + [montage_dir + '/montage.png']
    sh.montage('-tile', '%ix%i' % dimensions, '-geometry', '+0+0', *args)
    print "Output in", montage_dir


def main():
    make_directories()
    N = dimensions[0] * dimensions[1]
    candidates = avatars(N)
    make_montage(candidates)

if __name__ == '__main__':
    main()

And another example of output:

http://threebean.org/blog/static/images/montage4.png

Cheers!

View Comments

« Previous Page -- Next Page »