ºÝºÝߣ

ºÝºÝߣShare a Scribd company logo
Blogs und Bier?
Das lob' ich mir!
#ironbloggerhh
#bchh // 15.11.2013
#ironbloggerhh://hi!

carolinn

hasenfarm

kommanderkat

moeffju
Iron Blogger Hamburg #bchh13
#ironblogger://wie alles anfing
Benjamin Mako Hill
2011
Boston, USA

Because you you should blog more.
Because there¡¯s no motivation like peer pressure.
Because doing things for beer is never a bad idea.
://Hamburg
Januar 2013
75 Iron Blogger_innen
40 Aktive
5.840 Beitr?ge
? 126 pro Woche
://Hamburg
2 Treffen bisher
N?chster Termin:
04.12.
Aktueller
Kassenstand: 230 €
Spenden
85€ Opferhilfe Hamburg
150€ Kinderhospiz
Sternenbr¨¹cke
Iron Blogger Hamburg #bchh13
Iron Blogger Hamburg #bchh13
Iron Blogger Hamburg #bchh13
#ironblogger://Technik im Moment

4 Python Skripte
Datenhaltung in git
Ausf¨¹hrung ¨¹ber cron
Abrechnung in ledger
Wochenpost ¨¹ber XML-RPC
Iron Blogger Hamburg #bchh13
Iron Blogger Hamburg #bchh13
Iron Blogger Hamburg #bchh13
Iron Blogger Hamburg #bchh13
Iron Blogger Hamburg #bchh13
Iron Blogger Hamburg #bchh13
#!/usr/bin/env python
import yaml
import feedparser
import datetime
import sys
import os
from dateutil.parser import parse
import dateutil.tz as tz
import settings
config=settings.load_settings()
with open('bloggers.yml') as f:
users = yaml.safe_load(f.read())
if not os.path.exists('out'):
os.makedirs('out')
try:
with open('out/report.yml') as f:
log = yaml.safe_load(f.read())
except IOError:
log = {}
START = datetime.datetime.strptime(config['start_date'],'%Y/%m/%d')
def parse_published(pub):
try:
return parse(pub).astimezone(tz.tzlocal()).replace(tzinfo=None)
except:
return parse(pub).replace(tzinfo=None)
def get_date(post):
for k in ('published', 'created', 'updated'):
if k in post:
return post[k]
raise ValueError
¡­
def render_template(path, week=None, **kwargs):
with open('out/report.yml') as r:
report = yaml.safe_load(r)
with open('bloggers.yml') as f:
users = yaml.safe_load(f)
if week:
week = parse(week, default=START)
else:
week = START
week = (week - START).days / 7
week_start = START + (week * datetime.timedelta(7))
week_end = START + ((week + 1) * datetime.timedelta(7))
good = []
lame = []
skip = []
skipped_users = []
userlist = []
punted = []
class User(object):
pass
for (un, rec) in users.items():
u = User()
u.username = un
u.name = rec['name']
u.links = rec['links']
u.twitter = rec.get('twitter')
u.start_de = datetime.datetime.strptime(rec['start'], "%Y/%m/%d").strftime("%d.%m.%Y")
u.start = rec['start']
u.end = rec.get('end')
u.punt = rec.get('punt')
u.stop = rec.get('stop')
u.skip = parse_skip(rec)
u.weeks = report.get(un, [])
userlist.append(u)
# create a subset of punted users
if u.punt:
punted.append(u)
def user_key(u):
return (u.start, u.username)
userlist.sort(key=user_key)
punted.sort(key=user_key)
for u in userlist:
user_start = parse(u.start, default=START)
if u.stop:
continue
try:
if u.end and u.end <= week_start:
continue
except Exception as e:
pass
try:
if u.end and parse(u.end, default=START) <= week_start:
continue
except Exception as e:
pass
if should_skip(u.skip, week):
skipped_users.append(u)
elif user_start > week_start:
skip.append(u)
elif len(u.weeks) <= week or not u.weeks[week]:
lame.append(u)
else:
good.append(u)
debts = get_debts()
return Template(filename=path, output_encoding='utf-8').render(
week=week, week_start=week_start, week_end=week_end,
good=good, lame=lame, skip=skip, skipped_users=skipped_users, userlist=userlist,
pool=(get_balance('Pool') - get_balance('Event')), paid=get_balance('Pool:Paid'),
event=get_balance('Pool:Event'), cgi=cgi,
debts=debts, punted=punted, **kwargs)
Iron Blogger Hamburg #bchh13
Iron Blogger Hamburg #bchh13
Meins!
Gruppenmotivation
Filterbubble
Vernetzung
Einstieg
Bier!
#ironblogger://
Next Level?
#ironblogger://Danke!
@kommanderkat
@carolinn
@hasenfarm
@moeffju
Iron Blogger Hamburg #bchh13
Credits
¡ñ
¡ñ
¡ñ
¡ñ
¡ñ
¡ñ

Mako Hill by Joi Ito http://www.flickr.com/photos/joi/1022023224/ (CCBY)
Ironblogger Logos - Inken Meyer
Foto Ironblogger Treffen Hamburg - Steffen Groenveld
Foto Ironblogger Treffen Stuttgart - Ute M¨¹ndlein
Cat with Beer by swardraws http://www.flickr.
com/photos/swardraws/1344472184
Alle Tag Clouds made with love and http://wordle.net/

More Related Content

What's hot (13)

Blog Hacks 2011
Blog Hacks 2011Blog Hacks 2011
Blog Hacks 2011
Yusuke Wada
?
Django class based views
Django class based viewsDjango class based views
Django class based views
justinvoss
?
Juul Wholesale
Juul WholesaleJuul Wholesale
Juul Wholesale
zahid021
?
Code igniter parameter passing techniques
Code igniter parameter passing techniquesCode igniter parameter passing techniques
Code igniter parameter passing techniques
Rakhitha Ratnayake
?
Capybara
CapybaraCapybara
Capybara
Flavian Missi
?
global_shopping_online
global_shopping_onlineglobal_shopping_online
global_shopping_online
drocallaghan
?
global_shopping_online
global_shopping_onlineglobal_shopping_online
global_shopping_online
drocallaghan
?
global_shopping_online
global_shopping_onlineglobal_shopping_online
global_shopping_online
drocallaghan
?
global_shopping_online
global_shopping_onlineglobal_shopping_online
global_shopping_online
drocallaghan
?
global_shopping_online
global_shopping_onlineglobal_shopping_online
global_shopping_online
drocallaghan
?
Perl¤ÇWeb APIÈëéT
Perl¤ÇWeb APIÈëéTPerl¤ÇWeb APIÈëéT
Perl¤ÇWeb APIÈëéT
Yusuke Wada
?
Twib in Yokoahma.pm 2010/3/5
Twib in Yokoahma.pm 2010/3/5Twib in Yokoahma.pm 2010/3/5
Twib in Yokoahma.pm 2010/3/5
Yusuke Wada
?
Java&Script
Java&ScriptJava&Script
Java&Script
carffuca
?
Django class based views
Django class based viewsDjango class based views
Django class based views
justinvoss
?
Juul Wholesale
Juul WholesaleJuul Wholesale
Juul Wholesale
zahid021
?
Code igniter parameter passing techniques
Code igniter parameter passing techniquesCode igniter parameter passing techniques
Code igniter parameter passing techniques
Rakhitha Ratnayake
?
global_shopping_online
global_shopping_onlineglobal_shopping_online
global_shopping_online
drocallaghan
?
global_shopping_online
global_shopping_onlineglobal_shopping_online
global_shopping_online
drocallaghan
?
global_shopping_online
global_shopping_onlineglobal_shopping_online
global_shopping_online
drocallaghan
?
global_shopping_online
global_shopping_onlineglobal_shopping_online
global_shopping_online
drocallaghan
?
global_shopping_online
global_shopping_onlineglobal_shopping_online
global_shopping_online
drocallaghan
?
Perl¤ÇWeb APIÈëéT
Perl¤ÇWeb APIÈëéTPerl¤ÇWeb APIÈëéT
Perl¤ÇWeb APIÈëéT
Yusuke Wada
?
Twib in Yokoahma.pm 2010/3/5
Twib in Yokoahma.pm 2010/3/5Twib in Yokoahma.pm 2010/3/5
Twib in Yokoahma.pm 2010/3/5
Yusuke Wada
?

Similar to Iron Blogger Hamburg #bchh13 (20)

How to Scrap Any Website's content using ScrapyTutorial of How to scrape (cra...
How to Scrap Any Website's content using ScrapyTutorial of How to scrape (cra...How to Scrap Any Website's content using ScrapyTutorial of How to scrape (cra...
How to Scrap Any Website's content using ScrapyTutorial of How to scrape (cra...
Anton
?
With Great Nerdery Comes Great Responsibility
With Great Nerdery Comes Great Responsibility With Great Nerdery Comes Great Responsibility
With Great Nerdery Comes Great Responsibility
John Anderson
?
Django
DjangoDjango
Django
webuploader
?
How I Built a Power Debugger Out of the Standard Library and Things I Found o...
How I Built a Power Debugger Out of the Standard Library and Things I Found o...How I Built a Power Debugger Out of the Standard Library and Things I Found o...
How I Built a Power Debugger Out of the Standard Library and Things I Found o...
doughellmann
?
Friend this-new&delete
Friend this-new&deleteFriend this-new&delete
Friend this-new&delete
Shehzad Rizwan
?
A Related Matter: Optimizing your webapp by using django-debug-toolbar, selec...
A Related Matter: Optimizing your webapp by using django-debug-toolbar, selec...A Related Matter: Optimizing your webapp by using django-debug-toolbar, selec...
A Related Matter: Optimizing your webapp by using django-debug-toolbar, selec...
Christopher Adams
?
Deep Dive Into Swift
Deep Dive Into SwiftDeep Dive Into Swift
Deep Dive Into Swift
Sarath C
?
Mojolicious
MojoliciousMojolicious
Mojolicious
Marcos Rebelo
?
How I Built a Power Debugger Out of the Standard Library and Things I Found o...
How I Built a Power Debugger Out of the Standard Library and Things I Found o...How I Built a Power Debugger Out of the Standard Library and Things I Found o...
How I Built a Power Debugger Out of the Standard Library and Things I Found o...
doughellmann
?
Language Sleuthing HOWTO with NLTK
Language Sleuthing HOWTO with NLTKLanguage Sleuthing HOWTO with NLTK
Language Sleuthing HOWTO with NLTK
Brianna Laugher
?
Django
DjangoDjango
Django
Kangjin Jun
?
RubyBarCamp ¡°§±§à§Ý§Ö§Ù§ß§í§Ö gems §Ú plugins¡±
RubyBarCamp ¡°§±§à§Ý§Ö§Ù§ß§í§Ö gems §Ú plugins¡±RubyBarCamp ¡°§±§à§Ý§Ö§Ù§ß§í§Ö gems §Ú plugins¡±
RubyBarCamp ¡°§±§à§Ý§Ö§Ù§ß§í§Ö gems §Ú plugins¡±
apostlion
?
RESTful services on IBM Domino/XWork
RESTful services on IBM Domino/XWorkRESTful services on IBM Domino/XWork
RESTful services on IBM Domino/XWork
John Dalsgaard
?
Functions And Header Files In C++ | Bjarne stroustrup
Functions And Header Files In C++ | Bjarne stroustrupFunctions And Header Files In C++ | Bjarne stroustrup
Functions And Header Files In C++ | Bjarne stroustrup
SyedHaroonShah4
?
The Art of AngularJS in 2015 - Angular Summit 2015
The Art of AngularJS in 2015 - Angular Summit 2015The Art of AngularJS in 2015 - Angular Summit 2015
The Art of AngularJS in 2015 - Angular Summit 2015
Matt Raible
?
About Go
About GoAbout Go
About Go
Jongmin Kim
?
Caret Introduction
Caret IntroductionCaret Introduction
Caret Introduction
J B
?
vue js.docx
vue js.docxvue js.docx
vue js.docx
SalwaDardouri
?
Drupal Module Development
Drupal Module DevelopmentDrupal Module Development
Drupal Module Development
Sumeet Pareek
?
Go Web Development
Go Web DevelopmentGo Web Development
Go Web Development
Cheng-Yi Yu
?
How to Scrap Any Website's content using ScrapyTutorial of How to scrape (cra...
How to Scrap Any Website's content using ScrapyTutorial of How to scrape (cra...How to Scrap Any Website's content using ScrapyTutorial of How to scrape (cra...
How to Scrap Any Website's content using ScrapyTutorial of How to scrape (cra...
Anton
?
With Great Nerdery Comes Great Responsibility
With Great Nerdery Comes Great Responsibility With Great Nerdery Comes Great Responsibility
With Great Nerdery Comes Great Responsibility
John Anderson
?
How I Built a Power Debugger Out of the Standard Library and Things I Found o...
How I Built a Power Debugger Out of the Standard Library and Things I Found o...How I Built a Power Debugger Out of the Standard Library and Things I Found o...
How I Built a Power Debugger Out of the Standard Library and Things I Found o...
doughellmann
?
A Related Matter: Optimizing your webapp by using django-debug-toolbar, selec...
A Related Matter: Optimizing your webapp by using django-debug-toolbar, selec...A Related Matter: Optimizing your webapp by using django-debug-toolbar, selec...
A Related Matter: Optimizing your webapp by using django-debug-toolbar, selec...
Christopher Adams
?
Deep Dive Into Swift
Deep Dive Into SwiftDeep Dive Into Swift
Deep Dive Into Swift
Sarath C
?
How I Built a Power Debugger Out of the Standard Library and Things I Found o...
How I Built a Power Debugger Out of the Standard Library and Things I Found o...How I Built a Power Debugger Out of the Standard Library and Things I Found o...
How I Built a Power Debugger Out of the Standard Library and Things I Found o...
doughellmann
?
Language Sleuthing HOWTO with NLTK
Language Sleuthing HOWTO with NLTKLanguage Sleuthing HOWTO with NLTK
Language Sleuthing HOWTO with NLTK
Brianna Laugher
?
RubyBarCamp ¡°§±§à§Ý§Ö§Ù§ß§í§Ö gems §Ú plugins¡±
RubyBarCamp ¡°§±§à§Ý§Ö§Ù§ß§í§Ö gems §Ú plugins¡±RubyBarCamp ¡°§±§à§Ý§Ö§Ù§ß§í§Ö gems §Ú plugins¡±
RubyBarCamp ¡°§±§à§Ý§Ö§Ù§ß§í§Ö gems §Ú plugins¡±
apostlion
?
RESTful services on IBM Domino/XWork
RESTful services on IBM Domino/XWorkRESTful services on IBM Domino/XWork
RESTful services on IBM Domino/XWork
John Dalsgaard
?
Functions And Header Files In C++ | Bjarne stroustrup
Functions And Header Files In C++ | Bjarne stroustrupFunctions And Header Files In C++ | Bjarne stroustrup
Functions And Header Files In C++ | Bjarne stroustrup
SyedHaroonShah4
?
The Art of AngularJS in 2015 - Angular Summit 2015
The Art of AngularJS in 2015 - Angular Summit 2015The Art of AngularJS in 2015 - Angular Summit 2015
The Art of AngularJS in 2015 - Angular Summit 2015
Matt Raible
?
Caret Introduction
Caret IntroductionCaret Introduction
Caret Introduction
J B
?
Drupal Module Development
Drupal Module DevelopmentDrupal Module Development
Drupal Module Development
Sumeet Pareek
?

Iron Blogger Hamburg #bchh13

  • 1. Blogs und Bier? Das lob' ich mir! #ironbloggerhh #bchh // 15.11.2013
  • 4. #ironblogger://wie alles anfing Benjamin Mako Hill 2011 Boston, USA Because you you should blog more. Because there¡¯s no motivation like peer pressure. Because doing things for beer is never a bad idea.
  • 5. ://Hamburg Januar 2013 75 Iron Blogger_innen 40 Aktive 5.840 Beitr?ge ? 126 pro Woche
  • 6. ://Hamburg 2 Treffen bisher N?chster Termin: 04.12. Aktueller Kassenstand: 230 €
  • 7. Spenden 85€ Opferhilfe Hamburg 150€ Kinderhospiz Sternenbr¨¹cke
  • 11. #ironblogger://Technik im Moment 4 Python Skripte Datenhaltung in git Ausf¨¹hrung ¨¹ber cron Abrechnung in ledger Wochenpost ¨¹ber XML-RPC
  • 18. #!/usr/bin/env python import yaml import feedparser import datetime import sys import os from dateutil.parser import parse import dateutil.tz as tz import settings config=settings.load_settings() with open('bloggers.yml') as f: users = yaml.safe_load(f.read()) if not os.path.exists('out'): os.makedirs('out') try: with open('out/report.yml') as f: log = yaml.safe_load(f.read()) except IOError: log = {} START = datetime.datetime.strptime(config['start_date'],'%Y/%m/%d') def parse_published(pub): try: return parse(pub).astimezone(tz.tzlocal()).replace(tzinfo=None) except: return parse(pub).replace(tzinfo=None) def get_date(post): for k in ('published', 'created', 'updated'): if k in post: return post[k] raise ValueError ¡­
  • 19. def render_template(path, week=None, **kwargs): with open('out/report.yml') as r: report = yaml.safe_load(r) with open('bloggers.yml') as f: users = yaml.safe_load(f) if week: week = parse(week, default=START) else: week = START week = (week - START).days / 7 week_start = START + (week * datetime.timedelta(7)) week_end = START + ((week + 1) * datetime.timedelta(7)) good = [] lame = [] skip = [] skipped_users = [] userlist = [] punted = [] class User(object): pass for (un, rec) in users.items(): u = User() u.username = un u.name = rec['name'] u.links = rec['links'] u.twitter = rec.get('twitter') u.start_de = datetime.datetime.strptime(rec['start'], "%Y/%m/%d").strftime("%d.%m.%Y") u.start = rec['start'] u.end = rec.get('end') u.punt = rec.get('punt') u.stop = rec.get('stop') u.skip = parse_skip(rec) u.weeks = report.get(un, []) userlist.append(u) # create a subset of punted users if u.punt: punted.append(u) def user_key(u): return (u.start, u.username) userlist.sort(key=user_key) punted.sort(key=user_key) for u in userlist: user_start = parse(u.start, default=START) if u.stop: continue try: if u.end and u.end <= week_start: continue except Exception as e: pass try: if u.end and parse(u.end, default=START) <= week_start: continue except Exception as e: pass if should_skip(u.skip, week): skipped_users.append(u) elif user_start > week_start: skip.append(u) elif len(u.weeks) <= week or not u.weeks[week]: lame.append(u) else: good.append(u) debts = get_debts() return Template(filename=path, output_encoding='utf-8').render( week=week, week_start=week_start, week_end=week_end, good=good, lame=lame, skip=skip, skipped_users=skipped_users, userlist=userlist, pool=(get_balance('Pool') - get_balance('Event')), paid=get_balance('Pool:Paid'), event=get_balance('Pool:Event'), cgi=cgi, debts=debts, punted=punted, **kwargs)
  • 26. Credits ¡ñ ¡ñ ¡ñ ¡ñ ¡ñ ¡ñ Mako Hill by Joi Ito http://www.flickr.com/photos/joi/1022023224/ (CCBY) Ironblogger Logos - Inken Meyer Foto Ironblogger Treffen Hamburg - Steffen Groenveld Foto Ironblogger Treffen Stuttgart - Ute M¨¹ndlein Cat with Beer by swardraws http://www.flickr. com/photos/swardraws/1344472184 Alle Tag Clouds made with love and http://wordle.net/