diff --git a/AGENTS.md b/AGENTS.md index 6ad0e87a0..b818be14d 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -93,6 +93,26 @@ problem somebody else has to find. the talk and meetup records. Writing them into a person's front matter guarantees they will eventually contradict the data. +**A programme is two lists, not one.** An event page carries `agenda` (the grid: +`start`, `track_length`, `room`, and either a `talk` id or its own `label` and +`type`), `talks` (the content: `title`, `speaker`, `description`, `language`, +`topic`, `duration_minutes`, `links`), and `rooms` (`id` and `name`). They are +separate because one talk can take several slots, and because a photo of the +gallery links to a talk by id, which a row of a grid cannot give it. The colour +of a block and the end of a slot are computed, not stored: see +`partials/agenda_entry.html`. **A time is always a quoted string.** YAML 1.1 +reads an unquoted `9:00` as the integer 540, sexagesimal, so Hugo renders it +right and every Python checker reads a number. + +**`language` takes `en`, `es` or `ca`,** or a list of them for a session given in +two. It was free text and carried seven spellings of those three languages, +which is how one page printed both `Catalan` and `Català`. **A list is written +in that order, `en`, `es`, `ca`.** The archive held `[en, es]` once and +`[es, en]` three times for the same pair, and the page printed "English / +Spanish" and "Spanish / English", because `partials/agenda_entry.html` prints +the codes in the order the list gives them. `bin/check-content` rejects any +other order. + **A person attribution requires human verification.** Talk records carry `source` and `confidence`. **Only a human-verified record may create a person page or link a speaker name.** A record with `confidence: medium` or `low` renders the @@ -184,7 +204,7 @@ The checks, which are what a pull request has to pass: | Script | What it rejects | |---|---| -| `bin/check-content` | A broken reference, a photo that is not square, a source far larger than the build asks for, a field that no longer exists | +| `bin/check-content` | A broken reference, a photo that is not square, a source far larger than the build asks for, a field that no longer exists, an `end_date` that is not a date or not later than `date` | | `bin/check-html-safety` | Dangerous raw HTML in content, with an allowlist for the legitimate embeds | | `bin/check-rendered` | The same, on the built pages, plus any `http://` URL. Run it against a directory you built, never against `public/` while a dev server is writing there | diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 7eb00b302..2b1c2ab52 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -150,7 +150,7 @@ What each check is for: | Check | Fails when | |---|---| | Build the site | Hugo cannot build, or emits a warning | -| `bin/check-content` | Front matter does not parse, a person `id` does not match its filename, an id is duplicated, a declared photo is missing, an event references a person or sponsor that does not exist, a social URL has the wrong shape, or a field is empty. It warns, without failing, about a photo that is too small or has no colour | +| `bin/check-content` | Front matter does not parse, a person `id` does not match its filename, an id is duplicated, a declared photo is missing, an event references a person or sponsor that does not exist, a social URL has the wrong shape, a field is empty, or an `end_date` is not later than `date`. It warns, without failing, about a photo that is too small or has no colour | | `bin/check-html-safety` | Content carries raw HTML that turns a content change into script execution, a redirect, a credential prompt, or a page overlay. See [Content safety check](README.md#content-safety-check) | | `bin/check-rendered` | The built pages carry that same markup, which catches a template that produces it even when no content file does, or they link to anything over `http`. See [Rendered page check](README.md#rendered-page-check) | | `bin/canon.py --selftest` | The one normalization of imported text stops being idempotent, or changes what it strips | diff --git a/bin/check-content b/bin/check-content index 96ccba572..ccbd6fb37 100755 --- a/bin/check-content +++ b/bin/check-content @@ -6,6 +6,10 @@ match its filename, a duplicate id, a page that lists a person or sponsor id with no page behind it, a declared photo with no file behind it, and a remote photo_url. It warns about a person photo with no colour in it. +For the days it checks end_date, which an event carries when it ran more +than one day: it is a date, and it is later than date. The template prints +one day for an end_date it cannot use, so the mistake is silent on the page. + Exit code 1 if any error is found. Warnings do not fail the build. Usage: @@ -270,6 +274,94 @@ def report_small(small): f"the grid. Smallest: {shown}. Replacing the file is the only fix.") +_talk_ids = {} + + +def talk_ids_of(path, data, people): + """Return the talk ids of one page, reporting a duplicate or a bad speaker. + + A photo finds its talk by id inside its own file, and so does a slot of + the agenda, so two talks under one id leave the second unreachable: every + photo of it shows the title of the first, and so does every slot. + + This used to run from check_gallery only, which skips a page with no + photos block. Two of the ten files that carry a programme have one, so + the speaker ids of 21 talks were checked and the other 113 were not, and + those 113 were exactly the ones that needed it: they credited a speaker + as free text, which an id check cannot see at all. The walk now runs for + every page that declares talks, from check_agenda, and check_gallery asks + it for the ids it needs. The result is kept per path so the two callers + report each mistake once. + """ + if path in _talk_ids: + return _talk_ids[path] + talks = data.get("talks") or [] + if not talks: + # Not kept: there is nothing to report twice, and a page with no + # programme would otherwise count towards the coverage figure below. + return set() + talk_ids = set() + unnamed = [] + for position, talk in enumerate(talks, start=1): + if not isinstance(talk, dict): + error(path, f"'talks' holds {talk!r} at position {position}, " + f"which is not a talk") + continue + talk_id = talk.get("id") + title = talk.get("title") or talk_id or f"position {position}" + if talk_id in talk_ids: + error(path, f"talk '{title}' repeats the id '{talk_id}', which an " + f"earlier talk of this file already uses. A photo " + f"points at a talk by id, so the second talk is " + f"unreachable. Give it an id of its own.") + elif talk_id: + talk_ids.add(talk_id) + + # speaker, singular, was free text: one string with the names of + # everyone who gave the talk. No template reads it any more, so a + # file that still carries one shows no speaker at all on the block + # and in the modal, and the id check below never sees those names. + if "speaker" in talk: + error(path, f"talk '{title}' carries 'speaker' " + f"{talk['speaker']!r}, the free-text field that " + f"'speakers' replaced. Nothing renders it, so the " + f"block and the modal credit nobody. Use speakers, a " + f"list of ids of content/people/.") + + speakers = talk.get("speakers") or [] + if not speakers: + unnamed.append(title) + for ref in speakers: + if not isinstance(ref, str): + error(path, f"talk '{title}' lists {ref!r} as a speaker, " + f"which is not an id") + elif ref not in people: + error(path, f"talk '{title}' lists unknown speaker id " + f"'{ref}'. Add content/people/{ref}.md, or fix " + f"the id: the gallery prints an id it cannot " + f"find as the id with its hyphens taken out.") + report_unnamed(path, unnamed, talks) + _talk_ids[path] = talk_ids + return talk_ids + + +def report_unnamed(path, unnamed, talks): + """A talk with no speaker is correct when the source names nobody. + + It is still worth a figure on every run. The printed agenda of PyDay BCN + 2019 names no speaker at all, and the thread announced only some of the + sessions, so eleven of its fifteen talks credit nobody and a reader of + the gallery sees the title alone. A count that grows is the sign that a + source was read carelessly. + """ + if not unnamed: + return + shown = ", ".join(f"'{title}'" for title in unnamed[:3]) + warn(path, f"no speaker for {len(unnamed)} of the {len(talks)} talks, so " + f"a photo of one of them shows the title alone: {shown}. " + f"Correct when the source names nobody.") + + # One form per network, so a reader of the files can tell at a glance that two # links point at the same place, and so nobody has to wonder whether # es.linkedin.com and www.linkedin.com are the same profile. The hosts are the @@ -557,6 +649,12 @@ def check_listings(people, sponsors): pages were listed by name, so a rename switched that check off in silence. Returns the set of person ids that some page lists, for the orphan check. + The speakers of the talks count: a talk credits a person by id, the page + prints the name of that person record on the block and in the detail + modal, and partials/appearances_index.html gives the person that event as + an appearance. The ids themselves are checked in check_talk_ids, which + reports an unknown one with the title of its talk, so this walk only + collects the ones that resolve. """ listed_people = set() for path in sorted(CONTENT.rglob("*.md")): @@ -573,49 +671,321 @@ def check_listings(people, sponsors): error(path, f"'{key}' references unknown {noun} id '{ref}'") elif kind == "people": listed_people.add(ref) + for talk in data.get("talks") or []: + if not isinstance(talk, dict): + continue + for ref in talk.get("speakers") or []: + if isinstance(ref, str) and ref in people: + listed_people.add(ref) return listed_people -# The colour classes agenda.scss defines for an entry of the schedule. The -# entry's color value lands in the class attribute as it is, so a missing or -# misspelt value gets the fallback background instead of a brand colour. -AGENDA_COLOURS = {"blue", "green", "grey", "orange", "pink", "purple", "red", "yellow"} +# The types partials/event_types.html knows. A slot that holds no talk names +# its own type, and an unknown one renders no icon and only warns at build +# time, which nobody reads. +ENTRY_TYPES = {"workshop", "talk", "lightning", "keynote", "panel", "group", + "coffee", "lunch", "photo", "qa"} + +# The closed vocabulary of the language field. It used to be free text and +# carried seven spellings of these three languages. +# +# A list, for a session given in two languages, is written in this order. The +# archive held "en, es" once and "es, en" three times for the same pair, and +# the page printed "English / Spanish" and "Spanish / English" for it, because +# partials/agenda_entry.html prints the codes in the order the list gives +# them. The order below is the one AGENTS.md and the label table of that +# partial already declare, so there is one order and not two. +LANGUAGE_ORDER = ("en", "es", "ca") +LANGUAGES = set(LANGUAGE_ORDER) + + +def check_agenda(people): + """Check the schedule of an event page: its rooms, its talks, its grid. + + The page carries the grid (agenda) apart from the content (talks), + joined by a talk id, and that join fails in silence: a slot that names a + talk the page does not define renders as an empty block, which looks + like a gap in the programme and not like a mistake. + + The colour of a block is no longer checked here, because it is no longer + in the content. partials/agenda_entry.html gives every room of an event + one colour of the palette agenda.scss defines. The old check demanded a + colour on every entry, which is how the archive ended up with 157 of + them that meant nothing. + """ + for path in sorted(CONTENT.rglob("*.md")): + data = front_matter(path) + if data is None: + continue + if data.get("events"): + error(path, "carries 'events', the schedule model that 'agenda' " + "and 'talks' replaced. The template no longer reads " + "it, so the whole schedule of this page is missing " + "from the built site.") + rooms = check_rooms(path, data) + talks = check_talks(path, data, people) + for position, slot in enumerate(data.get("agenda") or [], start=1): + check_slot(path, position, slot, rooms, talks) + + +def check_rooms(path, data): + """Return the room ids of one page, reporting a missing or repeated id.""" + found = set() + for position, room in enumerate(data.get("rooms") or [], start=1): + if not isinstance(room, dict): + error(path, f"'rooms' holds {room!r} at position {position}, " + f"which is not a room") + continue + room_id = room.get("id") + if not room_id: + error(path, f"room {position} has no id. A slot of the agenda " + f"names its room by id, and the colour of the block " + f"comes from it.") + elif room_id in found: + error(path, f"room {position} repeats the id '{room_id}'. Two " + f"records under one id leave the second unreachable.") + else: + found.add(room_id) + if not str(room.get("name") or "").strip(): + error(path, f"room '{room_id}' has no name. The name is what the " + f"block of the grid prints.") + return found -def check_agenda(): - """Every entry of a schedule must carry one of the agenda colour classes.""" - for path in sorted(CONTENT.rglob("*.md")): +def check_talks(path, data, people): + """Return the talk ids of one page, checking the fields the grid reads.""" + found = talk_ids_of(path, data, people) + for position, talk in enumerate(data.get("talks") or [], start=1): + if not isinstance(talk, dict): + continue # talk_ids_of already reports this one + talk_id = talk.get("id") + title = talk.get("title") or talk_id or f"position {position}" + language = talk.get("language") + codes = [language] if isinstance(language, str) else language or [] + for code in codes: + if code not in LANGUAGES: + error(path, f"talk '{title}' has language '{code}'. Use " + f"{', '.join(LANGUAGE_ORDER)}, or a list of " + f"them for a session given in two.") + known = [code for code in codes if code in LANGUAGES] + if len(known) > 1: + expected = [code for code in LANGUAGE_ORDER if code in known] + if known != expected: + error(path, f"talk '{title}' lists its languages as " + f"{known}. A list is written in the order " + f"{list(LANGUAGE_ORDER)}, because the page prints " + f"the codes in the order the list gives them: two " + f"orders print the same pair two ways. Use " + f"{expected}.") + if talk.get("type") not in ENTRY_TYPES: + error(path, f"talk '{title}' has type '{talk.get('type')}', which " + f"is not one of: {', '.join(sorted(ENTRY_TYPES))}") + # Optional: the printed programme of PyDay BCN 2018 gives no length + # at all, so none of its talks stores one. A value that is there has + # to be a number, because the end of the slot is computed from it. + if "duration_minutes" in talk and not isinstance(talk["duration_minutes"], int): + error(path, f"talk '{title}' has duration_minutes " + f"{talk['duration_minutes']!r}, which is not a whole " + f"number of minutes. The end of the slot is computed " + f"from it.") + check_links(path, f"talk '{title}'", talk.get("links")) + return found + + +def check_links(path, label, links): + for position, link in enumerate(links or [], start=1): + if not isinstance(link, dict): + error(path, f"{label} holds {link!r} as link {position}, which " + f"is not a link") + continue + if not str(link.get("url") or "").startswith("http"): + error(path, f"{label} has link {position} with url " + f"{link.get('url')!r}, which is not an address") + if not link.get("type"): + error(path, f"{label} has link {position} with no type. Only a " + f"video gets its own line on the block; everything " + f"else is listed under Repository.") + + +def as_date(value): + """The date a front matter value holds, or None when it holds none. + + An unquoted 2016-09-17 arrives as a date from the YAML parser, a quoted + one as a string, and a value with a time as a datetime. Hugo reads all + three the same way, so all three count. + """ + if isinstance(value, datetime.datetime): + return value.date() + if isinstance(value, datetime.date): + return value + if isinstance(value, str): + try: + return datetime.date.fromisoformat(value.strip()) + except ValueError: + return None + return None + + +def check_dates(): + """An event that ran more than one day carries end_date, its last day. + + date is the first day and end_date the last, both YAML dates, and + partials/event_date.html prints the two as one range. The partial + treats an end_date that is not after date as absent, so a mistake in + the key turns a two day edition back into one day in silence: the page + builds and reads right. This says it: when end_date is there, it is a + date, date is there too, and end_date is strictly later than date. A + one day event has no end_date at all. + + Report, never crash: a value that is not a date is an error with the + value in it, and the rest of the check runs. + """ + for path in sorted((CONTENT / "events").rglob("*.md")): data = front_matter(path) - if data is None or not data.get("events"): + if data is None or "end_date" not in data: continue - for entry in data["events"]: - if not isinstance(entry, dict): - error(path, f"'events' holds {entry!r}, which is not an entry") - continue - colour = entry.get("color") - title = entry.get("title") or entry.get("speaker") or "?" - if not colour: - error(path, f"agenda entry '{title}' has no color; use one of: " - f"{', '.join(sorted(AGENDA_COLOURS))}") - elif colour not in AGENDA_COLOURS: - error(path, f"agenda entry '{title}' has color '{colour}', which is " - f"not one of: {', '.join(sorted(AGENDA_COLOURS))}") + raw_end = data["end_date"] + end = as_date(raw_end) + if end is None: + error(path, f"end_date is {raw_end!r}, which is not a date. Write " + f"the last day of the event as YYYY-MM-DD, or remove " + f"the key for an event of one day.") + continue + raw_start = data.get("date") + start = as_date(raw_start) + if start is None: + error(path, f"end_date {end} needs a date to be the end of, and " + f"date is {raw_start!r}. Write the first day as " + f"YYYY-MM-DD.") + continue + if end == start: + error(path, f"end_date {end} is the same day as date. An event of " + f"one day carries no end_date: remove the key.") + elif end < start: + error(path, f"end_date {end} is before date {start}. end_date is " + f"the last day of the event, so it is later than " + f"date.") + + +def check_slot(path, position, slot, rooms, talks): + """Check one row of the grid: where it sits, and what fills it.""" + if not isinstance(slot, dict): + error(path, f"'agenda' holds {slot!r} at position {position}, which " + f"is not a slot") + return + where = f"agenda slot {position}" + start = slot.get("start") + # An unquoted 9:00 is the integer 540 in YAML 1.1, sexagesimal. Hugo's + # parser reads it as a string and the page looks right, so nothing but + # this says the value is not what the file appears to hold. + if not isinstance(start, str) or not re.fullmatch(r"\d{1,2}:\d{2}", start): + error(path, f"{where} has start {start!r}. A start is a quoted H:MM " + f"string: YAML 1.1 reads an unquoted 9:00 as the integer " + f"540.") + else: + where = f"agenda slot {position} ({start})" + if not isinstance(slot.get("track_length"), int): + error(path, f"{where} has track_length " + f"{slot.get('track_length')!r}, which is not a number of " + f"tracks. The block spans that many columns.") + room = slot.get("room") + if room is not None and room not in rooms: + known = ", ".join(sorted(rooms)) or "none" + error(path, f"{where} names room '{room}', which this page does not " + f"declare. Use one of: {known}.") + talk = slot.get("talk") + if talk is not None and talk not in talks: + known = ", ".join(sorted(talks)) or "none" + error(path, f"{where} names talk '{talk}', which this page does not " + f"declare. The block renders empty, which reads as a gap " + f"in the programme. Use one of: {known}.") + if slot.get("speaker") is not None: + error(path, f"{where} carries 'speaker' {slot['speaker']!r}, the " + f"free-text field that 'speakers' replaced. Nothing " + f"renders it. Use speakers, a list of ids of " + f"content/people/, or leave the slot with none: the " + f"organising committee of an edition is not a person.") + if talk is None: + if slot.get("type") not in ENTRY_TYPES: + error(path, f"{where} holds no talk and has type " + f"{slot.get('type')!r}. A slot with no talk is a row " + f"of the day and names its own type, one of: " + f"{', '.join(sorted(ENTRY_TYPES))}") + if not isinstance(slot.get("duration_minutes"), int): + error(path, f"{where} holds no talk and has duration_minutes " + f"{slot.get('duration_minutes')!r}. With no talk to " + f"read it from, the slot carries its own length.") + check_links(path, where, slot.get("links")) + + +# What a row of /people/ can show about a person, apart from the name: the +# photo, the social links, the position, and the body of the file. A record +# with none of the four, and with no page crediting it either, is a row of a +# bare name. See themes/pybcn_theme/layouts/people/list.html. +PERSON_CONTENT_FIELDS = ("photo", "github", "linkedin", "twitter", "site", + "pybcn_position") + + +def body(path): + """The text under the front matter, which is the bio of a person file.""" + text = path.read_text(encoding="utf-8").lstrip("") + match = FRONT_MATTER.match(text) + return (text[match.end():] if match else text).strip() def check_orphans(people, listed_people): - """A person page no listing points at renders, but nobody can reach it. - - The check compares against the ids check_listings collected from the - front matter keys, so only a real listing counts. The old check searched - the text of every page with a word-boundary regex, and a regex boundary - sits between a letter and a hyphen: 'ricardo' matched inside - 'ricardo-ander-egg' and 'jordi' inside 'jordi-bosch', so those two pages - passed with no listing at all. Prose that happens to contain an id does - not count as a reference either. + """A person record the site publishes and can say nothing about. + + This used to report a person no listing points at, because the page of + that person rendered and nothing linked to it. That is no longer the + state: /people/ lists every file of the section, so every record has an + inbound link and a row by being in the folder, and the row links to the + page of the person, /people//, which came back with the Archive + (config.toml has the history). Being unlisted no longer hides a record; + it only empties its row and its page. + + So the error this looks for now is a row with nothing in it: no page + credits the record, and the file carries no photo, no social link, no + position, and no bio. The name is then the whole row, which is a + published claim that this person was part of the association with + nothing behind it. Either the programme that names them is missing, and + crediting the talk fixes the row, or the file is a leftover and goes. + + The uncredited records are reported together as one note, not one + warning each. They are not a defect of the file: most of them hold a + photo, a bio, or both, and what is missing is the page that says where + they served. One line names them all, so a reader sees the shape of the + gap instead of a line per record that each says a part of it. + + listed_people is the set check_listings collected from the front matter + keys and from the speakers of the talks, so only a real listing counts. + A page that carries a programme and no people_sections, PyData Barcelona + 2017, PyDay BCN 2018, or PyDay BCN 2019, reaches its speakers through + the talks alone. An earlier version searched the text of every page with + a word-boundary regex, and a regex boundary sits between a letter and a + hyphen: 'ricardo' matched inside 'ricardo-ander-egg' and 'jordi' inside + 'jordi-bosch', so those two pages passed with no listing at all. Prose + that happens to contain an id does not count as a reference either. """ - for page_id, path in people.items(): - if page_id not in listed_people: - warn(path, f"person '{page_id}' is not listed by any event or page") + uncredited = [] + for page_id, path in sorted(people.items()): + if page_id in listed_people: + continue + uncredited.append(page_id) + data = front_matter(path) or {} + if any(data.get(field) for field in PERSON_CONTENT_FIELDS): + continue + if body(path): + continue + warn(path, f"person '{page_id}' holds a name and nothing else, and no " + f"event or page credits it, so its row on /people/ is the " + f"name alone. Credit the talk or the page the person " + f"belongs to, or delete the file.") + if uncredited: + note(f"{len(uncredited)} person records are credited by no event and " + f"no page, so their row on /people/ and their own page carry no " + f"role, no year and no event: {', '.join(uncredited)}. A record is credited by the " + f"people block of a page, or by the speakers of a talk.") SECURITY_TXT = ROOT / "static" / ".well-known" / "security.txt" @@ -700,7 +1070,8 @@ def main(): check_social(people, sponsors) check_sources() listed_people = check_listings(people, sponsors) - check_agenda() + check_agenda(people) + check_dates() check_orphans(people, listed_people) check_security_txt() check_association() @@ -710,7 +1081,9 @@ def main(): for line in errors: print(f"ERROR {line}") - print(f"\n{len(people)} people, {len(sponsors)} sponsors checked.") + talks = sum(len(ids) for ids in _talk_ids.values()) + print(f"\n{len(people)} people, {len(sponsors)} sponsors, " + f"{talks} talks on {len(_talk_ids)} pages checked.") print(f"{len(errors)} errors, {len(warnings)} warnings.") return 1 if errors else 0 diff --git a/content/events/other_events/django_pyladies_2022.md b/content/events/other_events/django_pyladies_2022.md index 3aaa8f9a1..5c9d80e40 100644 --- a/content/events/other_events/django_pyladies_2022.md +++ b/content/events/other_events/django_pyladies_2022.md @@ -1,6 +1,11 @@ --- title: "Hands-on Django with PyLadiesBCN (2022)" year: 2022 +# The day of this edition. It is not in the Meetup export: the date comes +# from the X thread of the day, which the posts place on the 11th. +date: 2022-06-11 +# The venue of this edition, from the prose of this page: this day was never a Meetup event of either group. +venue: "Canòdrom" description: "From zero to hero 🤘 Learn how to code your own web application!" menu: main: @@ -46,8 +51,7 @@ free_text_sections: - title: Call for Sponsors id: call_for_sponsors - content: "

HELP US CREATE AN UNFORGETTABLE EXPERIENCE!!


- Contact us in pyladies-bcn@googlegroups.com
" + content: "

HELP US CREATE AN UNFORGETTABLE EXPERIENCE!!


" - title: Registration id: registration @@ -121,102 +125,93 @@ people_sections: - mireia-alvarez-dominguez -previous_editions: - - name: DjangoGirls workshop in PyDay BCN 2019 - url: https://djangogirls.org/en/barcelona/ - spansDuration: 30 numTracks: 1 -eventTimes: [9:00, 9:30, 10:00, 10:30, 11:00, 11:30, 12:00, 12:30, 13:00, 13:30, 14:00, 14:30, 15:00, 15:30, 16:00, 16:30, 17:00, 17:30, 18:00] -events: - - start_time_slot: 9:00 - end_time_slot: 9:00 - track_length: 1 - color: purple - title: "Registration & Welcome" - type: group - location: Room Actes - class: middle - - - title: "Hands-on Django" - start_time_slot: 9:30 - end_time_slot: 10:30 - color: blue - track_length: 1 - type: workshop - location: Room Actes - - - - start_time_slot: 11:00 - end_time_slot: 11:00 - track_length: 1 - color: yellow - title: "Coffee Break" - type: coffee - location: Open-air terrace - class: middle - - - title: "Hands-on Django" - start_time_slot: 11:30 - end_time_slot: 12:30 - color: blue - track_length: 1 - type: workshop - location: Room Actes - - - start_time_slot: 13:00 - end_time_slot: 13:00 - track_length: 1 - color: red - title: "Lightning talks" - type: talk - location: Room Actes - class: middle - - - start_time_slot: 13:30 - end_time_slot: 14:00 - track_length: 1 - color: yellow - title: "Lunch" - type: lunch - location: Open-air terrace - class: middle - - - title: "Hands-on Django" - start_time_slot: 14:30 - end_time_slot: 15:30 - color: blue - track_length: 1 - type: workshop - location: Room Actes - - - start_time_slot: 16:00 - end_time_slot: 16:00 - track_length: 1 - color: yellow - title: "Coffee Break" - type: coffee - location: Open-air terrace - class: middle - - - title: "Hands-on Django" - start_time_slot: 16:30 - end_time_slot: 17:30 - color: blue - track_length: 1 - type: workshop - location: Room Actes - - - start_time_slot: 18:00 - end_time_slot: 18:00 - track_length: 1 - color: purple - title: "Closing session & Kahoot" - type: group - location: Room Actes - class: middle - - +eventTimes: ["9:00", "9:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00"] + +# The rooms of this edition, in the order the grid first names them. A room is +# a record with an id because the colour of a block now comes from it: the +# template gives every room of an event one colour of the agenda palette and +# keeps it for the whole day. See partials/agenda_entry.html. +rooms: + - id: room-actes + name: "Room Actes" + - id: open-air-terrace + name: "Open-air terrace" + +# The talks of this edition: what was said, by whom, in which language. A talk +# carries no time and no room, because it is the content and not the slot. +# agenda below is what places it on the grid, and one talk can take more than +# one slot. The id is derived from the title and is the anchor a photo of the +# gallery links to, so it must not change. +talks: + - id: hands-on-django + title: "Hands-on Django" + type: workshop + duration_minutes: 60 + - id: lightning-talks + title: "Lightning talks" + type: talk + duration_minutes: 0 + +# The grid, one row per slot of the day, in the order it is printed. A slot +# names the talk it holds, or carries its own label and type when it holds +# none: a break, the group photo, the welcome. The level and the requirements +# sit here and not on the talk, because they are what the slot asks of whoever +# walks into it. A start is always quoted: YAML 1.1 reads an unquoted 9:00 as +# the integer 540. +agenda: + - start: "9:00" + track_length: 1 + room: room-actes + type: group + label: "Registration & Welcome" + duration_minutes: 0 + - start: "9:30" + track_length: 1 + room: room-actes + talk: hands-on-django + - start: "11:00" + track_length: 1 + room: open-air-terrace + type: coffee + label: "Coffee Break" + duration_minutes: 0 + - start: "11:30" + track_length: 1 + room: room-actes + talk: hands-on-django + - start: "13:00" + track_length: 1 + room: room-actes + talk: lightning-talks + - start: "13:30" + track_length: 1 + room: open-air-terrace + type: lunch + label: "Lunch" + duration_minutes: 30 + - start: "14:30" + track_length: 1 + room: room-actes + talk: hands-on-django + - start: "16:00" + track_length: 1 + room: open-air-terrace + type: coffee + label: "Coffee Break" + duration_minutes: 0 + - start: "16:30" + track_length: 1 + room: room-actes + talk: hands-on-django + - start: "18:00" + track_length: 1 + room: room-actes + type: group + label: "Closing session & Kahoot" + duration_minutes: 0 + --- Do you want to learn how to code your own web application? In this workshop for non-experienced women and LGBTIQ+ people, organised by PyLadiesBCN, **we'll learn how to code our own blog with Django** using HTML, CSS and Python. diff --git a/content/events/other_events/hacktoberfest_2018.md b/content/events/other_events/hacktoberfest_2018.md index 0ab3d45bb..85b17ecd8 100644 --- a/content/events/other_events/hacktoberfest_2018.md +++ b/content/events/other_events/hacktoberfest_2018.md @@ -1,10 +1,39 @@ --- title: "Hacktoberfest (2018)" year: 2018 -description: "" +# The day, the venue, and the organizers come from the frozen copy of the +# site of the day, static/archives/hacktoberfestbarcelona.com/, which the +# menu entry below already points at. Its title line reads "Hacktoberfest +# BCN | 21 October 2018, Barcelona", and the page names Kernel Analytics +# at Balmes 89 as the place and the four people below as the organizers. +# An earlier comment here said no source gave the day. It was wrong: the +# source was the page this one links to. +heroBackground: /archives/hacktoberfestbarcelona.com/images/backgrounds/bg7.jpg +layout: event +date: 2018-10-21 +venue: "Kernel Analytics" +description: "Hacktoberfest is an annual event across the world to encourage developers to contribute to open source projects. Join us, give back to open source and meet fellow open source enthusiasts." + +# No agenda, on purpose. The frozen page lists hours (a welcome talk and +# breakfast at 10.00, project pitches at 10.15, a tutorial for beginners +# at 10.30, and work from 10.45) but names no speaker and no talk. Writing +# that as a programme would invent a grid the day did not have, so the +# frozen page keeps it and this one links there. +people_sections: + - title: Organizers + id: organizers + levels: + - people_per_line: 4 + people: + - giorgio-polvara + - ignasi-fosch + - israel-saeta-perez + - laura-perez-mayos menu: main: parent: 'Other events' url: https://pybcn.org/archives/hacktoberfestbarcelona.com/ weight: 2 --- + +The site of the day is kept frozen in this repository, with the full agenda, the sponsors, and the frequently asked questions as they were published: [Hacktoberfest BCN 2018](/archives/hacktoberfestbarcelona.com/). diff --git a/content/events/other_events/pydata_2017_barcelona.md b/content/events/other_events/pydata_2017_barcelona.md index 8b996afbb..85c0307d9 100644 --- a/content/events/other_events/pydata_2017_barcelona.md +++ b/content/events/other_events/pydata_2017_barcelona.md @@ -1,39 +1,673 @@ --- -title: "PyData Barcelona (2017)" +title: PyData Barcelona (2017) year: 2017 -description: "The Data Science conference from NumFOCUS" +date: 2017-05-19 +end_date: 2017-05-21 +venue: ESADE +description: The Data Science conference from NumFOCUS menu: main: - parent: 'Other events' + parent: Other events weight: 1 heroBackground: /images/photos/pydata_badges.jpg -mainColumn: true +layout: event +talks: +- id: opening-keynote + title: Opening keynote + speakers: + - travis-oliphant + type: keynote + language: en + description: 'Filmed at PyData Barcelona 2017 + + + www.pydata.org + + + PyData is an educational program of NumFOCUS, a 501(c)3 non-profit organization in the United States. PyData provides a forum for the international community of users and developers of data analysis tools to share ideas and learn from each other. The global PyData network promotes discussion of best practices, new approaches, and emerging technologies for data management, processing, analytics, and visualization. PyData communities approach data science using many languages, including (but not limited to) Python, Julia, and R. + + + PyData conferences aim to be accessible and community-driven, with novice to advanced level presentations. PyData tutorials and talks bring attendees the latest project features along with cutting-edge use cases.' + title_note: 'pyvideo stored the role line of the speaker where the title goes, "Chief Data Scientist and co-founder of Continuum Analytics", and no source names the talk. "Opening keynote" is what it was.' +- id: the-magic-behind-pyspark-how-it-impacts-perf-the-future + title: The Magic Behind PySpark, how it impacts perf & the "future" + speakers: + - holden-karau + type: keynote + language: en + description: 'A look at how PySpark "works" today and how we can make it better in the future + insert engine noises of a fast car + + + + **Abstract** + + + This talk will introduce PySpark along with the magic done to make it work and be friends with the JVM. We will discuss why lazy evaluation makes a huge difference in PySpark, both in terms of general optimizations it opens up as well as Python specific considerations. From there we will explore much of the future of Spark, DataFrames & Datasets and what this means for PySpark. Most Spark DataFrame examples limit them selves to things written in the relational style query language, but we will explore how to add more functionality through UDFS. + + + We will wrap up with looking at the different pieces of work being done to make PySpark faster, from using better interchange formats like Apache Arrow to crazy hair brained schemes inspired by (but not the fault of) the Javascript on Spark project. + + + Hopefully no one is scared away from using Spark once they see the 300 small gnome like creatures behind the curtain, but parental guidance is encouraged for those who still believe in magic, reliable distributed systems, and vendor marketing brochures.' +- id: a-beginners-guide-to-weather-climate-data + title: A Beginners Guide to Weather & Climate Data + speakers: + - margriet-groenendijk + type: talk + language: en + description: 'Weather is part of our every day lives. Who doesn''t check the weather forecast regularly? But where does the data come from, what is it made of? The answer is a mix of measurements and models. This session looks at observations, predictions and forecast models, and weather data as a variable to consider in machine learning models. Learn how it is done from several Python notebook examples. + + + **Abstract** + + + Weather is part of our every day lives. Who doesn''t check the rain radar before heading out, or the weather forecast when planning a weekend away? But where does this data come from, what is it made of, and what can you do with it? The answer is a mix of measurements, models and statistics. This session will use Python notebooks with examples of how it is done: + + + * Weather is quantified by the temperature, humidity, wind, rainfall and radiation. These variables are all measured at thousands of locations worldwide and all data is collected and checked to improve the weather forecasts. Learn how to interpolate this data to create for instance global temperature maps to estimate the global monthly and annual temperature. + + * The observations are used to constrain the global weather forecast models. These models are complex and simulate the energy, water and carbon fluxes between and in the atmosphere, ocean and land. The output from the models is gridded data, which is generally stored in binary netcdf files. Learn how to load and process the gridded data into time series or maps for further analysis. + + * The raw model data is processed for you when you request weather data through a REST API. Learn how to use a weather API to train a supervised model with historical weather time series and then use the weather forecast data to do predictions. This session provides you with a brief overview of the science behind weather and climate forecasts and gives you the tools to get started with weather data.' + links: + - type: slides + url: https://www.slideshare.net/MargrietGroenendijk/pydata-barcelona-weather-and-climate-data +- id: despicable-machines-how-computers-can-be-assholes + title: 'Despicable machines: how computers can be assholes' + speakers: + - maciej-siwek + type: talk + language: en + description: 'There''s a widespread belief among machine learning practitioners that algorithms are objective and allow us to deal with the messy reality in a nice, objective way, without worrying about all the yucky human nature things. This talk will argue that this belief is wrong. Algorithms, just like the humans who create them, can be severely biased and despicable indeed. + + + **Abstract** + + + When working on a new ML solution to solve a given problem, do you think that you are simply using objective reality to infer a set of unbiased rules that will allow you to predict the future? Do you think that worrying about the morality of your work is something other people should do? If so, this talk is for you. + + + In this brief time, I will try to convince you that you hold great power over how the future world will look like and that you should incorporate thinking about morality into the set of ML tools you use every day. We will take a short journey through several problems, which surfaced over the last few years, as ML and AI generally, became more widely used. We will look at bias present in training data, at some real-world consequences of not considering it (including one or two hair-raising stories) and cutting-edge research on how to counteract this. + + + The outline of the talk is: + + + * Intro the problem: ML algos can be biased! + + * Two concrete examples. + + * What''s been done so far (i.e. techniques from recently-published papers). + + * What to do next: unanswered questions.' +- id: how-to-manage-complexity-in-distributed-applications + title: How to manage complexity in distributed applications + speakers: + - guillem-borrell-nogueras + type: talk + language: en + description: 'Complexity is tricky. Some years ago we got how to scale the performance of distributed applications, and that''s why everyone is talking about Big Data. But the challenge now is scaling the complexity within a fast-changing environment without penalizing the performance. These are the conclusions after one year developing a library trying to handle this issue, and using it in production. + + + **Abstract** + + + The development of large-scale distributed applications is an engineering challenge by itself. Development has to be orthogonal to be scalable, as you may know if you have heard about the Mythical Man-Month and the Conway''s law: trying to make your application faster may slow down your development. Managing complexity is a new technology trend, and NFQ and the Carlos III University of Madrid have developed a library to make large-scale distributed applications more sensible called pylm (https://pylm.readthedocs.io). Since this library has been already used in production, it is time to summarize what are the challenges one faces when building something more intricate than a Spark cluster. + + + This talk is about the value of developing in-house tools and obtaining deep technological insight opposed to the successive integration of trendy technologies. The latter is suitable to implement one-shot tools for isolated projects, but when facing a multi-year complex project, the former becomes a more solid ground for long-term maintenance. Complexity piles up nonlinearly, and the most popular tools nowadays cringe when they have to be tightly integrated, since in the long term it is impossible to isolate the technical and the human aspects of development. + + + Complexity''s weight is getting heavier in this scalability-obsessed world, and it''s time to talk about it. + + + This project has been funded by the Spanish Ministry of Economy and Competitivity under the grant IDI-20150936, cofinanced with FEDER funds' +- id: feature-importance-and-ensemble-methods-a-new-perspective + title: 'Feature Importance and Ensemble Methods : a new perspective' + speakers: + - constant-bridon + type: talk + language: en + description: 'Ensemble methods are extremely performant in terms of prediction, but lack easy interpretation. Feature importance is not only counting up how many times a feature has been used in a weak learner, but also by how much this feature contributes to the result. Detailed example and implementation are provided in a jupyter notebook in python for the library "xgboost" of extreme gradient boosting. + + + **Abstract** + + + I - Feature importance in ensemble algorithms - state of the art + + + 1) Feature importance in sklearn/xgboost: basically counts the occurrences of a feature in all the weak learners + + 2) Construction of the trees in xgboost: if the trees are deep enough, every feature is going to be used + + 3) Global feature importance is a misleading: a given feature might be critical for a given subpopulation but completely irrelevant for another (ex : multi-class classification) + + + II - Xgboost real feature importance + + + 1) Prediction influence: first splits influence the prediction more than last splits, so the importance of a feature must be weighted by the discrimination it provides + + + 2) Point-to-point feature importance: following the path of a given prediction, it is possible to weigh the importance of every used feature + + + 3) A relevant assessment of feature importance: explanation of a given prediction, and aggregation on a set of data points + + + III - Implementation and examples + + + 1) Point-to-point feature importance illustration and implementation explanation + + + 2) Evolution of feature importance with respect to learning iterations + + + 3) Noisy variables cancellation + + + IV - Limits and ways forward + + + 1) A word on correlated variables + + + 2) Is there a compromise performance/interpretation ?' +- id: happiness-inside-a-job-a-social-network-analysis + title: 'Happiness inside a job: a social network analysis' + speakers: + - guillem-duran-ballester + type: talk + language: en + description: 'In this talk, we will show how to analyze social network data from a mobile phone application to predict employee turnover and employee happiness. We will look into the process of extracting new features from a dataset using social network analysis techniques. We will also show how these features can be visualized and used to boost machine learning models. + + + **Abstract** + + + In this talk, we will show how to analyze social network data to predict employee turnover and employee happiness. This talk is a summary of different notebooks about social network analysis that will be available on [Github](https://github.com/Guillem-db/PyData-Bcn-2017). Please note that all the methodology and details we are using, are explained in depth in the notebooks. + + + We will cover the following topics: + + + * From tables to graphs: How to use [pandas](https://pandas.pydata.org/) and [networkx](https://networkx.github.io/) to merge several DataFrames into a graph, and different criteria for creating a graph representation of a database. + + + * Graph features: How to extract new features using social network analysis techniques such as [`Non-Negative Matrix Factorization`](https://scikit-learn.org/stable/modules/generated/sklearn.decomposition.NMF.html) and graph [`centrality metrics`](https://networkx.github.io/documentation/development/reference/algorithms.centrality.html). We will explain what these features represent, and how they relate to other types of features that can be extracted directly from the database. + + + * Improving ML models: How to use graph features to boost machine learning models. We will talk about different feature selection techniques that can be used to filter out the most significant set of graph-based features using [scikit-learn](https://scikit-learn.org/). + + + * Visualization: How to visualize social interactions using [bokeh](https://bokeh.pydata.org/en/latest/), and how visualization techniques can be used to check data integrity. + + + We will also review common mistakes that can happen during the modeling process and, how to prevent invalid data from getting leaked into your machine learning models. To conclude we compare the merits of using a Python framework versus R Language in terms of development time and computational performance. Data set provided by https://myhappyforce.com' + links: + - type: slides + url: https://github.com/Guillem-db/Happiness-inside-a-job-PyDataBcn17 +- id: machine-learning-to-know-if-you-r-coming + title: Machine Learning to know if you R coming + speakers: + - claudia-guirao + type: talk + language: en + description: 'Predicting Hotel Reservation Cancellations with R language. + + + Knowing in advance bookings that will be canceled before the arrival date is crucial in the hotel sector. We will examine the determinant characteristics of reservation cancellation, the constrains of this project and how the probability of cancellation was estimated. + + + **Abstract** + + + Some users are more likely to cancel their bookings than others, depending on several factors/conditions. Knowing these factors and how many bookings will be canceled will help hotels to optimize their incomes and maximize their occupancy.' +- id: analyzing-code-contributions-to-the-cpython-project-using + title: Analyzing code contributions to the CPython project using NetworkX and Matplotlib + speakers: + - jordi-torrents + type: talk + language: en + description: 'It''s a well established fact that only a small fraction of developers account for most code contributions to FOSS projects. The CPython project is not an exception, but analyzing code contributions through time reveals that the people that contribute the most is not always the same. I model CPython''s contribution dynamics as cooperation networks and analyze them using NetworkX and Matplotlib. + + + **Abstract** + + + I analyze cooperation on the CPython project by analyzing the code contributions that each participant on the project has done through time. I model these contributions as a succession of bipartite networks where the bipartite node sets are contributors and source code files; each contributor is linked to the source files to which they have contributed, weighted by the number of lines of source code added. Analyzing the structure of these networks using NetworkX and Matplotlib I found an hierarchy of nested groups of developers that corresponds to the developers that do most of the code contributions in the CPython project. This hierarchy, on the one hand, reflects the empirically well established fact that in FOSS projects only a small fraction of the developers account for most of the contributions. And, on the other hand, refutes the naive views of early academic accounts that characterized FOSS projects as a flat hierarchy of peers in which every individual does more or less the same. I argue that the structure of CPython''s cooperation network can be characterized as an open elite, where the top levels of this hierarchy are filled with new individuals at a high pace. This feature is key for understanding the mechanisms and dynamics that make FOSS communities able to develop long term projects, with high individual turnover, and yet achieve high impact and coherent results as a result of large scale cooperation. + + + You can download the slides for this talk from https://github.com/jtorrents/thesis/blob/master/presentations/pydata_bcn/cpython_code_contributions.pdf' + links: + - type: slides + url: https://github.com/jtorrents/thesis/blob/master/presentations/pydata_bcn/cpython_code_contributions.pdf +- id: running-jupyter-notebook-remotely-in-a-docker-swarm-cluster + title: Running jupyter notebook remotely in a docker swarm cluster + speakers: + - jordi-deu-pons + type: talk + language: en + description: 'The current version of Jupyter Notebook computes the document state at the browser side, this is a problem if you run long jobs in a remote notebook from a laptop. If you close the browser you lose all the output of the current running cell. I will explain how we solved this problem in our lab. This solution it also allows a "walkie-talkie" like real-time collaboration. + + + **Abstract** + + + The solution is based on running a docker container with a browser and a VNC server. All the remote access to the notebooks is done using Apache Guacamole a clientless remote desktop gateway. Everything is running on a dynamic docker swarm cluster of 20 nodes. As a lateral effect, this solution it also allows a real-time collaboration between users in a way that multiple users can access at the same time the same desktop (but they have to fight for the mouse and the keyboard). + + + https://github.com/jordeu/pytalks/tree/master/20170520_pydata_jupyter_in_a_docker_cluster' +- id: tensorflow-wide-deep-advanced-classification-the-easy-way + title: 'TensorFlow Wide & Deep: Advanced Classification the easy way' + speakers: + - yufeng-guo + type: talk + language: en + description: 'In this talk, we will go on an adventure to build a machine learning model that combines the benefits of linear regression models with deep neural networks. You will also gain some intuition about what is happening under the hood, and learn how you can use this model for your own datasets. + + + **Abstract** + + + Deep learning has already revolutionized machine learning research, but it remains out of reach for many developers. However, tools already exist today that enable leading-edge machine learning for many problem domains. + + In this talk, we will go on an adventure to build a machine learning model that combines the benefits of linear models with deep neural networks. You will also gain some intuition about what is happening under the hood, and learn how to use this model for your own datasets! To accomplish this, we will use TensorFlow, an open-source machine learning library with a full Python interface. It has become the most popular machine learning library on GitHub, and the community around it is growing rapidly.' + links: + - type: slides + url: https://storage.googleapis.com/yufengg-slides/pydataBCNslides.pdf +- id: deepcare-chatbot-generating-answers-to-customers-using-deep + title: DeepCare Chatbot - Generating answers to customers using Deep Learning and NLP + speakers: + - pascal-van-kooten + type: talk + language: en + description: 'The DeepCare chatbot is capable of learning to answer customer questions. Using a hybrid approach of NLP and Deep Learning, it tries to combat logical fallacies that occur in pure deep learning bots, while still coming up with unique answers. + + + In particular, it uses a sequence-to-sequence (seq2seq) long-short-term-memory LSTM deep learning model to capture intricacies in questions. As organisations cannot afford a bot making logical mistakes, verification through NLP is used. This two-step model prevents the downside of "no control" on deep learning, as well as the too static nature of classical rule based NLP models, and thus enables potentially higher quality answers. + + + A live demo will be available at https://deepcare.online on the day of the talk.' + links: + - type: slides + url: https://www.slideshare.net/PascalvanKooten/deepcare-chatbot-generating-answers-to-customers-using-a-hybrid-approach-of-deep-learning-and-nlp + title_note: 'The Slides list of the pre-Hugo page named it "DeepCare Chatbot - Generating answers to customers using a hybrid approach of Deep Learning and NLP", the title of the slides. The video names it as above.' +- id: extending-jupyter-with-google-cloud-storage-file-system + title: Extending Jupyter with Google Cloud Storage file system backend + speakers: + - egor-bulychev + type: talk + language: en + description: 'Jupyter has a modular architecture which allows extending it in numerous ways. This talk presents src-d/jgscm, Google Cloud Storage Jupyter file system backend which provides the ability to work with notebooks and other files directly in Google Cloud Storage. The described approach can be used for writing similar backends, e.g. for Amazon Cloud. + + + See more here : https://egorbu.github.io/pydata_2017_barcelona/index.html + + + **Abstract** + + + src-d/jgscm is a Jupyter file system backend for Google Cloud Storage. It allows to work with notebooks and other files directly in Google Cloud Storage. It''s codebase is rather small and simple thanks to Jupyter''s modular architecture. We start from the very basics, revise how Google Cloud Storage works and how Jupyter deals with the virtual file system and end up with the complete production-tested backend implementation. The described ideas are rather versatile and can be re-used to create backends for similar cloud storage systems, e.g. Amazon.' +- id: the-secret-life-of-rolling-pandas + title: The Secret Life Of Rolling Pandas + speakers: + - jaime-fernandez-del-rio + type: talk + language: en + description: 'Pandas provides a powerful set of functions to compute statistics on rolling windows. We will go beyond the convenient interface, and peek at the algorithmic gems that implement these operations efficiently: summed area tables, Welford''s method, skip lists, ring buffers, deques... will all get their minute of fame, and attendees may learn a thing or two they can use in their everyday coding. + + + **Abstract** + + + The talk will cover: + + + * A quick overview of the Rolling and Expanding objects in pandas. Why straightforward implementations, even clever ones using advanced NumPy tricks, are inefficient. + + * How is Series.rolling().sum() implemented. How the same idea can be extended to higher dimensions with the help of the inclusion-exclusion principle to yield summed area tables. + + * How are Series.rolling().var() and friends implemented. The importance of numerically stable algorithms: why Welford''s method is the better choice, even if it''s a little slower. How can the same ideas be generalized to higher order moments, and used to parallelize computations. + + * How are Series.rolling().max() and .min() implemented. The beauty of clever algorithms. The use of specialized data structures: a ring buffer as a deque. + + * How are Series.rolling().median() and .quantile() implemented. More specialized data structures: the skip list, or why randomization can be your friend.' +- id: nasa-space-apps-challenge-asteroid-prediction-impact + title: 'NASA Space APPS Challenge: Asteroid prediction impact' + speakers: + - gema-parreno + type: keynote + language: en + description: 'TensorFlow and Prophet : Forecasting Asteroid impact with opensource software Talk about NASA Space APPS 2016 global finalist project , focused on neural net design + + + **Abstract** + + + The talk will have two separate parts ; the first of it focuses on explaining Tensorflow architecture and Prophet opensource tools and the second part will dive into the Neural Net design and forecast prediction .' +- id: squeeze-gently-your-data + title: Squeeze (gently) your data + speakers: + - francesc-alted + type: keynote + language: en + description: 'Coping with the growing rate of data sources is becoming a big challenge, not only in terms of efficiently storing it, but also (and most specially) in doing more general computations with them. Compressing your data may help in many (and sometimes unexpected) ways in this task. This talk will introduce several ways in which you can benefit from highly efficient compression libraries. + + + **Abstract** + + + Nowadays CPUs are fast; they are coming with more and more cores and, in comparison, memory speed is not keeping this race in terms of speed. As a result, this opening gap is what is making of compression a valuable technique, not only for storing the same data by using less storage but also to accelerate data handling operations in an increasing number of cases. + + + My talk will start by introducing the technological reasons behind the increasing benefit of using compression in data science, and then will show some practical cases where data compression can lead to much more efficient data pipelines. For this, I will be using well-proven compression libraries like [Blosc](https://www.blosc.org/), [Zstandard](https://github.com/facebook/zstd) and [LZ4](https://github.com/lz4/lz4) that, either in combination with data handling libraries (like [PyTables](https://www.pytables.org/), [bcolz](https://bcolz.blosc.org/en/latest/) or [zarr](https://zarr.readthedocs.io/en/latest/)), or used for handling high-speed data streams (transmitted e.g. via [gRPC](https://www.grpc.io/)).' + links: + - type: slides + url: https://speakerdeck.com/francescalted/squeeze-gently-your-big-data +- id: increasing-the-trading-prediction-by-mining-aggregated + title: Increasing the trading prediction by mining aggregated human texting messages + speakers: + - yang-liu + type: talk + language: en + description: 'A novel approach is proposed to predict intraday directional-movements of the stock in the trading market based on the text of breaking financial news or social media by event data. This work is an effort to put more emphasis on the text-mining methods and tackle some specific aspects thereof that are weak in previous works. The research is a specific market, namely, the trading and stock market, + + + **Abstract** + + + Sentiment analysis This step is observed the time series of the company''s event based on the financial news or the social media, which analyses problem of coreference in text mining that is sentiment classification. Fasttext is inspired method that focuses on the meaning of words, which solves to obscure by ambiguity and play on words. This way can classify polarity, subjectivity and intensity in the corpus. According to the results of the classification, then it changes to the word representation. Thus, prediction accuracy increases significantly at this layer that is attributed to appropriate noise-reduction from the feature-space. Model creation and prediction The first layer is termed Sentiment Integration Layer by the deep neural network, which integrates sentiment analysis capability into the algorithm by proposing a sentiment weight that reflects their sentiment. Additionally, this layer reduces the dimensions by eliminating value in terms of sentiment and thereby improves prediction accuracy. The second layer encompasses a deep neural network model creation algorithm. It updates the models with the most recent information available, the deep learning algorithm is extensively evaluated using real market data and news content across multiple years, which is a good fitting capability to evaluate and select the financial news. The third layer is that it uses the recursive neural network explore patterns and of financial news through the recursive and pooling operation.' + links: + - type: slides + url: https://drive.google.com/open?id=0B19Xo1zu3JtgZmVDaWVyTk1uN3M +- id: the-neuroscience-lab + title: The Neuroscience Lab + speakers: + - nicholas-a-del-grosso + - javier-martinez-alcantara + type: talk + language: en + description: 'Python is an excellent fit for scientists; it is readable, has an active scientific community, and, most importantly, is versatile across a wide variety of programming tasks. In this talk, we will celebrate this versatility of Python by sharing the research being done in our neuroscience laboratory, focusing on Python''s involvement in each step of our scientific research. + + + **Abstract** + + + Biologists have always built their own hardware to perform unique experiments; today, new data collection and analysis techniques demand that they develop their own software as well. Often, this means that researchers without a formal education in programming must perform a wide variety of programming tasks in order to perform cutting-edge research. As a "real" programming language, Python is an excellent fit for scientists, not only for its oft-celebrated readability, active scientific community, and cross-platform support, but also for its versatility across a wide variety of domains. In this talk, we will celebrate this versatility of Python by sharing the research being done in our neuroscience laboratory, focusing how Python packages, applications, and plugins have become the tools of choice for everything from real-time machine vision and 3D graphics to data analysis and the presentation of scientific results.' + links: + - type: slides + url: https://www.slideshare.net/JavierMartinezAlcant/neuroscience-lab-a-tour-through-the-eyes-of-a-pythonista-pydata-barcelona2017 + title_note: 'The Slides list of the pre-Hugo page named it "Neuroscience Lab, a tour through the eyes of a pythonista", the title of the slides, and credited Javier Martínez Alcántara alone. The video names it as above and credits both speakers.' +- id: web-scraping-with-python + title: Web Scraping with Python + speakers: + - carles-illa + type: talk + language: en + description: 'Web Scraping is widely used to get data from websites automatically. Whether it be contact information, news or selling prices, we rely on web scraping techniques as they allow us to collect large data with minimal effort. + + + In the Python ecosystem we have a lot of different tools for extracting data from web pages, and in this talk we will present some of the most powerful ones. + + + **Abstract** + + + Web Scraping is the process of extracting useful information from the web automatically. + + + It is widely used for various purposes like: + + + - Lead generation + + - Price monitoring on e-commerce sites + + - Product reviews collection to do sentimental analysis + + - Social profiles retrieving for recruiters + + - Scraping blogs & forums to keep up with trends and news + + - Maintaining up-to-date real estate databases + + - News aggregators + + - Reputation monitoring + + - Events listings + + - Websites changes detection + + - Etc. + + + In this talk we will present some of the most powerful tools for extracting data from web pages using Python. We will learn how to use Python to request information from a web server, how to perform basic handling of the server''s response, and how to begin interacting with a website in an automated fashion.' +- id: guillotina-an-async-rest-resource-db-to-manage-millions-of + title: Guillotina - An Async REST Resource DB to manage millions of objects + speakers: + - ramon-navarro-bosch + type: talk + language: en + description: 'Guillotina is a new framework designed to be horizontal scalable, build on top of aiohttp and offering a Resource REST API to store, read and query object oriented datasets with millions of elements. Based on JSON schema types allows to define a Traversal API with strong security and granularity. With an abstracted storage layer its possible to provide support for Couch, Cassandra and Postgres. + + + **Abstract** + + + One of the most common problems on my daily basis data management is a way to store and secure objects with information in a transactional scalable infrastructure. Having an async API that holds security, triggers and transactional operations allows to provide an interface for managing the data that will be processed by the machine learning engines on batch operations. Including async queues of operations allows to provide model inference on the objects on real time operations on objects on the stack. + + + After 15 years on Plone/Zope framework we started to design a new concept using all the lessons learned on content management to provide a CRUD storage layer for big data objects.' + links: + - type: slides + url: https://www.slideshare.net/bloodbare/guillotina-76266421 +- id: lymphos2-organizing-and-sharing-biological-data + title: LympHOS2, Organizing and Sharing Biological Data + speakers: + - oscar-gallardo-roman + type: talk + language: en + description: "The study of the proteome (the set of proteins expressed by a cell,\ntissue, or organism at a defined time and conditions) generates a large\namount of complex data. This data should be processed, stored, curated,\nand made easily available to researchers so it can be studied to obtain\nbiomedical knowledge. In this talk we expose the Python tools we have\nused and developed to accomplish it.\n\nAbstract\n\nAt the [LP-CSIC/UAB](https://proteomica.uab.cat) we use a technology called [Mass Spectrometry](https://en.wikipedia.org/wiki/Mass_spectrometry) to\nstudy the *phospho-proteome of human T-Lymphocytes*; this is, the group\nof proteins that are phosphorilated (modified with phosphate groups) in\nthe human [T cells](https://en.wikipedia.org/wiki/T_cell) during their activation and differentiation as part\nof the [immune response](https://en.wikipedia.org/wiki/Immune_response). The experiments involved in this study\ngenerates a *large* amount of *complex* data:\n\n- Experimental conditions and procedures metadata.\n- The spectra data and metadata obtained from the mass spectrometers\n (usually in proprietary binary formats).\n- Qualitative or identification data, consisting of search results of\n those spectra against human protein sequence databases (using\n multiple search engines, that use different output file-formats)\n linking the spectra with possible peptides (small protein sequence\n fragments) that may or may not contain phosphorylated amino-acids.\n- Semi-quantitative data about the abundance of each possible\n identified peptide.\n- Missing values, identification scores, phosphorylation reassignments,\n and a lot of relationships and inter-linked data...\n\nAnd all this data has to be **processed**, **stored**, **curated**, and\nmade **easily accessible** to researchers in our lab and worldwide, so\nthey can study it to obtain biomedical knowledge about the\nphosphorylation changes in peptides and proteins involved in the signal\ntransduction pathways of T cells after their activation during the\nspecific immune response.\n\nWe have used different Python *packages* to develop different tools and\napplications to accomplish those objectives:\n\n- The [EasierMgf](https://bitbucket.org/lp-csic-uab/easiermgf) front-end application, to extract plain text spectra\n data from proprietary binary mass spectrometer files, was developed\n using the [wxPython](https://wxpython.org/) GUI toolkit.\n- The [ORM](https://en.wikipedia.org/wiki/Object-relational_mapping) from the [django](https://www.djangoproject.com/) framework was used to design and\n interact with the LymPHOS2 [MySQL](https://www.mysql.com/) database, which stores all the\n data and their inter-relationships.\n- Also, different modules from the Python standard library (*json*,\n *xml.etree.ElementTree*, *csv*, *zipfile*) were used to read and\n [import](https://bitbucket.org/lp-csic-uab/lymphosweb/src/c127cd7a88a5dfb0a70b9e3b6243553c6adda6fb/src/LymPHOS_v1_5/lymphos/filters.py) into the database the different files containing the data;\n and to [export](https://bitbucket.org/lp-csic-uab/lymphostools) database data into commonly used file formats for\n the researches to work with.\n- The [PQuantifier](https://bitbucket.org/lp-csic-uab/lymphospquantifier) group of tools was developed to do the statistical\n processing and analysis of the LymPHOS2 semi-quantitative data. It\n uses the [SQLAlchemy](https://www.sqlalchemy.org/) ORM for fast database storage in local\n [SQLite](https://sqlite.org/) files, the [NumPy](https://www.numpy.org/) N-dimensional array package, the\n [SciPy](https://scipy.org/scipylib) scientific computing library for the statistics, the\n [uncertainties](https://pythonhosted.org/uncertainties/) package for calculations with error propagation,\n and the [matplotlib](https://matplotlib.org/) 2D plotting library for some nice plots of\n data distributions.\n- And the full django framework itself was used to develop the\n [LymPHOS2](https://www.lymphos.org) web application. Which also uses the matplotlib library\n to dynamically generate the mass spectra images.\n\nThe final result is the `LymPHOS2 `_ web-oriented database, that\nnowadays (2017) contains 131.908 mass spectra, 15.566 phosphorylation\nsites from 8.273 unique phospho-peptides and 4.937 proteins (which\nrepresent a 45-fold increase over the original LymPHOS database of\n2009); aside from the new quantitative data for 1.975 of the identified\nphospho-peptides, which was not present in the previous version of\nLymPHOS.\n\n**Repositories and Presentation Slides:**\n\n- Bitbucket code repositories: https://bitbucket.org/lp-csic-uab/\n- Presentation Slides (.ODP, .PDF and .PPTX):\n https://bitbucket.org/lp-csic-uab/lymphosdocs/downloads/\n\n**Credits:**\n\nThe exposed work has been carried out at [LP-CSIC/UAB](https://proteomica.uab.cat) from\n[Catalonia](https://en.wikipedia.org/wiki/Catalonia), part of the `Spanish National Research Council (Consejo\nSuperior de Investigaciones Científicas - CSIC)`_ and of `ProteoRed\n(Proteomics National NetWork Platform)`_.\n\nThe *people* who have participated directly in the current work are:\n\n- **Data analysis, bioinformatics and informatics**: *Joaquin Abian*\n and *Óscar Gallardo*.\n- **Mass Spectrometry, experimental design and implementation**:\n *Montserrat Carrascal*, *Nguyen Tien Dung* and *Oriol Vidal-Cortes*.\n- **Sample preparation**: *Montserrat Carrascal*, *Nguyen Tien Dung*,\n *Oriol Vidal-Cortes* and *Vanessa Casas*.\n- **Past collaborators**: *David Ovelleiro* and *Marina Gay*.\n- **Direction**: *Joaquin Abian*." + links: + - type: slides + url: https://bitbucket.org/lp-csic-uab/lymphosdocs/downloads/ + title_note: 'The Slides list of the pre-Hugo page named it "LympHOS2, Organizing and Sharing Biological Data of the Human Lymphocyte Proteome using Python". The video names it as above.' +- id: prototyping-interactive-dashboards-with-jupyter-notebooks + title: Prototyping Interactive Dashboards with Jupyter Notebooks + speakers: + - camilo-cardona + type: talk + language: en + description: 'In this talk, I describe my experience in using jupyter-dashboards, ipywidgets and other libraries to build basic prototypes of data exploration dashboards for datasets related to Internet traffic and packet-switching networks. We''ll go over various examples on how to build and use the widgets to navigate the data, visualize analysis, and evaluate optimization changes. + + + **Abstract** + + + As python programmers, we often use jupyter notebooks as a platform for reproducible data analysis and publication of results. The jupyter ecosystem is still under-utilized for projects that require interactions from non-coder users, such as explorative dashboards or Business intelligence applications. There are other specialised options for these UI/UX interfaces, but integrating them into the analysis pipeline (e.g. Jupyter) is often rather hard. Preferably, we would be able to prototype these interactive applications without leaving our environment. + + + Jupyter-dashboards, ipywidgets, and other typical pydata libraries provide jupyter with the capabilities to create flexible, and rather powerful interactive elements. This toolset can be used in small projects to create the final facing interface for a limited number of end users. For bigger projects, a more robust UI/UX is normally required to support larger number of simultaneous users. However, the jupyter-dashboard/ipywidgets toolset can still be useful in these cases as an end-to-end prototyping platform, allowing us to get feedback from users at early stages of the project, thus helping us better steer our development. + + + In this talk, I share experiences of using this toolset for different use cases related to analysis of Internet traffic and network engineering. I''ll go over examples of how to build widgets to explore the Internet traffic and other network data, while highlighting some of its characteristics. Furthermore, I''ll describe some optimisations performed by network engineers on their traffic, such as load balancing, and how the tools can be used to evaluate them.' + links: + - type: slides + url: https://github.com/jccardonar/pydata_bcn_presentation + title_note: 'The Slides list of the pre-Hugo page named it "Prototyping Interactive Dashboards with Jupyter Notebooks: Examples from Network Engineering". The video names it as above.' +- id: blockchain-and-smart-contracts-explained-and-simplified + title: Blockchain and smart contracts explained (and simplified) + speakers: + - guillem-borrell-nogueras + type: talk + language: en + description: 'Blockchain is the next big thing that will revolutionize everything, but no one knows how. The same can be said about smart contracts. Bitcoin and Ethereum are great technologies, but too complex for most cases. This talk will explain why smart contracts are hard, and why they don''t need to be. Finally, a simple ledger for smart contracts in python (pyledger) will be presented. + + + **Abstract** + + + Smart contracts are an old and simple concept. They are just computer programs that facilitate the negotiation and settlement of contracts by several parties. Their goal is to lower the transaction latency and cost associated with human middlemen. The blockchain technology brought the possibility to sanction contracts when peers do not trust each other, which is necessary for applications like virtual currencies. However, due to the CAP theorem and the cost of the Byzantine consensus, their performance tends to be quite bad. + + + Current smart contract platforms such as Ethereum are general (one can issue any kind of contract), distributed (an updated copy is present at all the nodes within the same network), shared (an arbitrary amount of contracts are served within the same infrastructure) and secure (there is no way to tamper with the stored data). All those properties are undeniably good, but the consequence of keeping all those promises is that the infrastructure is exceedingly complex. Such an extense architecture does not add any functionality to a smart contract, it makes it trustworthy. + + + If one understands the raw concepts behind the Blockchain consensus, and we are willing to sacrifice some of the properties mentioned earlier, one can design and implement a simple ledger for smart contracts like pyledger (pyledger.readthedocs.io). Pyledger was designed as a platform for fast prototyping of smart contracts, and for experimentation, but in some particular cases can be good enough to be used in real-world cases. + + + Finally... Fun time! All the concepts will be exemplified with a Q&A contest implemented as a smart contract where all attendants can play.' +- id: how-to-map-a-protein-structure-into-a-network-graph-to + title: How to map a protein structure into a network graph to understand protein folding + speakers: + - massimo-domenico-sammito + type: talk + language: en + description: 'In all living systems any biological function is carried out by the interactions of proteins. The specific function of a protein is determined by its own 3d shape that can be modeled in a list of single atom coordinates derived from experimental analysis. In our lab we use python to process the information of hundred thousands structures already known to predict common patterns in protein folding. + + + **Abstract** + + + From DNA, the genetic code is translated into proteins being these macro molecular structures in charge to execute specific cellular functions. All proteins are composed by the combination of the same 20 amino acids, indeed, it is the 3D shape and detailed structure that differentiate a protein from another and so their functions. Determining protein structure is fundamental to understand their biological function; modify and alter their structures is the way in which drugs can block or activate a protein activity and doing so preventing or treating diseases. In our lab we are understanding protein and DNA structures to the level of atomic resolution contributing to the biomedical research. We process with python the information of hundred thousands 3D coordinate structures already known and predict patterns that can be used to determine structure of unknown proteins. To achieve this objective, proteins are first reduced to a series of specific 3D vectors (Characteristic Vectors [#]_) and then the geometrical relationships among them are extracted. We make use of biopython and python-igraph libraries to model each structure vectors in a network graph and we use supervised and unsupervised learning to classify and predict structure features. Python-igraph is a wrapper to a C code implementation of a set of graph algorithms of classical use in network analysis. + + + .. [#] Sammito M1, Millán C, Rodríguez DD, de Ilarduya IM, Meindl K, De Marino I, Petrillo G, Buey RM, de Pereda JM, Zeth K, Sheldrick GM, Usón I. Exploiting tertiary structure through local folds for crystallographic phasing. Nat Methods. 2013 Nov;10(11):1099-101. doi: 10.1038/nmeth.2644. Epub 2013 Sep 15.' +- id: python-for-visualization-of-hpc-applications + title: Python for visualization of HPC applications + speakers: + - miguel-zavala-ake + type: talk + language: en + description: This work describes the usage of python in application that makes use of high performance application (HPC). Such applications comprise examples as computational fluid dynamics, where the analysis of large data bases is necessary in order to extract useful information. On the other hand, a common way used in the analysis of data is the visualization. It can be done by libraries as matplotlib or pandas, however more sophisticated 3D visualization can also be performed though vtk and mpi4py libraries, or even though Blender of 3d Max. The two latter case enable the use of high quality rendering. +- id: data-science-for-lazy-people-genetics-will-work-for-you + title: Data science for lazy people... genetics will work for you! + speakers: + - diego-hueltes + type: talk + language: en + description: 'Data science is fun... right? Data cleaning, feature selection, feature preprocessing, feature construction, model selection, parameter optimization, model validation... oh wait... are you sure? What about automating 80% of the work using genetic algorithms that can make better choices than you? TPOT is a tool that automatically creates and optimizes machine learning pipelines. + + + **Abstract** + + + We love Data Science, but sometimes we have to do some manual and repetitive work before starting with the interesting and fun parts, but that will change. TPOT is an open source tool built on top of scikit-learn for creating and optimizing machine learning pipelines. It can be considered a data science assistant. The library will automate from feature selection to parameter optimization, it is also able to do preprocessing or construct new features from existing ones. TPOT tests a huge number of pipelines to provide you with the optimal one, this work is done with genetic algorithms. It is easy to use, has a familiar syntax if you have used Pandas or scikit-learn, and it''s very powerful. Let genetics work for you!' + links: + - type: slides + url: https://slides.com/j-diegohueltesvega/data-science-lazy-people#/ +- id: marketing-data-science + title: Marketing Data Science + speakers: + - joaquin-pais + type: talk + language: en + description: 'Marketing Data Science: how digital marketing needs data science to survive. + + + **Abstract** + + + Digital Marketing is changing the way corporations and brands communicates with customers. The investments in Digital Marketing are skyrocketing around the world in a multi-billion industry. + + + But consumers and customers (specially millenials) does not trust advertising. Different approaches are being made by corporations like Inbound Marketing Strategies. My presentation is about how Digital Marketing needs Data Science in order to better understand the customer needs and generate new niches of interest for companies. Companies investing in Digital Marketing should take a close look at Data Science Platforms like Python in order to better gather inisghts, create segments and personalice a customer experience. + + + I will provide some short examples about how we are using python jupyter notebook environment in order to gain inisghts from customers using IBM Watson API, generating new segmentation and customer experiences.' +- id: using-network-community-clustering-algorithms-to-aid + title: Using network community clustering algorithms to aid determination of protein structures + speakers: + - claudia-millan + type: talk + language: en + description: 'How can you best exploit the information on the protein structures that we already know in order to solve the (many more) that we don''t know? That''s the question we try to solve in our group and this talk will show our use of community clustering on the use case of aiding protein structure solution. + + + **Abstract** + + + The study of proteins is extremely relevant to many fields, ranging from medicine to industrial processes. If a cell was a factory, proteins would be the workers, performing very specific tasks in a production chain, in which a failure at any of the steps might affect the others. In order to really understand the function of proteins, there are a number of biochemical techniques that we can apply, but to get a really accurate description of their mechanisms we need to have information up to their atomic level. Proteins are composed by different combinations of 20 amino acids which form chains and result in an intricate and functional structure. We know the final shape of the protein is dependent from its sequence but we can''t (currently) predict the outcome of a given sequence, so we need experimental techniques to obtain this information. We can''t directly look a protein with a microscope and see its three-dimensional atomic arrangement. There are biophysical techniques that allow us to get low-resolution shapes or surfaces of them, but the only current method that provides atomic detail is x-ray diffraction. In contrast to microscopy, were after illuminating your sample you can, with the appropriate lenses, transform back your reflected rays in an image, in x-ray diffraction we only get the Fourier transform of our protein''s structure, that is, its diffraction pattern, but we lose the phase information from the diffracted rays. This problem, known as the phase problem, is an issue in structure solution, because, compared to the intensities of the diffraction pattern, phases provide much more information about our protein''s structure. Phases can be computed from a coordinates model, so, if there is a structure of a protein that is expected to be similar (in terms of their coordinates) to an unknown one, it can be used to provide initial estimates of the phases and then improve them until the problem structure is solved. + + + Proteins do not adopt random shapes. There are forces that act on them and, according to the chemical properties of the amino acids and the context they have around, they will arrange in particular forms. The first level of structure formed is what we call secondary structure, which is formed of alpha helices and beta strands. These are very general and are present in all kind of proteins. As letters in different books, which are general if looked at independently but can acquire a quite different meaning in ''El Quijote'' than in ''50 Shades of Grey'', these structure fragments alone have a different meaning than when set in a context with other structure elements. Yet, even combinations of a few elements can still be general and frequent, and have a sense, such as the phrase ''Once upon a time'' in so many tales. In the protein case, particular small combinations of alpha helices and beta strands should also appear more frequently and can be studied on their different contexts. In a way, we could say that, protein structures, from a top down view, look quite different between them, but from a bottom up one, when we go to small pieces, they look much more similar. + + + In our group, we try to exploit these properties of protein structures for solving two types of problems. One is a search problem, consisting in understanding which is the best way in which to break down a larger model of a protein similar to an unknown one in order to refine it and get the correct phases and solve the structure. The other one is more of a prediction problem, in which we want to find structural units in the database of solved structures in order to help us interpret them and extract new information from this vast amount of data. In order to solve both problems we need a numerical description of our system than can help us describing its geometrical features in an accurate way. We have developed a description of such secondary structure fragments based on what we call characteristic vectors, that we also employ to represent the relations between such elements. This description can be implemented in a network graph that allows to use community clustering algorithms on it in order to evaluate simultaneously all the relations between the elements of the structure and find its communities. + + + From the technical point of view, the language we use for our development is Python, and the tool in which our graphs are implemented is python-igraph. There are a number of community clustering algorithms available and deciding which is the best for our case and which metrics to use to describe our structures has been an interesting process that we want to share with you. In this talk I will explain our research and development on this topic and I will link the general descriptions to our current and successful use case, possibly leaving open questions on what can we do more!' + links: + - type: slides + url: https://drive.google.com/file/d/0Bzli2ZOV2beTd01ZdHBkWHc5b2M/view +- id: security-for-data-scientists + title: Security for Data Scientists + speakers: + - david-arcos + type: keynote + language: en + description: 'Handling confidential data attracts unwanted attention from hostile attackers. + + + We will go over the basic concepts of security threats, show many examples of real attacks, and focus on how to defend ourselves and secure our data. + + + Keep yourself safe! + + + **Abstract** + + + Main topics: + + + * Myths + + * Why it''s important to be safe + + * Authentication & Password Managers + + * Phishing & 2FA + + * MITM & Encryption + + * Internet tracking & Ad-blockers + + * Internet Of Things + + * Physical Security + + * More Resources' + links: + - type: slides + url: https://www.slideshare.net/DZPM/security-for-data-scientists +- id: an-introduction-to-the-tidyverse + title: An introduction to the tidyverse + speakers: + - jorge-cimentada + type: talk + links: + - type: slides + url: https://github.com/cimentadaj/PyData_2017 +- id: introduction-to-data-analysis-with-pandas + title: Introduction to data analysis with Pandas + speakers: + - eduard-goma + type: talk + links: + - type: slides + url: https://github.com/eduardgoma/pandas-workshop +- id: social-network-analysis-with-python-and-networkx + title: Social Network Analysis with Python and NetworkX + speakers: + - jordi-torrents + type: talk + links: + - type: slides + url: https://github.com/jtorrents/pydata_bcn_NetworkX --- -The [PyData 2017 - Barcelona edition](https://pydata.org/barcelona2017/) took place from May 19th to 21th at [ESADE](https://www.esade.edu/homesite/esp/esadeforum). - -## Media - -You can see all the [photos](https://www.flickr.com/photos/pydata/sets/72157684439580266/) and [videos](https://www.youtube.com/playlist?list=PLGVZCDnMOq0oieXy92cJBwSirA3G2MCU1) from the event. - -## Slides - -This is the list of the slides talks and workshops you can find from the event: - -1. [A Beginners Guide to Weather & Climate Data](https://www.slideshare.net/MargrietGroenendijk/pydata-barcelona-weather-and-climate-data) by Margriet Groenendijk -1. [An introduction to the tidyverse](https://github.com/cimentadaj/PyData_2017) by Jorge Cimentada -1. [Analyzing code contributions to the CPython project using NetworkX and Matplotlib](https://github.com/jtorrents/thesis/blob/master/presentations/pydata_bcn/cpython_code_contributions.pdf) by Jordi Torrents -1. [Data science for lazy people... genetics will work for you!](https://slides.com/j-diegohueltesvega/data-science-lazy-people#/) by Diego Hueltes -1. [DeepCare Chatbot - Generating answers to customers using a hybrid approach of Deep Learning and NLP](https://www.slideshare.net/PascalvanKooten/deepcare-chatbot-generating-answers-to-customers-using-a-hybrid-approach-of-deep-learning-and-nlp) by Pascal van Kooten -1. [Guillotina - An Async REST Resource DB to manage millions of objects](https://www.slideshare.net/bloodbare/guillotina-76266421) by Ramon Navarro Bosch -1. [Happyness inside a job: a social network analysis](https://github.com/Guillem-db/Happiness-inside-a-job-PyDataBcn17) by Guillem Duran Ballester -1. [Increasing the trading prediction by mining aggregated human texting messages](https://drive.google.com/open?id=0B19Xo1zu3JtgZmVDaWVyTk1uN3M) by Yang Liu -1. [Introduction to data analysis with Pandas](https://github.com/eduardgoma/pandas-workshop) by Eduard Goma -1. [LympHOS2, Organizing and Sharing Biological Data of the Human Lymphocyte Proteome using Python](https://bitbucket.org/lp-csic-uab/lymphosdocs/downloads/) by Óscar Gallardo Román -1. [Neuroscience Lab, a tour through the eyes of a pythonista](https://www.slideshare.net/JavierMartinezAlcant/neuroscience-lab-a-tour-through-the-eyes-of-a-pythonista-pydata-barcelona2017) by Javier Martínez Alcántara -1. [Prototyping Interactive Dashboards with Jupyter Notebooks: Examples from Network Engineering](https://github.com/jccardonar/pydata_bcn_presentation) by Camilo Cardona -1. [Security for data scientists](https://www.slideshare.net/DZPM/security-for-data-scientists) by David Arcos -1. [Social Network Analysis with Python and NetworkX](https://github.com/jtorrents/pydata_bcn_NetworkX) by Jordi Torrents -1. [Squeeze (gently) your data](https://speakerdeck.com/francescalted/squeeze-gently-your-big-data) by Francesc Alted -1. [TensorFlow Wide & Deep: Advanced Classification the easy way](https://storage.googleapis.com/yufengg-slides/pydataBCNslides.pdf) by Yufeng Guo -1. [Using network community clustering algorithms to aid determination of protein structures](https://drive.google.com/file/d/0Bzli2ZOV2beTd01ZdHBkWHc5b2M/view) by Claudia Millán +The [PyData 2017 - Barcelona edition](https://pydata.org/barcelona2017/) took place from May 19th to 21th at [ESADE](https://www.esade.edu/homesite/esp/esadeforum). The talks below link to the page of each one, with its video and its slides. The event also published an album of [photos](https://www.flickr.com/photos/pydata/sets/72157684439580266/) and a playlist of its [videos](https://www.youtube.com/playlist?list=PLGVZCDnMOq0oieXy92cJBwSirA3G2MCU1). diff --git a/content/events/pydatabcn/pydatabcn_2023.md b/content/events/pydatabcn/pydatabcn_2023.md index 7e1b23902..9fb60105b 100644 --- a/content/events/pydatabcn/pydatabcn_2023.md +++ b/content/events/pydatabcn/pydatabcn_2023.md @@ -1,6 +1,10 @@ --- title: "PyDataBCN (2023)" year: 2023 +# The day of this edition, from the Meetup export, which records it per event. +date: 2023-06-10 +# The venue of this edition, from the Meetup export, which records it per event. +venue: "Canòdrom" description: "The annual gathering for Pythonists in love with data!" menu: main: @@ -21,14 +25,10 @@ free_text_sections: 26th May,10AM: Early registration open for speakers, sponsors and PyLadiesBCN members
29th May, 9AM: General registration open through Eventbrite
10th June: PyDataBCN 2023" - - title: Call for Sponsors - id: call_for_sponsors - content: "

Attention all potential sponsors! PyDataBCN is an exciting new event that brings together the Data Science and Data Engineering community working with Python in Barcelona. This event provides a unique opportunity for sponsors to showcase their products and services, connect with industry experts and thought leaders, and demonstrate their commitment to the data science and engineering community.

As a sponsor of PyDataBCN, you will be able to reach a diverse and engaged audience of data scientists, engineers, and enthusiasts. Our sponsorship packages are tailored to meet the needs of different organizations and budgets. We offer various sponsorship levels that provide a range of benefits, including branding opportunities and speaking slots.

In addition to the benefits of sponsorship, your support will also help us make PyDataBCN a huge success. As a non-profit event, we rely on the generosity of our sponsors to cover the costs of organizing the event and ensure that it is accessible to everyone in the data science and engineering community.

Don't miss this unique opportunity to showcase your brand and support the data science and engineering community in Barcelona. Contact us today at pydatabcn2023@googlegroups.com to learn more about our sponsorship packages and how you can get involved in PyDataBCN.

" - title: Registration id: registration content: "General registration will open on Monday 29th of May, at 9AM through Eventbrite." -sponsors_text: "Would you like to sponsor this event? Please take a look at our [Call for Sponsors](#call_for_sponsors)" sponsor_levels: - sponsors_per_line: 2 @@ -90,7 +90,7 @@ people_sections: spansDuration: 15 numTracks: 4 -eventTimes: [9:00, 9:15, 9:30, 9:45, 10:00, 10:15, 10:30, 10:45, 11:00, 11:15, 11:30, 11:45, 12:00, 12:15, 12:30, 12:45, 13:00, 13:15, 13:30, 13:45, 14:00, 14:15, 14:30, 14:45, 15:00, 15:15, 15:30, 15:45, 16:00, 16:15, 16:30, 16:45, 17:00, 17:15, 17:30, 17:45] +eventTimes: ["9:00", "9:15", "9:30", "9:45", "10:00", "10:15", "10:30", "10:45", "11:00", "11:15", "11:30", "11:45", "12:00", "12:15", "12:30", "12:45", "13:00", "13:15", "13:30", "13:45", "14:00", "14:15", "14:30", "14:45", "15:00", "15:15", "15:30", "15:45", "16:00", "16:15", "16:30", "16:45", "17:00", "17:15", "17:30", "17:45"] legend: - type: workshop - type: talk @@ -100,253 +100,269 @@ legend: - level: advanced - separator: true - type: sponsor -events: - - start_time_slot: 9:00 - end_time_slot: 9:15 - track_length: 4 - color: blue - title: "Registration & Welcome" - speaker: "PyDataBCN Organising Committee" - type: group - location: Open-air terrace - class: middle - - speaker: "Juan Luis Cano Rodríguez" - title: "Convierte tus notebooks de Jupyter en código mantenible con Kedro" - description: "Los notebooks han sido fundamentales para el surgimiento de la ciencia de datos como campo, ya que brindan una interfaz fácil de usar, ofrecen un feedback rápido, y constituyen tanto un entorno de desarrollo como un formato de intercambio. Sin embargo, también se reconoce ampliamente que a menudo plantean problemas de reproducibilidad y mantenibilidad: el 90 % de los notebooks de Jupyter publicados no indican explícitamente las dependencias de los paquetes (Wang et al, 2021), y el 96 % de ellos contener errores o estado oculto que impidió obtener los mismos resultados después de volver a ejecutar (Pimentel et al, 2019). Se han propuesto varias herramientas y enfoques para mitigar los problemas de los notebooks para datos de producción. ciencia. En este taller, los autores proponen un flujo de trabajo que consiste en la refactorización iterativa de notebooks de Jupyter: mediante la extracción incremental de referencias de datos y lógica de negocio en módulos reutilizables de Python, los participantes serán capaces de explotar las capacidades dinámicas de los notebooks manteniendo su complejidad bajo control. Estos módulos de Python harán uso de Kedro, un framework Python para crear pipelines de datos reproducibles, mantenibles y modulares." - start_time_slot: 9:30 - end_time_slot: 10:45 - track_length: 1 - color: orange - python_level: intermediate - topic_level: beginner - type: workshop - topic: "(Maintainable) Data Science" - location: Sala d'actes Ada Lovelace - requirements: "Experiencia con Python, conocimiento básico de Jupyter y pandas" - language: "Spanish" - title_lang: Spanish - - speaker: "Amalia Vradi" - title: "Jupyter Notebooks 101" - description: "This will be an interactive workshop on Jupyter Notebooks, the popular web application that enables you to create and share documents that contain live code, equations, visualizations and narrative text. In this beginner-friendly session, you'll discover what Jupyter Notebooks are and what you can do with them. We'll also introduce you to Google Colab and Kaggle, two platforms that offer free, cloud-based versions of Notebooks. You'll get hands-on experience with installing and using them, as well as experimenting with the features offered by the platforms. Bring your laptop and your curiosity and learn how to take your data science projects to the next level using Jupyter Notebooks!" - start_time_slot: 9:30 - end_time_slot: 10:45 - track_length: 1 - color: grey - python_level: beginner - topic_level: beginner - type: workshop - topic: "Data Analysis" - location: Aula Hedy Lamarr - requirements: "" - language: "English" - - speaker: "Fiorella Piriz Sapio" - title: "Data orchestration with Airflow" - description: "Introduction to the Python-based data orchestration tool, Airflow. We will learn about airflow components and create the first Dags using some of its main operators and connectors. Finally, we will learn how to connect Airflow with Kubernetes and Spark." - start_time_slot: 9:30 - end_time_slot: 10:45 - track_length: 1 - color: grey - python_level: intermediate - topic_level: intermediate - type: workshop - topic: "Big Data Analysis" - location: Sala Margarita Salas - requirements: "Python, Airflow > 2.0.0 (can be easily installed with Pypi), optional: S3, Spark, Kubernetes. Please see: https://github.com/Fiorellaps/airflow_workshop_pybcn/tree/main" - language: "Spanish" - - speaker: "Ricardo Ander-Egg Aguilar" - title: "De los datos al modelo en producción" - description: "Comenzaremos con un conjunto de datos de imágenes sin procesar, entrenaremos un modelo de aprendizaje automático usando fastai/PyTorch y crearemos una aplicación web con FastAPI para permitir que los usuarios interactúen con el modelo." - start_time_slot: 9:30 - end_time_slot: 10:45 - track_length: 1 - color: purple - python_level: intermediate - topic_level: beginner - type: workshop - topic: "Machine Learning" - location: Aula Hipàtia d'Alexandria - requirements: "Solid knowledge of Python and some basic knowledge of web development (HTML). Virtual environment and editor already set up (https://github.com/polyrand/pydatabcn-imgapp-workshop1). Optional: Docker." - language: "Spanish" - title_lang: Spanish +# The rooms of this edition, in the order the grid first names them. A room is +# a record with an id because the colour of a block now comes from it: the +# template gives every room of an event one colour of the agenda palette and +# keeps it for the whole day. See partials/agenda_entry.html. +rooms: + - id: open-air-terrace + name: "Open-air terrace" + - id: sala-dactes-ada-lovelace + name: "Sala d'actes Ada Lovelace" + - id: aula-hedy-lamarr + name: "Aula Hedy Lamarr" + - id: sala-margarita-salas + name: "Sala Margarita Salas" + - id: aula-hipatia-dalexandria + name: "Aula Hipàtia d'Alexandria" - - start_time_slot: 11:00 - end_time_slot: 11:15 - track_length: 4 - color: blue - title: "Coffee break" - type: coffee - location: Open-air terrace - class: middle +# The talks of this edition: what was said, by whom, in which language. A talk +# carries no time and no room, because it is the content and not the slot. +# agenda below is what places it on the grid, and one talk can take more than +# one slot. The id is derived from the title and is the anchor a photo of the +# gallery links to, so it must not change. +talks: + - id: convierte-tus-notebooks-de-jupyter-en-codigo-mantenible-con + title: "Convierte tus notebooks de Jupyter en código mantenible con Kedro" + title_lang: Spanish + speakers: [juan-luis-cano-rodriguez] + type: workshop + language: es + topic: "(Maintainable) Data Science" + duration_minutes: 75 + description: "Los notebooks han sido fundamentales para el surgimiento de la ciencia de datos como campo, ya que brindan una interfaz fácil de usar, ofrecen un feedback rápido, y constituyen tanto un entorno de desarrollo como un formato de intercambio. Sin embargo, también se reconoce ampliamente que a menudo plantean problemas de reproducibilidad y mantenibilidad: el 90 % de los notebooks de Jupyter publicados no indican explícitamente las dependencias de los paquetes (Wang et al, 2021), y el 96 % de ellos contener errores o estado oculto que impidió obtener los mismos resultados después de volver a ejecutar (Pimentel et al, 2019). Se han propuesto varias herramientas y enfoques para mitigar los problemas de los notebooks para datos de producción. ciencia. En este taller, los autores proponen un flujo de trabajo que consiste en la refactorización iterativa de notebooks de Jupyter: mediante la extracción incremental de referencias de datos y lógica de negocio en módulos reutilizables de Python, los participantes serán capaces de explotar las capacidades dinámicas de los notebooks manteniendo su complejidad bajo control. Estos módulos de Python harán uso de Kedro, un framework Python para crear pipelines de datos reproducibles, mantenibles y modulares." + - id: jupyter-notebooks-101 + title: "Jupyter Notebooks 101" + speakers: [amalia-vradi] + type: workshop + language: en + topic: "Data Analysis" + duration_minutes: 75 + description: "This will be an interactive workshop on Jupyter Notebooks, the popular web application that enables you to create and share documents that contain live code, equations, visualizations and narrative text. In this beginner-friendly session, you'll discover what Jupyter Notebooks are and what you can do with them. We'll also introduce you to Google Colab and Kaggle, two platforms that offer free, cloud-based versions of Notebooks. You'll get hands-on experience with installing and using them, as well as experimenting with the features offered by the platforms. Bring your laptop and your curiosity and learn how to take your data science projects to the next level using Jupyter Notebooks!" + - id: data-orchestration-with-airflow + title: "Data orchestration with Airflow" + speakers: [fiorella-piriz-sapio] + type: workshop + language: es + topic: "Big Data Analysis" + duration_minutes: 75 + description: "Introduction to the Python-based data orchestration tool, Airflow. We will learn about airflow components and create the first Dags using some of its main operators and connectors. Finally, we will learn how to connect Airflow with Kubernetes and Spark." + - id: de-los-datos-al-modelo-en-produccion + title: "De los datos al modelo en producción" + title_lang: Spanish + speakers: [ricardo-ander-egg-aguilar] + type: workshop + language: es + topic: "Machine Learning" + duration_minutes: 75 + description: "Comenzaremos con un conjunto de datos de imágenes sin procesar, entrenaremos un modelo de aprendizaje automático usando fastai/PyTorch y crearemos una aplicación web con FastAPI para permitir que los usuarios interactúen con el modelo." + - id: data-analytics-with-python + title: "Data Analytics with Python" + speakers: [juan-bernardo-lince] + type: workshop + language: en + topic: "Data Analysis" + duration_minutes: 75 + description: "Introduction to Data Analytics with Python and Pandas, building a parallel with Excel on how to create columns, summarize information and retrieve quick statistics. Questions, such as \"how can we process data with code?\" and \"which issues should I be addressing with data?\" will be explored, through guided examples on a dataset, to answer business inquiries.

In the second part, examples on Pandas built-in quick plots will be provided. Additionally, we will use Seaborn to create charts and other visual information that enable us to show the answers from the analysis, in a clear and objective manner." + - id: train-your-own-image-classification-model-in-minutes + title: "Train Your Own Image Classification Model in Minutes" + speakers: [amalia-vradi] + type: workshop + language: en + topic: "Deep Learning, Artificial Intelligence" + duration_minutes: 75 + description: "Learn how to train your own image classification model with fastai in this hands-on workshop. You'll discover how easy it is to build a custom model to classify any type of image you want, without needing any special hardware or software. We'll use Google Colab and Kaggle's free GPU instances to train our models, so all you need is your laptop and a curious mindset. Join us to explore the exciting world of computer vision!" + - id: machine-learning-robustness-and-monitoring + title: "Machine Learning Robustness and Monitoring" + speakers: [daniel-sanchez-santolaya] + type: workshop + language: en + topic: "Machine Learning Robustness and Monitoring" + duration_minutes: 75 + description: "Mercury is a python library used in BBVA in data science projects. Recently, we open-sourced some parts of the library to the python and data science community.

In this workshop, we will introduce mercury.robust and mercury.monitoring. With mercury.robust we can perform dataset and model testing to detect undesirable conditions such as high level of noise in the labels, label leaking in the features of the dataset, or model excessive sensitivity to drift in certain features. Mercury.monitoring includes components that can help us detect data drift in our inference data and estimate the performance of our model when real labels are not available yet.

During the workshop we will use components of these libraries during different phases of a machine learning project: dataset generation, model training, and model inference.

The workshop is intended for data scientists and machine learning engineers interested in tools that can help improve the robustness and performance degradation detection of their machine learning models." + - id: indices-invertidos-desde-cero + title: "Índices invertidos desde cero" + title_lang: Spanish + speakers: [ricardo-ander-egg-aguilar] + type: workshop + language: es + topic: "Data Engineering" + duration_minutes: 75 + description: "Muchas bases de datos utilizan índices invertidos para permitir realizar búsquedas de texto completo (full-text search). Veremos cómo funciona un índice invertido y crearemos uno desde cero. También aprenderemos a clasificar los resultados de una búsqueda implementando TF-IDF." + - id: fine-tuning-of-llm-models-for-text-processing + title: "Fine-tuning of LLM models for text processing" + speakers: [ruben-afonso] + type: workshop + language: en + topic: "Artificial Intelligence" + duration_minutes: 75 + description: "In this workshop we will review how to leverage your Python skills to reuse and fine-tune some of the latest Generative LLM (Large Language Models) available and strategies to tackle specific use cases such as text summarisation and question-answering" + - id: foundations-of-machine-learning-exploring-use-cases-and + title: "Foundations of Machine Learning: exploring use cases and typical tasks" + speakers: [nikita-polovinkin] + type: workshop + language: en + topic: "Machine Learning" + duration_minutes: 75 + description: "In this workshop you will learn the logic and foundations behind Machine Learning, to better understand how it can be used and where not to. The Different use cases of Machine Learning, and practical exercises of the most typical Machine Learning tasks: regression and classification. Finally how to predict the gender pay gap based on some features such as job descriptions, age and other demographics." + - id: ask-your-data-build-a-full-pipeline-to-get-generative + title: "Ask your data! Build a full pipeline to get generative answers from a text dataset" + speakers: [carmen-iniesta-lopez] + type: workshop + language: en + topic: "Machine Learning, NLP, Semantic search, Generative AI" + duration_minutes: 75 + description: "The goal of this workshop is to teach attendees how to build a full pipeline to generate sentence embeddings from a given dataset, index them in a vector database for semantic search, and integrate search results as context for a LLM. " + - id: com-visualitzar-incertesa-i-models-probabilistics + title: "Com visualitzar incertesa i models probabilistics" + title_lang: Catalan + speakers: [oriol-abril-pla] + type: workshop + language: ca + topic: "Data Visualization" + duration_minutes: 75 + description: "Aprèn a visualitzar paràmetres i prediccions de models probabilístics emprant histogrames, estimadors nuclears de densitat (KDE), gràfics de punts per quantils i funcions de distribució empíriques" + - id: lightning-talks-session + title: "Lightning talks session" + speakers: [adrian-garcia-riber, albert-pujol-torras, alvaro-duran-barata, diego-quintana, edgar-sarria-tenes, miquel-sarrias, monica-dominguez, rajdeep-pal, ricardo-ander-egg-aguilar, sergi-baena-miret, thais-ruiz-de-alda] + type: talk + language: [en, es] + topic: "Multiple topics" + duration_minutes: 75 + description: "

How Data Scientists Can Be More Productive with the Power of Static Typing - Alvaro Duran
Data scientists frequently find themselves in situations where they need to verify that some intermediate step in a data pipeline works as expected, and tools such as Jupiter notebooks, where each step is explicitly shown to the user, are very useful at that. However, it can become quite cumbersome and time-consuming as the data pipeline grows more complex.
That's where static typing comes in. By using types in our code, we can introduce our data into a structured pipeline and catch errors early on, before they have the chance to cause any real problems. This is particularly useful when working with large datasets, where a small error can have a significant impact on our results.
But what exactly do we mean by 'types'? Essentially, types are a way of specifying the kind of data that a variable or function will handle. For example, we might specify that a certain variable should only contain integers, or that a certain function should only accept strings.
By using types, we can catch errors early on in the development process, rather than having to wait until runtime to discover them. This can save us a lot of time and effort in the long run, as we can catch errors before they have a chance to cause any real damage.
Now, you might be thinking, 'but doesn't introducing types make our code more complex?' And the answer is, not necessarily. In fact, Python has built-in support for types that makes it easy to incorporate them into our code.
Of course, that is just the first part of the puzzle. Good type systems are analogous to test suites: they require some effort, but the payoff is immense.
This talk will cover the very basics of how data scientists can benefit from using types, not only on their production code, but even on crude prototypes, giving some peace of mind by making illegal states unrepresentable.

Astronomical data Sonification - Adrián García Riber
The current development of massive astronomical archives and virtual observatory technology (VO) offers a wide range of data products and services that can be explored with a personal computer through interoperable technology. The use of sonification and musification in multimodal displays for the exploration of astronomical data offers an additional domain (complementary to visualization), that allows researchers to get immersed in their case studies, navigating the massive downloads of big data generated by space telescopes, and that makes stellar catalogs and databases more accessible for blind-visually impaired (BVI) users. In this talk I would like to introduce the collection of Python and TensorFlow Sonification prototypes developed in my PhD to generate multimodal representations of astronomical data using Deep Learning and Neural Networks.

Python models and alerts within dbt with dbt-fal and novu - Diego Quintana
How to trigger alarms and run python models within dbt with dbt-fal and novu.
dbt is the T in the ELT pipe. Although dbt allows for python model since version 1.3, its support is limited. dbt-fal enables running python models and python code in general within a model. A simple demo will be shown, with a forecasting model is trained as part of a dbt pipeline and an alarm is triggered with novu, an open source notification infrastructure.

Serverless Machine Learning: Streamlining Deployment and Scaling of ML Services - Rajdeep Pal
The topic of deploying machine learning services using a serverless architecture is focused on leveraging cloud computing services to simplify the deployment and scaling of machine learning models. Using a serverless approach, developers can focus on writing code for their ML models without worrying about infrastructure setup and management. The serverless model also provides automatic scaling of resources to meet the demands of incoming requests, reducing the need for manual intervention and ensuring that services remain highly available. This talk would cover the benefits of using a serverless approach to deploy machine learning services and provide practical guidance on how to implement it effectively. It would also explore the challenges and trade-offs involved in using serverless architecture for ML services, such as performance considerations, security, and cost optimisation.

Practical considerations when using chatGPT in production for multilanguage processing - Albert Pujol Torras
We will describe the results of empirical measurements of the behavior of LLMs to automate NLP processes depending on both the language in which the prompt is written, the lenguage of the text to be analyzed as well as some practical considerations to take into account when considering putting in production this type of Models.

International Data Spaces: Implementing the European Strategy on Data - Miquel Sarrias
The International Data Spaces (IDS) initiative aims at cross-sectoral data sovereignty and data interoperability. It sets forth a Reference Architecture Model basing on open standards and contributing to global standards. By specifying data usage constraints, it defines the terms and conditions for the data economy. Data spaces are key to the global, digital economy. The European Commission is defining Europe's path forward into the digital economy of the future. A core element of their vision: international data spaces grounded in European values of trust and the self-determination of data usage by data providers, that we call data sovereignty.

Forecasting in the integral water cycle - Sergi Baena-Miret
Droughts can have severe impacts on water availability, demand, and quality, affecting water allocation, infrastructure planning, and environmental protection. Accurate forecasting of droughts is essential for mitigating their impacts by enabling effective water management strategies. Various techniques such as statistical models, machine learning, and remote sensing are used for drought forecasting in the integral water cycle. However, challenges such as data scarcity, non-stationarity, and uncertainty in climate change projections pose significant challenges for accurate forecasting.

MusicMetaData & algorithmic diversity perrspective - Thais Ruiz de Alda
We want to talk about the current challenge de music industry is facing around metadata and the challenges that including a gender perspective can imply. The talk will cover the story of music metadata and how Digitalfems is challenging the musical descriptive metadata status quo to develop an ADM system that will include gender diversity in a beta testing/lab environment with the support of different institutions such as FECYT, UPC and other relevant stakeholders

Free online Data Apps with Shimoku Library - Edgar Sarria
We will show how to use Shimoku instead of Streamlit to build Data Products in few lines of code

Data Science in Transport Modelling - Monica Dominguez
Transport modelling and traffic simulation have traditionally been branches of Civil Engineering and Applied Mathematics. In this talk, we will present how the field is embracing Data Science and Machine Learning methodologies for data processing, pattern analysis, forecasting and prediction of recurrent and non-recurrent events.

Bundling a Python app in a single file - Ricardo Ander-Egg
Live coding talk. This talk will show how to bundle a Python app and all of its dependencies in a single file. Then we will copy this file to a different machine and see how the script runs without having to deal with Docker or virtual environments.

" - - speaker: "Juan Bernardo Lince" - title: "Data Analytics with Python" - description: "Introduction to Data Analytics with Python and Pandas, building a parallel with Excel on how to create columns, summarize information and retrieve quick statistics. Questions, such as “how can we process data with code?” and “which issues should I be addressing with data?” will be explored, through guided examples on a dataset, to answer business inquiries.

In the second part, examples on Pandas built-in quick plots will be provided. Additionally, we will use Seaborn to create charts and other visual information that enable us to show the answers from the analysis, in a clear and objective manner." - start_time_slot: 11:30 - end_time_slot: 12:45 - track_length: 1 - color: grey - python_level: beginner - topic_level: beginner - type: workshop - topic: "Data Analysis" - location: Sala d'actes Ada Lovelace - requirements: "" - language: "English" - - speaker: "Amalia Vradi" - title: "Train Your Own Image Classification Model in Minutes" - description: "Learn how to train your own image classification model with fastai in this hands-on workshop. You'll discover how easy it is to build a custom model to classify any type of image you want, without needing any special hardware or software. We'll use Google Colab and Kaggle's free GPU instances to train our models, so all you need is your laptop and a curious mindset. Join us to explore the exciting world of computer vision!" - start_time_slot: 11:30 - end_time_slot: 12:45 - track_length: 1 - color: purple - python_level: beginner - topic_level: beginner - type: workshop - topic: "Deep Learning, Artificial Intelligence" - location: Aula Hedy Lamarr - requirements: "A google account (to be able to use Google Colab) or a Kaggle account, for using free GPU instances" - language: "English" - - speaker: "Daniel Sánchez Santolaya" - title: "Machine Learning Robustness and Monitoring" - description: "Mercury is a python library used in BBVA in data science projects. Recently, we open-sourced some parts of the library to the python and data science community.

In this workshop, we will introduce mercury.robust and mercury.monitoring. With mercury.robust we can perform dataset and model testing to detect undesirable conditions such as high level of noise in the labels, label leaking in the features of the dataset, or model excessive sensitivity to drift in certain features. Mercury.monitoring includes components that can help us detect data drift in our inference data and estimate the performance of our model when real labels are not available yet.

During the workshop we will use components of these libraries during different phases of a machine learning project: dataset generation, model training, and model inference.

The workshop is intended for data scientists and machine learning engineers interested in tools that can help improve the robustness and performance degradation detection of their machine learning models." - start_time_slot: 11:30 - end_time_slot: 12:45 - track_length: 1 - color: purple - python_level: intermediate - topic_level: intermediate - type: workshop - topic: "Machine Learning Robustness and Monitoring" - location: Sala Margarita Salas - requirements: "Laptop with python installed (or alternatively laptop with access to Google Colab can be used as well)" - language: "English" - - speaker: "Ricardo Ander-Egg Aguilar" - title: "Índices invertidos desde cero" - description: "Muchas bases de datos utilizan índices invertidos para permitir realizar búsquedas de texto completo (full-text search). Veremos cómo funciona un índice invertido y crearemos uno desde cero. También aprenderemos a clasificar los resultados de una búsqueda implementando TF-IDF." - start_time_slot: 11:30 - end_time_slot: 12:45 - track_length: 1 - color: orange - python_level: intermediate - topic_level: beginner - type: workshop - topic: "Data Engineering" - location: Aula Hipàtia d'Alexandria - requirements: "Conocimiento de elementos de Python como funciones, clases, bucles, comprensiones de listas, generadores, etc. Conocer las estructuras de datos principales de Python (listas, sets, tuples, diccionarios...). Habilidades básicas de procesamiento de texto (manipular cadenas de texto y conocimiento básico de expresiones regulares (regex)). Para el taller solamente utilizaremos la librería estándar de Python. Se recomienda usar Python 3.7 o superior." - language: "Spanish" - title_lang: Spanish +# The grid, one row per slot of the day, in the order it is printed. A slot +# names the talk it holds, or carries its own label and type when it holds +# none: a break, the group photo, the welcome. The level and the requirements +# sit here and not on the talk, because they are what the slot asks of whoever +# walks into it. A start is always quoted: YAML 1.1 reads an unquoted 9:00 as +# the integer 540. +agenda: + - start: "9:00" + credited_as: "PyDataBCN Organising Committee" + track_length: 4 + room: open-air-terrace + type: group + label: "Registration & Welcome" + duration_minutes: 15 + - start: "9:30" + track_length: 1 + room: sala-dactes-ada-lovelace + talk: convierte-tus-notebooks-de-jupyter-en-codigo-mantenible-con + python_level: intermediate + topic_level: beginner + requirements: "Experiencia con Python, conocimiento básico de Jupyter y pandas" + - start: "9:30" + track_length: 1 + room: aula-hedy-lamarr + talk: jupyter-notebooks-101 + python_level: beginner + topic_level: beginner + - start: "9:30" + track_length: 1 + room: sala-margarita-salas + talk: data-orchestration-with-airflow + python_level: intermediate + topic_level: intermediate + requirements: "Python, Airflow > 2.0.0 (can be easily installed with Pypi), optional: S3, Spark, Kubernetes. Please see: https://github.com/Fiorellaps/airflow_workshop_pybcn/tree/main" + - start: "9:30" + track_length: 1 + room: aula-hipatia-dalexandria + talk: de-los-datos-al-modelo-en-produccion + python_level: intermediate + topic_level: beginner + requirements: "Solid knowledge of Python and some basic knowledge of web development (HTML). Virtual environment and editor already set up (https://github.com/polyrand/pydatabcn-imgapp-workshop1). Optional: Docker." + - start: "11:00" + track_length: 4 + room: open-air-terrace + type: coffee + label: "Coffee break" + duration_minutes: 15 + - start: "11:30" + track_length: 1 + room: sala-dactes-ada-lovelace + talk: data-analytics-with-python + python_level: beginner + topic_level: beginner + - start: "11:30" + track_length: 1 + room: aula-hedy-lamarr + talk: train-your-own-image-classification-model-in-minutes + python_level: beginner + topic_level: beginner + requirements: "A google account (to be able to use Google Colab) or a Kaggle account, for using free GPU instances" + - start: "11:30" + track_length: 1 + room: sala-margarita-salas + talk: machine-learning-robustness-and-monitoring + python_level: intermediate + topic_level: intermediate + requirements: "Laptop with python installed (or alternatively laptop with access to Google Colab can be used as well)" + - start: "11:30" + track_length: 1 + room: aula-hipatia-dalexandria + talk: indices-invertidos-desde-cero + python_level: intermediate + topic_level: beginner + requirements: "Conocimiento de elementos de Python como funciones, clases, bucles, comprensiones de listas, generadores, etc. Conocer las estructuras de datos principales de Python (listas, sets, tuples, diccionarios...). Habilidades básicas de procesamiento de texto (manipular cadenas de texto y conocimiento básico de expresiones regulares (regex)). Para el taller solamente utilizaremos la librería estándar de Python. Se recomienda usar Python 3.7 o superior." + - start: "13:00" + track_length: 4 + room: open-air-terrace + type: photo + label: "Group photo" + duration_minutes: 0 + - start: "13:15" + track_length: 4 + room: open-air-terrace + type: lunch + label: "Lunch break" + duration_minutes: 30 + - start: "14:00" + track_length: 1 + room: sala-dactes-ada-lovelace + talk: fine-tuning-of-llm-models-for-text-processing + python_level: intermediate + topic_level: beginner + requirements: "https://gist.github.com/rubenafo/b91861b37f31d16ee7b8d86e707a9f9f" + - start: "14:00" + track_length: 1 + room: aula-hedy-lamarr + talk: foundations-of-machine-learning-exploring-use-cases-and + python_level: beginner + topic_level: beginner + - start: "14:00" + track_length: 1 + room: sala-margarita-salas + talk: ask-your-data-build-a-full-pipeline-to-get-generative + python_level: intermediate + topic_level: intermediate + requirements: "Intermediate knowledge of Python programming, understanding of natural language processing and semantic search concepts, enthusiasm and willingness to learn and collaborate.
Technical requirements: Laptop with python >= 3.9 installed and HF’s SentenceTransformers. Nucliadb is optional, if not installed we’ll do it together during the workshop. A requirements.txt and more details will be provided prior to the event." + - start: "14:00" + track_length: 1 + room: aula-hipatia-dalexandria + talk: com-visualitzar-incertesa-i-models-probabilistics + python_level: intermediate + topic_level: beginner + requirements: "Cal certa comoditat a l'hora de treballar amb Python, NumPy i Matplotlib. Tots els gràfics seran introduïts abans d'utilitzar-se, però és recomanable tenir coneixements bàsics d'estadística." + - start: "15:30" + track_length: 4 + room: open-air-terrace + type: coffee + label: "Coffee break" + duration_minutes: 15 + - start: "16:00" + track_length: 4 + room: sala-dactes-ada-lovelace + talk: lightning-talks-session + - start: "17:30" + credited_as: "PyDataBCN Organising Committee" + track_length: 4 + room: sala-dactes-ada-lovelace + type: group + label: "Closing session & Kahoot" + duration_minutes: 15 - - start_time_slot: 13:00 - end_time_slot: 13:00 - track_length: 4 - color: blue - title: "Group photo" - type: photo - location: Open-air terrace - class: middle - - - start_time_slot: 13:15 - end_time_slot: 13:45 - track_length: 4 - color: blue - title: "Lunch break" - type: lunch - location: Open-air terrace - class: middle - - - speaker: "Ruben Afonso" - title: "Fine-tuning of LLM models for text processing" - description: "In this workshop we will review how to leverage your Python skills to reuse and fine-tune some of the latest Generative LLM (Large Language Models) available and strategies to tackle specific use cases such as text summarisation and question-answering" - start_time_slot: 14:00 - end_time_slot: 15:15 - track_length: 1 - color: purple - python_level: intermediate - topic_level: beginner - type: workshop - topic: "Artificial Intelligence" - location: Sala d'actes Ada Lovelace - requirements: "https://gist.github.com/rubenafo/b91861b37f31d16ee7b8d86e707a9f9f" - language: "English" - - speaker: "Nikita Polovinkin" - title: "Foundations of Machine Learning: exploring use cases and typical tasks" - description: "In this workshop you will learn the logic and foundations behind Machine Learning, to better understand how it can be used and where not to. The Different use cases of Machine Learning, and practical exercises of the most typical Machine Learning tasks: regression and classification. Finally how to predict the gender pay gap based on some features such as job descriptions, age and other demographics." - start_time_slot: 14:00 - end_time_slot: 15:15 - track_length: 1 - color: purple - python_level: beginner - topic_level: beginner - type: workshop - topic: "Machine Learning" - location: Aula Hedy Lamarr - requirements: "" - language: "English" - - speaker: "Carmen Iniesta López" - title: "Ask your data! Build a full pipeline to get generative answers from a text dataset" - description: "The goal of this workshop is to teach attendees how to build a full pipeline to generate sentence embeddings from a given dataset, index them in a vector database for semantic search, and integrate search results as context for a LLM. " - start_time_slot: 14:00 - end_time_slot: 15:15 - track_length: 1 - color: purple - python_level: intermediate - topic_level: intermediate - type: workshop - location: Sala Margarita Salas - requirements: "Intermediate knowledge of Python programming, understanding of natural language processing and semantic search concepts, enthusiasm and willingness to learn and collaborate.
Technical requirements: Laptop with python >= 3.9 installed and HF’s SentenceTransformers. Nucliadb is optional, if not installed we’ll do it together during the workshop. A requirements.txt and more details will be provided prior to the event." - language: "English" - topic: "Machine Learning, NLP, Semantic search, Generative AI " - - speaker: "Oriol Abril Pla" - title: "Com visualitzar incertesa i models probabilistics" - description: "Aprèn a visualitzar paràmetres i prediccions de models probabilístics emprant histogrames, estimadors nuclears de densitat (KDE), gràfics de punts per quantils i funcions de distribució empíriques" - start_time_slot: 14:00 - end_time_slot: 15:15 - track_length: 1 - color: grey - python_level: intermediate - topic_level: beginner - type: workshop - location: Aula Hipàtia d'Alexandria - requirements: "Cal certa comoditat a l'hora de treballar amb Python, NumPy i Matplotlib. Tots els gràfics seran introduïts abans d'utilitzar-se, però és recomanable tenir coneixements bàsics d'estadística." - language: "Catalan" - title_lang: Catalan - topic: "Data Visualization" - - - start_time_slot: 15:30 - end_time_slot: 15:45 - track_length: 4 - color: blue - title: "Coffee break" - type: coffee - location: Open-air terrace - class: middle - - - speaker: "Adrián García Riber, Albert Pujol Torras, Alvaro Duran Barata, Diego Quintana, Edgar Sarria, Miquel Sàrrias, Monica Dominguez, Rajdeep Pal, Ricardo Ander-Egg Aguilar, Sergi Baena, Thais Ruiz de Alda" - title: "Lightning talks session" - description: "

How Data Scientists Can Be More Productive with the Power of Static Typing - Alvaro Duran
Data scientists frequently find themselves in situations where they need to verify that some intermediate step in a data pipeline works as expected, and tools such as Jupiter notebooks, where each step is explicitly shown to the user, are very useful at that. However, it can become quite cumbersome and time-consuming as the data pipeline grows more complex.
That's where static typing comes in. By using types in our code, we can introduce our data into a structured pipeline and catch errors early on, before they have the chance to cause any real problems. This is particularly useful when working with large datasets, where a small error can have a significant impact on our results.
But what exactly do we mean by 'types'? Essentially, types are a way of specifying the kind of data that a variable or function will handle. For example, we might specify that a certain variable should only contain integers, or that a certain function should only accept strings.
By using types, we can catch errors early on in the development process, rather than having to wait until runtime to discover them. This can save us a lot of time and effort in the long run, as we can catch errors before they have a chance to cause any real damage.
Now, you might be thinking, 'but doesn't introducing types make our code more complex?' And the answer is, not necessarily. In fact, Python has built-in support for types that makes it easy to incorporate them into our code.
Of course, that is just the first part of the puzzle. Good type systems are analogous to test suites: they require some effort, but the payoff is immense.
This talk will cover the very basics of how data scientists can benefit from using types, not only on their production code, but even on crude prototypes, giving some peace of mind by making illegal states unrepresentable.

Astronomical data Sonification - Adrián García Riber
The current development of massive astronomical archives and virtual observatory technology (VO) offers a wide range of data products and services that can be explored with a personal computer through interoperable technology. The use of sonification and musification in multimodal displays for the exploration of astronomical data offers an additional domain (complementary to visualization), that allows researchers to get immersed in their case studies, navigating the massive downloads of big data generated by space telescopes, and that makes stellar catalogs and databases more accessible for blind-visually impaired (BVI) users. In this talk I would like to introduce the collection of Python and TensorFlow Sonification prototypes developed in my PhD to generate multimodal representations of astronomical data using Deep Learning and Neural Networks.

Python models and alerts within dbt with dbt-fal and novu - Diego Quintana
How to trigger alarms and run python models within dbt with dbt-fal and novu.
dbt is the T in the ELT pipe. Although dbt allows for python model since version 1.3, its support is limited. dbt-fal enables running python models and python code in general within a model. A simple demo will be shown, with a forecasting model is trained as part of a dbt pipeline and an alarm is triggered with novu, an open source notification infrastructure.

Serverless Machine Learning: Streamlining Deployment and Scaling of ML Services - Rajdeep Pal
The topic of deploying machine learning services using a serverless architecture is focused on leveraging cloud computing services to simplify the deployment and scaling of machine learning models. Using a serverless approach, developers can focus on writing code for their ML models without worrying about infrastructure setup and management. The serverless model also provides automatic scaling of resources to meet the demands of incoming requests, reducing the need for manual intervention and ensuring that services remain highly available. This talk would cover the benefits of using a serverless approach to deploy machine learning services and provide practical guidance on how to implement it effectively. It would also explore the challenges and trade-offs involved in using serverless architecture for ML services, such as performance considerations, security, and cost optimisation.

Practical considerations when using chatGPT in production for multilanguage processing - Albert Pujol Torras
We will describe the results of empirical measurements of the behavior of LLMs to automate NLP processes depending on both the language in which the prompt is written, the lenguage of the text to be analyzed as well as some practical considerations to take into account when considering putting in production this type of Models.

International Data Spaces: Implementing the European Strategy on Data - Miquel Sarrias
The International Data Spaces (IDS) initiative aims at cross-sectoral data sovereignty and data interoperability. It sets forth a Reference Architecture Model basing on open standards and contributing to global standards. By specifying data usage constraints, it defines the terms and conditions for the data economy. Data spaces are key to the global, digital economy. The European Commission is defining Europe’s path forward into the digital economy of the future. A core element of their vision: international data spaces grounded in European values of trust and the self-determination of data usage by data providers, that we call data sovereignty.

Forecasting in the integral water cycle - Sergi Baena-Miret
Droughts can have severe impacts on water availability, demand, and quality, affecting water allocation, infrastructure planning, and environmental protection. Accurate forecasting of droughts is essential for mitigating their impacts by enabling effective water management strategies. Various techniques such as statistical models, machine learning, and remote sensing are used for drought forecasting in the integral water cycle. However, challenges such as data scarcity, non-stationarity, and uncertainty in climate change projections pose significant challenges for accurate forecasting.

MusicMetaData & algorithmic diversity perrspective - Thais Ruiz de Alda
We want to talk about the current challenge de music industry is facing around metadata and the challenges that including a gender perspective can imply. The talk will cover the story of music metadata and how Digitalfems is challenging the musical descriptive metadata status quo to develop an ADM system that will include gender diversity in a beta testing/lab environment with the support of different institutions such as FECYT, UPC and other relevant stakeholders

Free online Data Apps with Shimoku Library - Edgar Sarria
We will show how to use Shimoku instead of Streamlit to build Data Products in few lines of code

Data Science in Transport Modelling - Monica Dominguez
Transport modelling and traffic simulation have traditionally been branches of Civil Engineering and Applied Mathematics. In this talk, we will present how the field is embracing Data Science and Machine Learning methodologies for data processing, pattern analysis, forecasting and prediction of recurrent and non-recurrent events.

Bundling a Python app in a single file - Ricardo Ander-Egg
Live coding talk. This talk will show how to bundle a Python app and all of its dependencies in a single file. Then we will copy this file to a different machine and see how the script runs without having to deal with Docker or virtual environments.

" - requirements: "" - language: "English / Spanish" - topic: "Multiple topics" - start_time_slot: 16:00 - end_time_slot: 17:15 - track_length: 4 - color: yellow - type: talk - location: Sala d'actes Ada Lovelace - - - - start_time_slot: 17:30 - end_time_slot: 17:45 - track_length: 4 - color: blue - title: "Closing session & Kahoot" - speaker: "PyDataBCN Organising Committee" - type: group - location: Sala d'actes Ada Lovelace - class: middle - - --- ## About PyDataBCN 2023 diff --git a/content/events/pyday_bcn/pyday_bcn_2016.md b/content/events/pyday_bcn/pyday_bcn_2016.md index dd0c53521..ae602519b 100644 --- a/content/events/pyday_bcn/pyday_bcn_2016.md +++ b/content/events/pyday_bcn/pyday_bcn_2016.md @@ -1,12 +1,78 @@ --- title: "PyDay BCN (2016)" year: 2016 +# The first day of this edition, from the Meetup export, which records it per +# event. The edition ran two days: the XXL meetup on Thursday 15 and the +# workshop day on Saturday 17, with nothing on the Friday between them. +date: 2016-09-15 +# The last day of this edition. The archived site under /archives/ gives it: +# "September 17th, Saturday" on its PyDay page. The photographs agree: the ids +# of the four posts of the photos block decode (X snowflake epoch) to 19:14, +# 19:44, and 20:29 on Thursday 15, and the fourth to Friday 16 at 13:20, +# saying "See you tomorrow in our workshops!". The Friday post is the one +# outside the first day; the day it points at is the Saturday. +end_date: 2016-09-17 +# The venue of this edition, from the Meetup export, which records it per event. +venue: "Universitat de Barcelona" description: "" menu: main: parent: 'PyDay BCN' weight: 9 + +# The index of sections in the sidebar, like every other edition. +layout: event heroBackground: /images/photos/people-pyday-2016.jpg + +# The sponsors and collaborators of the edition, as the archived site under +# /archives/pybcn.org/pyday-bcn-2016/ lists them, by its own levels and in its +# own order, each resolved to a record of content/sponsors/. Five of the +# eleven had no record and were named in sponsors_text until 2026-10-14: +# Punt Multimèdia, Claranet, Schibsted Spain, AtlaSense, and MongoDB. Their +# records carry the name as the archived page writes it, the @320 logo of +# the archived page, and its site over https (bin/check-content rejects an +# http site). The hosts of Schibsted Spain and AtlaSense no longer resolve +# (measured 2026-10-14); check-content says a site that does not answer +# over https is for its owner to fix, so the link stays. The venue level +# follows the 2025 page, which lists Canòdrom among the organizers. This +# edition has no programme: the archive holds none, and bin/check-content +# notes the gap. +sponsors_text: | + The sponsors and collaborators of the first PyDay, by the levels of the archived site of the edition. Also on the archived site: + + - [The sponsorship offer of PyDay BCN 2016](/archives/pybcn.org/pyday-bcn-2016/sponsorship.html) + - [Backend Developer at BMAT Music Innovation, a job offer of a sponsor](/archives/pybcn.org/pyday-bcn-2016/bmat-music-innovation/backend-developer.html) +sponsor_levels: + - name: Venues + sponsors_per_line: 3 + sponsors: + - punt-multimedia + - ub + - name: Platinum + sponsors_per_line: 2 + sponsors: + - psf + - claranet + - name: Gold + sponsors_per_line: 2 + sponsors: + - schibsted-spain + - bmat + - name: Silver + sponsors_per_line: 3 + sponsors: + - atlasense + - name: Collaborators + sponsors_per_line: 3 + sponsors: + - skyscanner + - mongodb + - name: Thanks to + sponsors_per_line: 3 + sponsors: + - pyladiesbcn + - pythones + --- We are excited and glad to announce that we are organizing our first big event related to Python. @@ -17,40 +83,3 @@ We count with an incredible group of volunteers, sponsors, and contributing enti Thanks to all them. We really hope you'll have a great time attending to these!! - -## {{< icon "fa-rocket" >}} Sponsors and collaborators {#sponsors-and-collaborators} - -### {{< icon "fa-university" >}} Venues {#venues} - -- [![Punt Multimèdia](/archives/pybcn.org/pyday-bcn-2016/punt-multimedia/punt_multimedia_logo@320.png)](/archives/pybcn.org/pyday-bcn-2016/punt-multimedia/index.html) -- [![Facultat de Matemàtiques i Informàtia of Universitat de Barcelona](/archives/pybcn.org/pyday-bcn-2016/facultat-matematiques-informatica/universitat_barcelona@320.png)](/archives/pybcn.org/pyday-bcn-2016/facultat-matematiques-informatica/index.html) - -### {{< icon "fa-certificate" >}} Platinum {#platinum} - -- [![Python Software Foundation](/archives/pybcn.org/pyday-bcn-2016/python-software-foundation/python-software-foundation-logo@320.png)](/archives/pybcn.org/pyday-bcn-2016/python-software-foundation/index.html) -- [![Claranet](/archives/pybcn.org/pyday-bcn-2016/claranet/claranet_logo@320.png)](/archives/pybcn.org/pyday-bcn-2016/claranet/index.html) - -### {{< icon "fa-certificate" >}} Gold {#gold} - -- [![Schibsted Spain](/archives/pybcn.org/pyday-bcn-2016/schibsted-spain/schibsted_logo@320.png)](/archives/pybcn.org/pyday-bcn-2016/schibsted-spain/index.html) -- [![BMAT Music Innovation](/archives/pybcn.org/pyday-bcn-2016/bmat-music-innovation/logo-bmat@320.png)](/archives/pybcn.org/pyday-bcn-2016/bmat-music-innovation/index.html) - -### {{< icon "fa-certificate" >}} Silver {#silver} - -- [![AtlaSense](/archives/pybcn.org/pyday-bcn-2016/atlasense/atlasense_logo@320.png)](/archives/pybcn.org/pyday-bcn-2016/atlasense/index.html) - -### {{< icon "fa-cube" >}} Collaborators {#collaborators} - -- [![Skyscanner](/archives/pybcn.org/pyday-bcn-2016/skyscanner/skyscanner_logo@160.png)](/archives/pybcn.org/pyday-bcn-2016/skyscanner/index.html) -- [![MongoDB](/archives/pybcn.org/pyday-bcn-2016/mongodb/mongodb_logo@160.png)](/archives/pybcn.org/pyday-bcn-2016/mongodb/index.html) - -### {{< icon "fa-thumbs-up" >}} Thanks to ... {#thanks-to} - -- [![PyLadies BCN](/archives/pybcn.org/pyday-bcn-2016/pyladies-bcn/pyladieslogo@160.png)](/archives/pybcn.org/pyday-bcn-2016/pyladies-bcn/index.html) -- [![Asociación Python España](/archives/pybcn.org/pyday-bcn-2016/asociacion-python-espana/python-espana-logo@160.png)](/archives/pybcn.org/pyday-bcn-2016/asociacion-python-espana/index.html) - -### [Willing to see your company here?](/archives/pybcn.org/pyday-bcn-2016/sponsorship.html) {#sponsorship} - -## {{< icon "fa-industry" >}} Job Offers from our sponsors {#job-offers} - -- [Backend Developer at BMAT Music Innovation](/archives/pybcn.org/pyday-bcn-2016/bmat-music-innovation/backend-developer.html) diff --git a/content/events/pyday_bcn/pyday_bcn_2018.md b/content/events/pyday_bcn/pyday_bcn_2018.md index 7b8f3a8a3..b3f20ee8e 100644 --- a/content/events/pyday_bcn/pyday_bcn_2018.md +++ b/content/events/pyday_bcn/pyday_bcn_2018.md @@ -1,126 +1,324 @@ --- title: "PyDay BCN (2018)" year: 2018 +# The day of this edition, from the Meetup export, which records it per event. +date: 2018-11-24 +# The venue of this edition, from the Meetup export, which records it per event. +venue: "Punt Multimèdia Espanya Industrial" description: "" menu: main: parent: 'PyDay BCN' weight: 8 heroBackground: /images/photos/people-pyday-2016.jpg ---- -
-
-
-

- We are excited and glad to announce that we are organizing the second edition of PyDay in Barcelona! -

-

- PyDay Barcelona 2018 is going to take place on November 24th at PuntMultimèdia (Espanya Industrial, Sants), full of FREE workshops, talks and contests for the local Python community and an opportunity to spread the word of its existence to other people that could be interested in Python. -

-

What is PyDay Barcelona 2018 about?

-

- PyDay Barcelona 2018 has the aim of expanding the local Python community. It will be a whole day event, consisting of different level workshops focused on people with a variety of interestss levels and interests. There will be two tracks: beginner and intermediate. Each workshop will be about 80 minutes long. There will be networking opportunities amongst attendees and the sponsoring companies: coffee breaks, open spaces, etc. -

-

Join the event

-

- Eventbrite - PyDay Barcelona 2018 -

-

Agenda

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
09:30Registration & Breakfast
10:00Welcome session - Laura Pérez Mayos
PyBCN Introductory WorkshopsData and Python Track (I)
10:30Developing a small application with git - Ignasi FoschIntroduction to pytorch - Bartek Skorulski
12:00Coffee break
12:30Data analysis with Jupyter Notebook, Pandas and Plotly - Natàlia Padilla and Laura Pérez (PyLadiesBCN)Mirror, mirror on the wall, who is the fairest of them all? (Introduction to OpenCV) - Ismael Benito
14:00Lunch
Web TrackData and Python Track (II)
15:00Python and Elasticsearch - Artur MindiyarovIntro to NoSQL DB with PyMongo - Jordi Guix
16:30Guillotina - Data framework - Ramon Navarro BoschOrganizando chistes con NLP - Julio Martínez
18:00Closing session: Kahoot &- Code Fights Awards
-

Workshops descriptions

-

Developing a small application with git

-

- Speaker: Ignasi Fosch (@ignasi-fosch)
- Language: English
- Description: In this workshop, the attendees will participate in collaborative developing a small simple application using git and GitHub for the workflow. The goals of the exercise is to practice some simple concepts about contributing code.
- Level: Beginner
- Requirements: -

-
    -
  • Git installed
  • -
  • Some virtual environment with Python 3.6 and pytest setup
  • -
  • GitHub account created
  • -
-

Introduction to pytorch

-

- Speaker: Bartek Skorulski
- Language: English
- Description: Why is it worth to know pytorch? Pytorch is a machine/deep learning library for python mainly developed by Facebooks’s AI Research Group. SInce pytorch's models are just like other python programs, it quite easy to write and debug them. Hence pytorch is great for research and experiments. Moreover, with new version 1.0, pytorch introduce "script mode" that aims to become also a tool for writing production code. -

-

- In this short workshop we give a quick and dirty introduction to pytorch. You will have an opportunity to build, train and evaluate few forward feed neural networks. We start with a simple single layer neural networks and finish with convolutional ones.
- Level: Intermediate
- Requirements: -

-
    -
  • We assume that you are familiar with python, have some basic knowledge about neural network.
  • -
  • You will get the best experience if you bring a notebook with access to python (I'll use version 3.6) with numpy, pandas, jupyter, pytorch, matplotlib, pillow and opencv.
  • -
  • Guide to install Pytorch.
  • -
-

Data analysis with Jupyter Notebook, Pandas and Plotly

-

Speaker: Natàlia Padilla (@nataliasirera) and Laura Pérez (@laura-perez-mayos) (@PyLadiesBCN)
+# The programme of this edition, read from the page the association published +# for it, which this repository keeps frozen at +# static/archives/pybcn.org/pyday-bcn-2018/index.html. Its Agenda table gives +# the time, the track, and the speaker of every session, and its "Workshops +# descriptions" section gives the description, the language, the level, and +# the requirements of each one. Nothing here comes from anywhere else. +# +# Titles and descriptions are copied from that page, typos included: it prints +# "SInce pytorch's models", "Facebooks's AI Research Group", and "a variety of +# interestss levels". +# +# No talk carries a length. The page gives a start time per row and says, in +# prose, that each workshop is "about 80 minutes long". It never prints an end +# time, so none is stored. +# +# The five rows that are not a session are not talks: Registration & Breakfast +# at 09:30, the Welcome session at 10:00, the Coffee break at 12:00, Lunch at +# 14:00, and the Closing session at 18:00. +talks: + - id: developing-a-small-application-with-git + title: "Developing a small application with git" + speakers: [ignasi-fosch] + language: en + type: workshop + description: "In this workshop, the attendees will participate in collaborative developing a small simple application using git and GitHub for the workflow. The goals of the exercise is to practice some simple concepts about contributing code." + - id: introduction-to-pytorch + title: "Introduction to pytorch" + speakers: [bartek-skorulski] + language: en + type: workshop + description: "Why is it worth to know pytorch? Pytorch is a machine/deep learning library for python mainly developed by Facebooks's AI Research Group. SInce pytorch's models are just like other python programs, it quite easy to write and debug them. Hence pytorch is great for research and experiments. Moreover, with new version 1.0, pytorch introduce \"script mode\" that aims to become also a tool for writing production code.\n\nIn this short workshop we give a quick and dirty introduction to pytorch. You will have an opportunity to build, train and evaluate few forward feed neural networks. We start with a simple single layer neural networks and finish with convolutional ones." + - id: data-analysis-with-jupyter-notebook-pandas-and-plotly + title: "Data analysis with Jupyter Notebook, Pandas and Plotly" + speakers: [natalia-padilla, laura-perez-mayos] + language: en + type: workshop + description: "A hands-on session where you will learn how to analyze data with Jupyter Notebook, Pandas and Plotly. This will be a guided workshop, suitable for both experienced users and beginners with an interest in data analysis." + - id: mirror-mirror-on-the-wall-introduction-to-opencv + title: "Mirror, mirror on the wall, who is the fairest of them all? (Introduction to OpenCV)" + speakers: [ismael-benito] + language: en + type: workshop + description: "An introduction to OpenCV for NumPy-Scipy-Matplotlib stack users. Starting with Anaconda pre-compiled versions, specially from Menpo project (https://anaconda.org/menpo/opencv3). Covering inputs and outputs, from basic image handling, such as: 'imread', 'imshow', 'imwrite', etc; to video streams. Some basics in color treatment and thresholding techniques. Also, fundamentals of image warping and cropping. Finally, a small project to be able to find a specific object, for example a QR Code, in a scene and trimmed it." + - id: python-and-elasticsearch + title: "Python and Elasticsearch" + speakers: [artur-mindiyarov] + language: en + type: workshop + description: "Elasticsearch is one of the best open-source, cross-platform, distributed and scalable search engine. In this workshop we are going to learn basics of Elasticsearch and use it to built our own search solution." + # The numbered session plan the page prints between the description and + # the level is not the description, so it stays in the body only. + - id: intro-to-nosql-db-with-pymongo + title: "Intro to NoSQL DB with PyMongo" + speakers: [jordi-guix] + language: en + type: workshop + description: "Learn how to access and manage big data with Python. How to access to DB, basic CRUD operations (Create, Read, Update, Delete) and overview of advance operations. Get the [workshop materials](https://github.com/giffy)." + - id: guillotina-data-framework + title: "Guillotina - Data framework" + speakers: [ramon-navarro-bosch] + language: en + type: workshop + description: "A walkthrough from creating a data REST API with your custom model and structure to an interactive interface to consume and manage it. Security and custom rich object models to create micro-services that handles large volume information. We also will cover how to interact with it to compute models using its internal API and Jupyter." + - id: organizando-chistes-con-nlp + title: "Organizando chistes con NLP" + speakers: [julio-martinez] + language: es + type: workshop + description: "Haciendo un repaso global de diferentes técnicas de NLP clásicas y modernas, vamos a organizar una colección de chistes en castellano. Habrá una introducción general con slides (30 minutos) y luego una serie de ejercicios con un notebook de Jupyter." + +# The page names no room. What it names is the track of each column of the +# agenda table, and the two columns change track after lunch: the left one +# runs the introductory workshops in the morning and the web track in the +# afternoon, the right one the two halves of the data track. These four are +# the headings the table prints, so they are what a talk points at. +rooms: + - id: pybcn-introductory-workshops + name: "PyBCN Introductory Workshops" + - id: data-and-python-track-i + name: "Data and Python Track (I)" + - id: web-track + name: "Web Track" + - id: data-and-python-track-ii + name: "Data and Python Track (II)" + +# The grid, one row per session of the day, in the order the agenda table +# prints it: by time, and then by the column order of rooms above. A slot is +# when and where; the talk it names is what was said. The two were one list +# until this edition was converted, and the eight later editions already carry +# them apart. +# +# level, requirements and installation sit on the slot and not on the talk, +# because they are what the session asked of whoever walked into it. level is +# the one level the frozen page prints under each workshop description, which +# is not the python_level and topic_level pair that the editions from 2020 on +# carry: the source names one level and not two. requirements is a list here +# and a single string on those later editions, because the page prints the +# requirements of a workshop as separate lines. +# +# No slot carries a track_length other than 1: the table runs two columns all +# day and no session spanned both. No slot carries a duration_minutes either, +# because no session has a length to put on it: the page gives a start time +# per row and says, in prose, that each workshop is "about 80 minutes long". +# +# The five rows of the table that are not a session are not slots of this +# list: Registration & Breakfast at 09:30, the Welcome session at 10:00, the +# Coffee break at 12:00, Lunch at 14:00, and the Closing session at 18:00. +# They are in the table the body of this page prints, verbatim, and nothing +# reads them from here. +# +# This page declares no eventTimes, so no grid is rendered from this list. The +# programme a reader sees is that same frozen table. The list is here because +# a photo of the gallery joins to a talk by id, and because the nine photo +# days still to import need one shape for a programme and not two. +agenda: + - start: "10:30" + track_length: 1 + room: pybcn-introductory-workshops + talk: developing-a-small-application-with-git + level: beginner + requirements: + - "Git installed" + - "Some virtual environment with Python 3.6 and pytest setup" + - "GitHub account created" + - start: "10:30" + track_length: 1 + room: data-and-python-track-i + talk: introduction-to-pytorch + level: intermediate + requirements: + - "We assume that you are familiar with python, have some basic knowledge about neural network." + - "You will get the best experience if you bring a notebook with access to python (I'll use version 3.6) with numpy, pandas, jupyter, pytorch, matplotlib, pillow and opencv." + - "[Guide to install Pytorch](https://bartek-blog.github.io/python/pytorch/conda/2018/11/12/install-pytorch-with-conda.html)." + - start: "12:30" + track_length: 1 + room: pybcn-introductory-workshops + talk: data-analysis-with-jupyter-notebook-pandas-and-plotly + level: beginner + # The page prints an "Installation" label under the requirements of + # this one workshop, with two options. Both are kept, under + # installation. + requirements: + - "a laptop + Jupyter + Pandas + Plotly + an appetite for learning!" + installation: + - "Option 1: Install Anaconda https://www.anaconda.com/download/" + - "Option 2: Execute on the terminal: pip install jupyter pandas plotly" + - start: "12:30" + track_length: 1 + room: data-and-python-track-i + talk: mirror-mirror-on-the-wall-introduction-to-opencv + level: intermediate + # The requirements end on a colon: the page then prints a conda block + # and an apt block, which stay in the body of this page and not here. + requirements: + - "A laptop with a Miniconda/Anaconda distribution. You must create an environment:" + - start: "15:00" + track_length: 1 + room: web-track + talk: python-and-elasticsearch + level: intermediate + requirements: + - "Google account to use Google Colaboratory" + - "Knowledge of Python" + - start: "15:00" + track_length: 1 + room: data-and-python-track-ii + talk: intro-to-nosql-db-with-pymongo + level: beginner + # The page prints "(to be announced)" and then announces three + # requirements under it. Both halves are what the source says. + requirements: + - "(to be announced)" + - "Laptop with Internet access" + - "Google Account with access to Google Drive (to use Google Colab)" + - "Web browser" + - start: "16:30" + track_length: 1 + room: web-track + talk: guillotina-data-framework + level: intermediate + requirements: + - "Docker with elasticsearch, postgres and redis images" + - "Python packages: guillotina, guillotina_elasticsearch, guillotina_rediscache" + - "https://github.com/guillotinaweb/guillotina_processing repo downloaded and docker image built" + - start: "16:30" + track_length: 1 + room: data-and-python-track-ii + talk: organizando-chistes-con-nlp + level: intermediate + requirements: + - "Python 3" + - "jupyter" + - "scikit-learn" + - "spacy (with Spanish model installed)" + +# The index of sections in the sidebar, like every other edition. +layout: event +--- +

+We are excited and glad to announce that we are organizing the second edition of PyDay in Barcelona! +

+

+PyDay Barcelona 2018 is going to take place on November 24th at PuntMultimèdia (Espanya Industrial, Sants), full of FREE workshops, talks and contests for the local Python community and an opportunity to spread the word of its existence to other people that could be interested in Python. +

+

What is PyDay Barcelona 2018 about?

+

+PyDay Barcelona 2018 has the aim of expanding the local Python community. It will be a whole day event, consisting of different level workshops focused on people with a variety of interestss levels and interests. There will be two tracks: beginner and intermediate. Each workshop will be about 80 minutes long. There will be networking opportunities amongst attendees and the sponsoring companies: coffee breaks, open spaces, etc. +

+

Join the event

+

+Eventbrite - PyDay Barcelona 2018 +

+

Agenda

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
09:30Registration & Breakfast
10:00Welcome session - Laura Pérez Mayos
PyBCN Introductory WorkshopsData and Python Track (I)
10:30Developing a small application with git - Ignasi FoschIntroduction to pytorch - Bartek Skorulski
12:00Coffee break
12:30Data analysis with Jupyter Notebook, Pandas and Plotly - Natàlia Padilla and Laura Pérez (PyLadiesBCN)Mirror, mirror on the wall, who is the fairest of them all? (Introduction to OpenCV) - Ismael Benito
14:00Lunch
Web TrackData and Python Track (II)
15:00Python and Elasticsearch - Artur MindiyarovIntro to NoSQL DB with PyMongo - Jordi Guix
16:30Guillotina - Data framework - Ramon Navarro BoschOrganizando chistes con NLP - Julio Martínez
18:00Closing session: Kahoot &- Code Fights Awards
+

Workshops descriptions

+

Developing a small application with git

+

+Speaker: Ignasi Fosch (@ignasi-fosch)
+Language: English
+Description: In this workshop, the attendees will participate in collaborative developing a small simple application using git and GitHub for the workflow. The goals of the exercise is to practice some simple concepts about contributing code.
+Level: Beginner
+Requirements: +

+
    +
  • Git installed
  • +
  • Some virtual environment with Python 3.6 and pytest setup
  • +
  • GitHub account created
  • +
+

Introduction to pytorch

+

+Speaker: Bartek Skorulski
+Language: English
+Description: Why is it worth to know pytorch? Pytorch is a machine/deep learning library for python mainly developed by Facebooks’s AI Research Group. SInce pytorch's models are just like other python programs, it quite easy to write and debug them. Hence pytorch is great for research and experiments. Moreover, with new version 1.0, pytorch introduce "script mode" that aims to become also a tool for writing production code. +

+

+In this short workshop we give a quick and dirty introduction to pytorch. You will have an opportunity to build, train and evaluate few forward feed neural networks. We start with a simple single layer neural networks and finish with convolutional ones.
+Level: Intermediate
+Requirements: +

+
    +
  • We assume that you are familiar with python, have some basic knowledge about neural network.
  • +
  • You will get the best experience if you bring a notebook with access to python (I'll use version 3.6) with numpy, pandas, jupyter, pytorch, matplotlib, pillow and opencv.
  • +
  • Guide to install Pytorch.
  • +
+

Data analysis with Jupyter Notebook, Pandas and Plotly

+

Speaker: Natàlia Padilla (@nataliasirera) and Laura Pérez (@laura-perez-mayos) (@PyLadiesBCN)
Language: English
Description: A hands-on session where you will learn how to analyze data with Jupyter Notebook, Pandas and Plotly. This will be a guided workshop, suitable for both experienced users and beginners with an interest in data analysis.
Level: Beginner
Requirements: a laptop + Jupyter + Pandas + Plotly + an appetite for learning!
Installation:
-• Option 1: Install Anaconda https://www.anaconda.com/download/
+• Option 1: Install Anaconda anaconda.com/download
• Option 2: Execute on the terminal: pip install jupyter pandas plotly

-

Mirror, mirror on the wall, who is the fairest of them all? (Introduction to OpenCV)

+

Mirror, mirror on the wall, who is the fairest of them all? (Introduction to OpenCV)

Speaker: Ismael Benito (@ismansiete)
Language: English
Description: An introduction to OpenCV for NumPy-Scipy-Matplotlib stack users. Starting with Anaconda pre-compiled versions, specially from Menpo project (https://anaconda.org/menpo/opencv3). Covering inputs and outputs, from basic image handling, such as: 'imread', 'imshow', 'imwrite', etc; to video streams. Some basics in color treatment and thresholding techniques. Also, fundamentals of image warping and cropping. Finally, a small project to be able to find a specific object, for example a QR Code, in a scene and trimmed it.
@@ -139,7 +337,7 @@ pip install pyzbar qrcode scikit-video

apt install -y libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
 apt install -y libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
 
-

Python and Elasticsearch

+

Python and Elasticsearch

Speaker: Artur Mindiyarov
Language: English
Description: Elasticsearch is one of the best open-source, cross-platform, distributed and scalable search engine. In this workshop we are going to learn basics of Elasticsearch and use it to built our own search solution.
@@ -149,7 +347,7 @@ apt install -y libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-d

  • Google account to use Google Colaboratory
  • Knowledge of Python
  • -

    Intro to NoSQL DB with PyMongo

    +

    Intro to NoSQL DB with PyMongo

    Speaker: Jordi Guix
    Language: English
    Description: Learn how to access and manage big data with Python. How to access to DB, basic CRUD operations (Create, Read, Update, Delete) and overview of advance operations.
    @@ -188,7 +386,7 @@ Get the workshop materialsGoogle Account with access to Google Drive (to use Google Colab)

  • Web browser
  • -

    Guillotina - Data framework

    +

    Guillotina - Data framework

    Speaker: Ramon Navarro Bosch (@bloodbare)
    Language: English
    Description: A walkthrough from creating a data REST API with your custom model and structure to an interactive interface to consume and manage it. Security and custom rich object models to create micro-services that handles large volume information. We also will cover how to interact with it to compute models using its internal API and Jupyter.
    @@ -199,7 +397,7 @@ Get the workshop materialsPython packages: guillotina, guillotina_elasticsearch, guillotina_rediscache

  • https://github.com/guillotinaweb/guillotina_processing repo downloaded and docker image built
  • -

    Organizando chistes con NLP

    +

    Organizando chistes con NLP

    Speaker: Julio Martínez (@liopic)
    Language: Spanish
    Description: Haciendo un repaso global de diferentes técnicas de NLP clásicas y modernas, vamos a organizar una colección de chistes en castellano. Habrá una introducción general con slides (30 minutos) y luego una serie de ejercicios con un notebook de Jupyter.
    @@ -212,16 +410,11 @@ Get the workshop materialsspacy (with Spanish model installed)

    Sponsors

    -

    Do you want to sponsor this event? -Contact us at pyday-bcn-2018@googlegroups.com.

    Platinum

    -

    -

    +

    Kiwicom logo +Onna logo

    Gold

    -

    - - -

    -
    -
    -
    +

    Kernel Analytics logo +TravelPerk logo +KSchool logo +Python Software Foundation logo

    diff --git a/content/events/pyday_bcn/pyday_bcn_2019.md b/content/events/pyday_bcn/pyday_bcn_2019.md index c0e2b490b..bc207c687 100644 --- a/content/events/pyday_bcn/pyday_bcn_2019.md +++ b/content/events/pyday_bcn/pyday_bcn_2019.md @@ -1,19 +1,244 @@ --- title: "PyDay BCN (2019)" year: 2019 +# The day of this edition, from the Meetup export, which records it per event. +date: 2019-11-16 +# The venue of this edition, from the Meetup export, which records it per event. +venue: "Universitat de Barcelona" description: "" menu: main: parent: 'PyDay BCN' weight: 7 heroBackground: /images/photos/people-pyday-2019.jpg ---- -
    -
    -
    -

    This event has ended! You can see some photos here.

    -

    +# This page is on layouts/_default/event.html, like the editions from 2020 +# on, so it gets the sticky index of sections down the left of the page. It +# was on layouts/_default/single.html, which renders the body and the +# gallery and nothing else, so the page had no way to jump to its own +# gallery. The index lists what this file declares: About the event, and +# Gallery. There is no Schedule entry, because the grid needs eventTimes +# and numTracks and this page carries neither (see the comment on agenda below). PyDay BCN 2016 and 2018 +# are still on single.html and still have no index. +layout: event + +# The programme of this edition, read from the printed agenda that the live +# thread on X photographed (tweet 1195637939285430272, the photo on this page). +# The Google Calendar embed that held it is gone, and the Meetup description +# never carried it, so that photograph is the source. Titles are copied from +# the sheets, typos included: the sheets print "Decoradores en evolucion" and +# "Un caso practico" without their accents. +# +# The sheets name no speaker at all. The four that are named here come from the +# thread, which announced them. The other eleven are unknown, and that is what +# the source says. The caption of one photo credits the handle @bustawin for +# SQLAlchemy from 0 to proficient, but a handle is not a name, so that talk +# carries no speaker until somebody says who it is. +talks: + # The two keynotes. The printed sheets announce the opening one in all three + # tracks and give it no title, and the closing one is not on them at all: the + # thread tweeted it at 20:03, well after the 18:30 the sheets end at. David + # Arcos supplied both titles, which is why they are plain and not quoted. + - id: opening-keynote + title: "Opening keynote" + speakers: [laura-perez-mayos] + type: keynote + source: "https://x.com/PyBCN/status/1195623896537554944" + - id: closing-keynote + title: "Closing keynote" + speakers: [david-arcos] + type: keynote + source: "https://x.com/PyBCN/status/1195779452829097984" + - id: arquitectura-limpia-para-microservicios + title: "Arquitectura limpia para microservicios: Un caso practico" + duration_minutes: 90 + language: es + type: workshop + source: "https://x.com/PyBCN/status/1195638580137406464" + - id: fast-bayesian-ab-and-multivariate-testing + title: "Fast Bayesian A/B and multivariate testing" + duration_minutes: 45 + language: en + type: talk + - id: tell-me-why + title: "Tell me Why" + duration_minutes: 90 + language: en + type: workshop + - id: tips-for-optimize-django-database-queries + title: "Tips for optimize Django database queries" + duration_minutes: 90 + language: en + type: workshop + - id: deep-learning-for-image-classification-using-tensorflow + title: "Deep Learning for Image Classification using TensorFlow" + duration_minutes: 75 + language: en + type: workshop + source: "https://x.com/PyBCN/status/1195638268727042051" + - id: decoradores-en-evolucion + title: "Decoradores en evolucion" + duration_minutes: 60 + language: es + type: workshop + source: "https://x.com/PyBCN/status/1195662968203153410" + - id: the-magic-of-pyspark + title: "The magic of PySpark" + duration_minutes: 105 + language: en + type: workshop + - id: sqlalchemy-from-0-to-proficient + title: "SQLAlchemy from 0 to proficient" + duration_minutes: 90 + language: en + type: workshop + source: "https://x.com/PyBCN/status/1195729652893077504" + - id: migracode + title: "Migracode: the first code school for youth migrants and refugees in Barcelona" + duration_minutes: 30 + language: en + type: talk + - id: keep-your-repo-clean + title: "Keep your repo clean" + speakers: [hector-canto] + duration_minutes: 45 + language: es + type: talk + source: "https://x.com/PyBCN/status/1195639258599563264" + - id: refactoring-a-web-application-with-python + title: "Refactoring a Web Application with Python" + duration_minutes: 90 + language: en + type: workshop + source: "https://x.com/PyBCN/status/1195663218259243010" + - id: building-interactive-data-visualizations-with-plotly-and-dash + title: "Building Interactive Data Visualizations with Plotly and Dash" + speakers: [anna-fedotova] + duration_minutes: 90 + language: en + type: workshop + source: "https://x.com/PyBCN/status/1195729247731630080" + - id: quick-data-exploration-with-jupyter-and-ipywidgets + title: "Quick data exploration with Jupyter and ipywidgets" + duration_minutes: 90 + language: en + type: workshop + source: "https://x.com/PyBCN/status/1195729783734202368" + +# The rooms the sheets name. Three parallel tracks, one level each. +rooms: + - id: b6 + name: "B6" + track: Advanced + - id: b5 + name: "B5" + track: Intermediate + - id: b3 + name: "B-3" + track: Beginner + +# The grid, one row per session of the day, in the order the sheets print it: +# by time, and then by the track order of rooms above. A slot is when and +# where; the talk it names is what was said. The two were one list until this +# edition was converted, and the eight later editions already carry them +# apart. +# +# level is the one level the sheets give a session, which is the level of its +# track. It is not the python_level and topic_level pair that the editions +# from 2020 on carry, because the source names one level and not two. +# +# No slot carries a track_length other than 1: the three tracks ran in +# parallel all day and no session spanned two of them. +# +# The hand-drawn arrow on the sheet swapped the two B5 slots, 10:00 and +# 16:30. The comment that records it is on both of them, where the time it +# corrects now lives. +# +# This page declares no eventTimes, so no grid is rendered from this list. +# The programme a reader sees is the Google Calendar embed in the body, which +# is what the association published. The list is here because a photo of the +# gallery joins to a talk by id, and because the nine photo days still to +# import need one shape for a programme and not two. +agenda: + # The sheets print the opening keynote in all three tracks at 9:30, so it is + # one slot across the grid. The closing keynote has no slot: it is not on + # them, and the thread gives the time of the tweet, not of the session. + - start: "9:30" + track_length: 3 + room: b6 + talk: opening-keynote + - start: "10:00" + track_length: 1 + room: b6 + talk: arquitectura-limpia-para-microservicios + level: advanced + - start: "10:00" + track_length: 1 + room: b5 + talk: deep-learning-for-image-classification-using-tensorflow + # The printed sheet has these two the other way round, with a hand-drawn + # arrow swapping them. The thread confirms the arrow, not the print. + level: intermediate + - start: "10:00" + track_length: 1 + room: b3 + talk: migracode + level: beginner + - start: "10:30" + track_length: 1 + room: b3 + talk: keep-your-repo-clean + level: beginner + - start: "12:00" + track_length: 1 + room: b6 + talk: fast-bayesian-ab-and-multivariate-testing + level: advanced + - start: "12:00" + track_length: 1 + room: b5 + talk: decoradores-en-evolucion + level: intermediate + - start: "12:00" + track_length: 1 + room: b3 + talk: refactoring-a-web-application-with-python + level: beginner + - start: "14:30" + track_length: 1 + room: b6 + talk: tell-me-why + level: advanced + - start: "14:30" + track_length: 1 + room: b5 + talk: the-magic-of-pyspark + level: intermediate + - start: "14:30" + track_length: 1 + room: b3 + talk: building-interactive-data-visualizations-with-plotly-and-dash + level: beginner + - start: "16:30" + track_length: 1 + room: b6 + talk: tips-for-optimize-django-database-queries + level: advanced + - start: "16:30" + track_length: 1 + room: b5 + talk: sqlalchemy-from-0-to-proficient + # The printed sheet has these two the other way round, with a hand-drawn + # arrow swapping them. The thread confirms the arrow, not the print. + level: intermediate + - start: "16:30" + track_length: 1 + room: b3 + talk: quick-data-exploration-with-jupyter-and-ipywidgets + level: beginner + +--- +

    The group photograph of PyDay BCN 2019, in the cloister of the Universitat de Barcelona

    Archived content

    We are excited to announce that we are organizing the third edition of PyDay in Barcelona!

    PyDay Barcelona 2019 is going to take place on November 16th fgin Universitat de Barcelona, a full day full of FREE python-related activities for the Python community. Over the last two editions, PyDay has become a great opportunity to share our love for Python and engage users, companies and newcomers into it!

    @@ -34,36 +259,33 @@ heroBackground: /images/photos/people-pyday-2019.jpg

    Sponsors

    Venue

    - - +Universitat de Barcelona logo +Python Software Foundation logo

    Platinum

    - - - - - - +UpCloud logo +Kiwi.com logo +Invisible Bits logo +Chartboost logo +King logo +Qustodio logo

    Coffee Sponsor

    - +Affectv logo

    Gold

    - - - +ThoughtWorks logo +BMAT logo +Holaluz logo
    - - - +TravelPerk logo +Elastic logo +Verse logo
    - +Fundación Cibervoluntarios logo

    Silver

    - - - +KSchool logo +Satellogic logo +Blueliv logo
    -
    -
    -
    diff --git a/content/events/pyday_bcn/pyday_bcn_2020.md b/content/events/pyday_bcn/pyday_bcn_2020.md index 97aee18e1..229109a93 100644 --- a/content/events/pyday_bcn/pyday_bcn_2020.md +++ b/content/events/pyday_bcn/pyday_bcn_2020.md @@ -1,6 +1,10 @@ --- title: "PyDay BCN (2020)" year: 2020 +# The day of this edition, from the Meetup export, which records it per event. +date: 2020-12-12 +# The venue of this edition, from the Meetup export, which records it per event. +venue: "Online" description: "The fourth edition!" menu: main: @@ -63,297 +67,372 @@ people_sections: - nuria-pujol-vilanova - ruben-berenguel -previous_editions: - - name: PyDay BCN 2019 - url: /events/pyday_bcn/pyday_bcn_2019/ - - name: PyDay BCN 2018 - url: /events/pyday_bcn/pyday_bcn_2018/ - - name: PyDay BCN 2016 - url: /events/pyday_bcn/pyday_bcn_2016/ - spansDuration: 15 numTracks: 2 -eventTimes: [16:00, 16:15, 16:30, 16:45, 17:00, 17:15, 17:30, 17:45, 18:00, 18:15, 18:30, 18:45, 19:00, 19:15, 19:30, 19:45, 20:00, 20:15, 20:30] -events: - - start_time_slot: 16:00 - end_time_slot: 16:00 - track_length: 2 - video: https://www.youtube.com/watch?v=oLB0eo7tpj0 - color: purple - title: "Welcome Session" - speaker: "Laura Pérez-Mayos" - location: https://www.youtube.com - type: group - location: YouTube track1 and track2 - - - start_time_slot: 16:15 - end_time_slot: 16:30 - track_length: 1 - video: https://www.youtube.com/watch?v=w9cYczex79M - color: orange - title: "Ready, Set, Go with Numba" - description: "The prominent reasons for the wide adoption of Python is the ease of learning, usability and readability coupled with the powerful ecosystem of Python packages. This often makes Python an attractive language for researchers & scholars to undertake computational projects and thesis. The ease of prototyping and tinkering allows for higher number of iterations and customization, leading to an increase in research output. But, a major pain point of using Python is its speed when compared to languages like C++ or FORTRAN which are still widely used in research.

    Developers, when hit by the performance bottleneck of python code, often come across some methods to increase their code performance like using PyMPI, Numpy or CPython. But, the learning curve is steep and APIs get less familiar.

    If learning Python is so easy, why should increasing the performance of Python code be so difficult?

    This talk will address this question and get us up and running with Numba, an open source JIT compiler that translates Python and NumPy code into fast machine code. We will delve into real world exercises which will demonstrate the core concepts, ease and effectiveness of using Numba and how it can be useful in lowering the barrier to achieve code performance in Python." - language: "English" - speaker: "Ankit Mahato" - type: talk - python_level: beginner - topic: Data Science, ML, DL - location: YouTube track1 - - start_time_slot: 16:45 - end_time_slot: 17:00 - track_length: 1 - video: https://www.youtube.com/watch?v=uzjlrbqq26M - color: orange - title: "Working with Text Data in Pandas" - description: "I'll will present some tips, tricks and libraries to speed up text processing with pandas." - language: "Spanish" - speaker: "Daniel Mesejo" - type: talk - python_level: intermediate - topic: Data Science, ML, DL - location: YouTube track1 - - start_time_slot: 17:15 - end_time_slot: 17:15 - track_length: 1 - video: https://www.youtube.com/watch?v=Hnr7MH9Pd5s - color: orange - title: "Lifebox: a virtual ecosystem" - description: "Lifebox is a project about a virtual ecosystem created using Python. Inside the Lifebox you can find two different kind of species, the ‘species’ and the ‘mana’. Each of the ‘species’ have a set of parameters that defines how they evolve inside the virtual ecosystem, and you can change all the parameter of species in real-time. The goal of the project is to offer the possibility to learn the basic concepts of biology through the experimentation, viewing the consequences of your actions and trying to find the way to balance the ecosystem through changing the Lifebox parameters." - language: "Catalan" - speaker: "Ferran Fábregas" - type: lightning - python_level: intermediate - topic: Data Science, ML, DL - location: YouTube track1 - - start_time_slot: 17:30 - end_time_slot: 17:30 - track_length: 1 - video: https://www.youtube.com/watch?v=4oc0OTkks0k - color: orange - title: "Transformers: the all-in-one tool for NLP" - description: "NLP has been evolving from classic bag of words to embedding methods. But in 2017 finally a new model that can be used for all kind of NLP tasks emerged: transformers. Let's review its general ideas, and a practical example of its use." - language: "English" - speaker: "Julio Martínez" - type: lightning - python_level: intermediate - topic: Data Science, ML, DL - location: YouTube track1 - - start_time_slot: 17:45 - end_time_slot: 17:45 - video: https://www.youtube.com/watch?v=4-OPxy4CLAw - track_length: 1 - color: blue - title: "A Day Has Only 24±1 Hours" - description: "On the last Sunday of October you may get “one more hour of sleep” but as well may spend much more time debugging code dealing with the time zones, daylight saving time shifts and datetime stuff in general. Two centuries of short-sighted propaganda and long-term chaos in ten minutes. Maybe that will make you want to avoid time zones in your code altogether!

    El último domingo de octubre puedes obtener “una hora más de sueño”, pero también puedes pasar mucho más tiempo debugando el código tratando con las zonas horarias, los cambios de horario de verano y las cosas de fecha y hora en general. Dos siglos de propaganda miope y caos a largo plazo en diez minutos. ¡Quizás eso te haga querer evitar las zonas horarias en tu código por completo!" - language: "English" - speaker: "Miroslav Šedivý" - type: lightning - python_level: intermediate - topic: Python programming - location: YouTube track1 - - start_time_slot: 18:00 - end_time_slot: 18:00 - video: https://www.youtube.com/watch?v=B0YM3XkNkQs - track_length: 1 - color: blue - title: "Ho sento, no ets el meu tipus" - description: "Type Hints were introduced in Python 3 but you may have never used them, known that they exist, or seen code that uses them. Or you may have seen code with type hints and cringed because it didn't look like the Python you know. In this talk we will demistify type hints and show how they can actually help you find potential bugs." - language: "Catalan" - title_lang: Catalan - speaker: "Carles Barrobés" - type: lightning - python_level: intermediate - topic: Python programming - location: YouTube track1 - - - start_time_slot: 16:15 - end_time_slot: 16:30 - track_length: 1 - video: https://www.youtube.com/watch?v=8UjkfOKh6jA - color: yellow - title: "Alexa, te elijo a ti" - description: "Algunos de nosotros tenemos un aparatito en casa escuchándonos 24/7 que usamos para escuchar música, preguntarle la hora y pedirle un temporizador o un chiste malo. En esta charla os voy a enseñar como programar a Alexa usando Python para que os ayude en vuestras tareas usando dos ejemplos: una skill que nos calculará equivalencias para ayudarnos en las recetas de cocina (entre otras cosas) y otra que nos aconsejará sobre qué tipo de Pokémon elegir para enfrentarnos a un oponente." - language: "Spanish" - title_lang: Spanish - speaker: "Elisabeth Ortega Carrasco" - type: talk - python_level: beginner - topic: IOT - location: YouTube track2 - - start_time_slot: 16:45 - end_time_slot: 17:00 - video: https://www.youtube.com/watch?v=Se3FmYvn6sM - track_length: 1 - color: green - title: "Network automation using Python" - description: "I will share the status of network automation using Python, presenting and demoing some popular libraries such as Netmiko, Napalm and Nornir." - language: "English" - speaker: "Christian Adell" - type: talk - python_level: intermediate - topic: Network automation - location: YouTube track2 - - start_time_slot: 17:15 - end_time_slot: 17:15 - track_length: 1 - video: https://www.youtube.com/watch?v=kwa58dEhPNY - color: blue - title: "Retrying, a better way" - description: "Python have a lot of libraries, for multiple purposes, and among them there are a lot of hidden gems, such as the Backoff library (https://github.com/litl/backoff) which will make retrying operations based on exceptions or predicates an easy game.
    Handling retries have never been so simple." - language: "English" - speaker: "Christian Adell" - type: lightning - python_level: beginner - topic: Python programming - location: YouTube track2 - - start_time_slot: 17:30 - end_time_slot: 17:30 - video: https://www.youtube.com/watch?v=S3ebYJxXBRU - track_length: 1 - color: blue - title: "Antifragile Software: Code that gains from disorder" - description: "Joel Spolsky famously said that you should never rewrite your code from scratch. Still, many organizations see no other way out of their codebases. Why? In this talk we explore the concept of antifragility, and how it can be applied to software engineer to keep your codebase from getting \"rusty\"." - language: "English" - speaker: "Alvaro Duran" - type: lightning - python_level: beginner - topic: Python programming - location: YouTube track2 - - start_time_slot: 17:45 - end_time_slot: 18:00 - track_length: 1 - video: https://www.youtube.com/watch?v=cmi4B41oOd8 - color: green - title: "Efficiently share data on a true microservices architecture using django-cqrs (CloudBlue sponsored talk)" - type: talk - location: YouTube track2 - topic: Web development, microservices - language: "English" - python_level: intermediate - speaker: Francesco Faraone - - - start_time_slot: 18:15 - end_time_slot: 18:15 - track_length: 2 - color: purple - title: "Coffee Break" - type: coffee +eventTimes: ["16:00", "16:15", "16:30", "16:45", "17:00", "17:15", "17:30", "17:45", "18:00", "18:15", "18:30", "18:45", "19:00", "19:15", "19:30", "19:45", "20:00", "20:15", "20:30"] - - start_time_slot: 18:30 - end_time_slot: 18:45 - track_length: 1 - video: https://www.youtube.com/watch?v=v75bTfShH-M - color: orange - title: "Performing Sentiment Analysis on Video with Serverless Architectures" - description: "In this talk we will explain how to create video processing pipelines using an event-driven and fully Serverless Architecture in AWS. We will use AWS Chalice, a Python framework from AWS, for managing the serverless Lambda Functions and a range variety of AWS services for the video manipulation like AWS Elastic Transcoder, Amazon Transcribe, Amazon Comprehend. And of course the more common architectural and traditional services like S3, DynamoDB, Gateway, SQS, SNS and SES." - language: "English" - speaker: "Eduard Cespedes Borras" - type: talk - python_level: intermediate - topic: Data Science, ML, DL - location: YouTube track1 - - start_time_slot: 19:00 - end_time_slot: 19:15 - video: https://www.youtube.com/watch?v=KOpW86J56CU - track_length: 1 - color: orange - title: "Counting votes: analyzing a large dataset with Dask" - description: "We will explain how to switch from Pandas to Dask in order to analyze a large dataset that does not fit into single-machine memory.

    Repository: https://github.com/ber2/pyday2020-counting-votes-with-dask" - language: "English" - speaker: "Alberto Camara" - type: talk - python_level: intermediate - topic: Data Science, ML, DL - location: YouTube track1 - - start_time_slot: 19:30 - end_time_slot: 19:45 - track_length: 1 - video: https://www.youtube.com/watch?v=uUwmknHAIhU - color: orange - title: "Kornia: differentiable Computer Vision with Pytorch" - description: "The talk is an introduction to Kornia which is a library that implements classical Computer Vision algorithms in PyTorch that got a lot of attention within the open source community during the last year. The core of the library is written from scratch using pure PyTorch operators and uses the auto-reverse differentiable engine to allow to the user to plug any function within neural networks with a transparent API for high performance devices such as GPUs and TPUs. During the talk I'll go through the different principle designs and the functionalities found in each of the modules, practical examples, basic usage of the library and more. Information about the project in the website: www.kornia.org" - language: "English" - speaker: "Edgar Riba" - type: talk - python_level: intermediate - topic: Data Science, ML, DL - location: YouTube track1 - - start_time_slot: 20:00 - end_time_slot: 20:15 - track_length: 1 - video: https://www.youtube.com/watch?v=UtK-npeVsH0 - color: orange - title: "JINA AI: An Open Source Neural Search Framework" - description: "What is neural or semantic search? How is it different from traditional symbolic search? Jina AI is an open source framework for AI-powered search." - language: "English" - speaker: "Joan Fontanals Martinez" - type: talk - python_level: beginner - topic: Data Science, ML, DL - location: YouTube track1 +# The rooms of this edition, in the order the grid first names them. A room is +# a record with an id because the colour of a block now comes from it: the +# template gives every room of an event one colour of the agenda palette and +# keeps it for the whole day. See partials/agenda_entry.html. +rooms: + - id: youtube-track1-and-track2 + name: "YouTube track1 and track2" + - id: youtube-track1 + name: "YouTube track1" + - id: youtube-track2 + name: "YouTube track2" + - id: zoom + name: "Zoom" - - start_time_slot: 18:30 - end_time_slot: 18:45 - track_length: 1 - video: https://www.youtube.com/watch?v=nWVJ7HfFC5E - color: yellow - title: "Building My First Python IoT Device with Containers (in 20 minutes)" - description: "This workshop is designed for developers who are coming from Web development and other technologies into the Internet of Things. This session will guide assistants how to connect an Arm-powered device such as a Raspberry Pi to the Internet with balena and open source tools." - language: "English" - speaker: "Marc Pous" - type: talk - python_level: beginner - topic: IOT - location: YouTube track2 - - start_time_slot: 19:00 - end_time_slot: 19:15 - track_length: 1 - video: https://www.youtube.com/watch?v=BoaGrcmfVH8 - color: green - title: "Documentation-driven development for Python web APIs" - description: "In this presentation, I want to show how developers can minimise the risk of API integration failures by using documentation-driven development. Documentation-driven development is an approach where we first write the API documentation, and then we validate the API implementation against the specification. This approach helps us create a more robust software delivery process for our APIs. I’ll show useful tools and frameworks, such as Dredd, that can help us automatically generate tests that validate our APIs. " - language: "English" - speaker: "Jose Haro Peralta" - type: talk - python_level: beginner - topic: Web - location: YouTube track2 - - start_time_slot: 19:30 - end_time_slot: 19:45 - video: https://www.youtube.com/watch?v=LvvwLYk9aIo - track_length: 1 - color: blue - title: "Alice in Pythonland: Object oriented programming in Lewis Carroll games" - description: "Tutorial regarding object oriented programming in Python. The applications that will be presented are some of the maths games hidden in the book Alice in Wonderland of Lewis Carroll. These games are algorimths pubblished by Lewis Carroll on scientific journals. My contribution would be to explain oop techniques (inheritance,decorators,dataclass, nametuple,...) for developing maths games and use some NLP techniques (i.e., finding the dialogs between charcaters in the books) for presenting the interactions between the playes involved in the game.
    I have been inspired by a repository from Anna-Lena Popkes
    (please see https://github.com/zotroneneis/magical_universe) on working on one programming topic per day. In this way, I have improved my coding skills day by day and I have created the a Wonderland Universe. The idea of coding the games created by Lewis Carroll is related to my maths background and has the intent of explain some joyful algorithms. My goal is to encourage other people to use the same learning technique and challege theiself with custom examples and applications." - language: "English" - speaker: "Maria Teresa Grifa" - type: talk - python_level: beginner - topic: Python programming - location: YouTube track2 - - start_time_slot: 20:00 - end_time_slot: 20:15 - track_length: 1 - video: https://www.youtube.com/watch?v=LAQY4ucheQA - color: green - title: "Investigating Digital Crimes using Python" - description: "A recent study by CheckPoint Research has recorded over 1,50,000 cyber-attacks every week during the COVID-19 pandemic. There has been an increase of 30% in cyber-attacks compared to previous weeks. The pandemic has been the main reason for job loss and pay cuts of people and has led to an increase in cybercrimes. Examples of cyber-attacks include phishing, ransomware, fake news, fake medicine, extortion, and insider frauds. Cyber forensics is a field that deals with the investigation of digital crimes by analyzing, examining, identifying, and recovering digital evidence from electronic devices and producing them in the court of law. Python has a great collection of built-in modules for digital forensics tasks. The talk begins with an introduction to digital crimes, digital forensics, the process of investigation, and the collection of evidence. Next, I will discuss report creation using CSV and Excel reports, investigation of acquisition media using the pyscreenshot module. Finally, I will conclude the talk with the investigation of embedded metadata, emails, and log files. In this talk, I will cover mutagen, mailbox, tqdm, argparser, yara python modules, and utilities which are used for the above-mentioned tasks.

    In this talk, the audience will learn the procedure to be followed while investigating digital crimes and most importantly how to develop their own digital forensic tools using Python. I believe that the attendees will learn about the new exciting field where there are lots of opportunities with respect to their careers. Basic understanding of Python language or any other scripting language will be helpful in understanding the concepts.

    Outline 1. Introduction to digital crimes, digital forensics, the process of investigation, and collection of evidence. [05 Minutes] 2. Report creation using CSV and Excel reports [04 Minutes] 3. Investigation of acquisition media using the pyscreenshot module [03 Minutes] 4. Investigation of embedded metadata [05 Minutes] 5. Investigation of emails [05 Minutes] 6. Investigation of log files [05 Minutes] 7. Conclusion and Questions [03 Minutes]" - language: "English" - speaker: "Gajendra Deshpande" - type: talk - python_level: beginner - topic: Security - location: YouTube track2 +# The talks of this edition: what was said, by whom, in which language. A talk +# carries no time and no room, because it is the content and not the slot. +# agenda below is what places it on the grid, and one talk can take more than +# one slot. The id is derived from the title and is the anchor a photo of the +# gallery links to, so it must not change. +talks: + - id: ready-set-go-with-numba + title: "Ready, Set, Go with Numba" + speakers: [ankit-mahato] + type: talk + language: en + topic: "Data Science, ML, DL" + duration_minutes: 15 + description: "The prominent reasons for the wide adoption of Python is the ease of learning, usability and readability coupled with the powerful ecosystem of Python packages. This often makes Python an attractive language for researchers & scholars to undertake computational projects and thesis. The ease of prototyping and tinkering allows for higher number of iterations and customization, leading to an increase in research output. But, a major pain point of using Python is its speed when compared to languages like C++ or FORTRAN which are still widely used in research.

    Developers, when hit by the performance bottleneck of python code, often come across some methods to increase their code performance like using PyMPI, Numpy or CPython. But, the learning curve is steep and APIs get less familiar.

    If learning Python is so easy, why should increasing the performance of Python code be so difficult?

    This talk will address this question and get us up and running with Numba, an open source JIT compiler that translates Python and NumPy code into fast machine code. We will delve into real world exercises which will demonstrate the core concepts, ease and effectiveness of using Numba and how it can be useful in lowering the barrier to achieve code performance in Python." + links: + - type: video + url: "https://www.youtube.com/watch?v=w9cYczex79M" + - id: working-with-text-data-in-pandas + title: "Working with Text Data in Pandas" + speakers: [daniel-mesejo-leon] + type: talk + language: es + topic: "Data Science, ML, DL" + duration_minutes: 15 + description: "I'll will present some tips, tricks and libraries to speed up text processing with pandas." + links: + - type: video + url: "https://www.youtube.com/watch?v=uzjlrbqq26M" + - id: lifebox-a-virtual-ecosystem + title: "Lifebox: a virtual ecosystem" + speakers: [ferran-fabregas] + type: lightning + language: ca + topic: "Data Science, ML, DL" + duration_minutes: 0 + description: "Lifebox is a project about a virtual ecosystem created using Python. Inside the Lifebox you can find two different kind of species, the 'species' and the 'mana'. Each of the 'species' have a set of parameters that defines how they evolve inside the virtual ecosystem, and you can change all the parameter of species in real-time. The goal of the project is to offer the possibility to learn the basic concepts of biology through the experimentation, viewing the consequences of your actions and trying to find the way to balance the ecosystem through changing the Lifebox parameters." + links: + - type: video + url: "https://www.youtube.com/watch?v=Hnr7MH9Pd5s" + - id: transformers-the-all-in-one-tool-for-nlp + title: "Transformers: the all-in-one tool for NLP" + speakers: [julio-martinez] + type: lightning + language: en + topic: "Data Science, ML, DL" + duration_minutes: 0 + description: "NLP has been evolving from classic bag of words to embedding methods. But in 2017 finally a new model that can be used for all kind of NLP tasks emerged: transformers. Let's review its general ideas, and a practical example of its use." + links: + - type: video + url: "https://www.youtube.com/watch?v=4oc0OTkks0k" + - id: a-day-has-only-24-1-hours + title: "A Day Has Only 24±1 Hours" + speakers: [miroslav-sedivy] + type: lightning + language: en + topic: "Python programming" + duration_minutes: 0 + description: "On the last Sunday of October you may get \"one more hour of sleep\" but as well may spend much more time debugging code dealing with the time zones, daylight saving time shifts and datetime stuff in general. Two centuries of short-sighted propaganda and long-term chaos in ten minutes. Maybe that will make you want to avoid time zones in your code altogether!

    El último domingo de octubre puedes obtener \"una hora más de sueño\", pero también puedes pasar mucho más tiempo debugando el código tratando con las zonas horarias, los cambios de horario de verano y las cosas de fecha y hora en general. Dos siglos de propaganda miope y caos a largo plazo en diez minutos. ¡Quizás eso te haga querer evitar las zonas horarias en tu código por completo!" + links: + - type: video + url: "https://www.youtube.com/watch?v=4-OPxy4CLAw" + - id: ho-sento-no-ets-el-meu-tipus + title: "Ho sento, no ets el meu tipus" + title_lang: Catalan + speakers: [carles-barrobes] + type: lightning + language: ca + topic: "Python programming" + duration_minutes: 0 + description: "Type Hints were introduced in Python 3 but you may have never used them, known that they exist, or seen code that uses them. Or you may have seen code with type hints and cringed because it didn't look like the Python you know. In this talk we will demistify type hints and show how they can actually help you find potential bugs." + links: + - type: video + url: "https://www.youtube.com/watch?v=B0YM3XkNkQs" + - id: alexa-te-elijo-a-ti + title: "Alexa, te elijo a ti" + title_lang: Spanish + speakers: [elisabeth-ortega-carrasco] + type: talk + language: es + topic: "IOT" + duration_minutes: 15 + description: "Algunos de nosotros tenemos un aparatito en casa escuchándonos 24/7 que usamos para escuchar música, preguntarle la hora y pedirle un temporizador o un chiste malo. En esta charla os voy a enseñar como programar a Alexa usando Python para que os ayude en vuestras tareas usando dos ejemplos: una skill que nos calculará equivalencias para ayudarnos en las recetas de cocina (entre otras cosas) y otra que nos aconsejará sobre qué tipo de Pokémon elegir para enfrentarnos a un oponente." + links: + - type: video + url: "https://www.youtube.com/watch?v=8UjkfOKh6jA" + - id: network-automation-using-python + title: "Network automation using Python" + speakers: [christian-adell] + type: talk + language: en + topic: "Network automation" + duration_minutes: 15 + description: "I will share the status of network automation using Python, presenting and demoing some popular libraries such as Netmiko, Napalm and Nornir." + links: + - type: video + url: "https://www.youtube.com/watch?v=Se3FmYvn6sM" + - id: retrying-a-better-way + title: "Retrying, a better way" + speakers: [christian-adell] + type: lightning + language: en + topic: "Python programming" + duration_minutes: 0 + description: "Python have a lot of libraries, for multiple purposes, and among them there are a lot of hidden gems, such as the Backoff library (https://github.com/litl/backoff) which will make retrying operations based on exceptions or predicates an easy game.
    Handling retries have never been so simple." + links: + - type: video + url: "https://www.youtube.com/watch?v=kwa58dEhPNY" + - id: antifragile-software-code-that-gains-from-disorder + title: "Antifragile Software: Code that gains from disorder" + speakers: [alvaro-duran-barata] + type: lightning + language: en + topic: "Python programming" + duration_minutes: 0 + description: "Joel Spolsky famously said that you should never rewrite your code from scratch. Still, many organizations see no other way out of their codebases. Why? In this talk we explore the concept of antifragility, and how it can be applied to software engineer to keep your codebase from getting \"rusty\"." + links: + - type: video + url: "https://www.youtube.com/watch?v=S3ebYJxXBRU" + - id: efficiently-share-data-on-a-true-microservices-architecture + title: "Efficiently share data on a true microservices architecture using django-cqrs (CloudBlue sponsored talk)" + speakers: [francesco-faraone] + type: talk + language: en + topic: "Web development, microservices" + duration_minutes: 15 + links: + - type: video + url: "https://www.youtube.com/watch?v=cmi4B41oOd8" + - id: performing-sentiment-analysis-on-video-with-serverless + title: "Performing Sentiment Analysis on Video with Serverless Architectures" + speakers: [eduard-cespedes-borras] + type: talk + language: en + topic: "Data Science, ML, DL" + duration_minutes: 15 + description: "In this talk we will explain how to create video processing pipelines using an event-driven and fully Serverless Architecture in AWS. We will use AWS Chalice, a Python framework from AWS, for managing the serverless Lambda Functions and a range variety of AWS services for the video manipulation like AWS Elastic Transcoder, Amazon Transcribe, Amazon Comprehend. And of course the more common architectural and traditional services like S3, DynamoDB, Gateway, SQS, SNS and SES." + links: + - type: video + url: "https://www.youtube.com/watch?v=v75bTfShH-M" + - id: counting-votes-analyzing-a-large-dataset-with-dask + title: "Counting votes: analyzing a large dataset with Dask" + speakers: [alberto-camara] + type: talk + language: en + topic: "Data Science, ML, DL" + duration_minutes: 15 + description: "We will explain how to switch from Pandas to Dask in order to analyze a large dataset that does not fit into single-machine memory.

    Repository: https://github.com/ber2/pyday2020-counting-votes-with-dask" + links: + - type: video + url: "https://www.youtube.com/watch?v=KOpW86J56CU" + - id: kornia-differentiable-computer-vision-with-pytorch + title: "Kornia: differentiable Computer Vision with Pytorch" + speakers: [edgar-riba] + type: talk + language: en + topic: "Data Science, ML, DL" + duration_minutes: 15 + description: "The talk is an introduction to Kornia which is a library that implements classical Computer Vision algorithms in PyTorch that got a lot of attention within the open source community during the last year. The core of the library is written from scratch using pure PyTorch operators and uses the auto-reverse differentiable engine to allow to the user to plug any function within neural networks with a transparent API for high performance devices such as GPUs and TPUs. During the talk I'll go through the different principle designs and the functionalities found in each of the modules, practical examples, basic usage of the library and more. Information about the project in the website: www.kornia.org" + links: + - type: video + url: "https://www.youtube.com/watch?v=uUwmknHAIhU" + - id: jina-ai-an-open-source-neural-search-framework + title: "JINA AI: An Open Source Neural Search Framework" + speakers: [joan-fontanals-martinez] + type: talk + language: en + topic: "Data Science, ML, DL" + duration_minutes: 15 + description: "What is neural or semantic search? How is it different from traditional symbolic search? Jina AI is an open source framework for AI-powered search." + links: + - type: video + url: "https://www.youtube.com/watch?v=UtK-npeVsH0" + - id: building-my-first-python-iot-device-with-containers-in-20 + title: "Building My First Python IoT Device with Containers (in 20 minutes)" + speakers: [marc-pous] + type: talk + language: en + topic: "IOT" + duration_minutes: 15 + description: "This workshop is designed for developers who are coming from Web development and other technologies into the Internet of Things. This session will guide assistants how to connect an Arm-powered device such as a Raspberry Pi to the Internet with balena and open source tools." + links: + - type: video + url: "https://www.youtube.com/watch?v=nWVJ7HfFC5E" + - id: documentation-driven-development-for-python-web-apis + title: "Documentation-driven development for Python web APIs" + speakers: [jose-haro-peralta] + type: talk + language: en + topic: "Web" + duration_minutes: 15 + description: "In this presentation, I want to show how developers can minimise the risk of API integration failures by using documentation-driven development. Documentation-driven development is an approach where we first write the API documentation, and then we validate the API implementation against the specification. This approach helps us create a more robust software delivery process for our APIs. I'll show useful tools and frameworks, such as Dredd, that can help us automatically generate tests that validate our APIs. " + links: + - type: video + url: "https://www.youtube.com/watch?v=BoaGrcmfVH8" + - id: alice-in-pythonland-object-oriented-programming-in-lewis + title: "Alice in Pythonland: Object oriented programming in Lewis Carroll games" + speakers: [maria-teresa-grifa] + type: talk + language: en + topic: "Python programming" + duration_minutes: 15 + description: "Tutorial regarding object oriented programming in Python. The applications that will be presented are some of the maths games hidden in the book Alice in Wonderland of Lewis Carroll. These games are algorimths pubblished by Lewis Carroll on scientific journals. My contribution would be to explain oop techniques (inheritance,decorators,dataclass, nametuple,...) for developing maths games and use some NLP techniques (i.e., finding the dialogs between charcaters in the books) for presenting the interactions between the playes involved in the game.
    I have been inspired by a repository from Anna-Lena Popkes
    (please see https://github.com/zotroneneis/magical_universe) on working on one programming topic per day. In this way, I have improved my coding skills day by day and I have created the a Wonderland Universe. The idea of coding the games created by Lewis Carroll is related to my maths background and has the intent of explain some joyful algorithms. My goal is to encourage other people to use the same learning technique and challege theiself with custom examples and applications." + links: + - type: video + url: "https://www.youtube.com/watch?v=LvvwLYk9aIo" + - id: investigating-digital-crimes-using-python + title: "Investigating Digital Crimes using Python" + speakers: [gajendra-deshpande] + type: talk + language: en + topic: "Security" + duration_minutes: 15 + description: "A recent study by CheckPoint Research has recorded over 1,50,000 cyber-attacks every week during the COVID-19 pandemic. There has been an increase of 30% in cyber-attacks compared to previous weeks. The pandemic has been the main reason for job loss and pay cuts of people and has led to an increase in cybercrimes. Examples of cyber-attacks include phishing, ransomware, fake news, fake medicine, extortion, and insider frauds. Cyber forensics is a field that deals with the investigation of digital crimes by analyzing, examining, identifying, and recovering digital evidence from electronic devices and producing them in the court of law. Python has a great collection of built-in modules for digital forensics tasks. The talk begins with an introduction to digital crimes, digital forensics, the process of investigation, and the collection of evidence. Next, I will discuss report creation using CSV and Excel reports, investigation of acquisition media using the pyscreenshot module. Finally, I will conclude the talk with the investigation of embedded metadata, emails, and log files. In this talk, I will cover mutagen, mailbox, tqdm, argparser, yara python modules, and utilities which are used for the above-mentioned tasks.

    In this talk, the audience will learn the procedure to be followed while investigating digital crimes and most importantly how to develop their own digital forensic tools using Python. I believe that the attendees will learn about the new exciting field where there are lots of opportunities with respect to their careers. Basic understanding of Python language or any other scripting language will be helpful in understanding the concepts.

    Outline 1. Introduction to digital crimes, digital forensics, the process of investigation, and collection of evidence. [05 Minutes] 2. Report creation using CSV and Excel reports [04 Minutes] 3. Investigation of acquisition media using the pyscreenshot module [03 Minutes] 4. Investigation of embedded metadata [05 Minutes] 5. Investigation of emails [05 Minutes] 6. Investigation of log files [05 Minutes] 7. Conclusion and Questions [03 Minutes]" + links: + - type: video + url: "https://www.youtube.com/watch?v=LAQY4ucheQA" + - id: kahoot-game-and-closing-remarks + title: "Kahoot game and closing remarks" + type: workshop + duration_minutes: 0 - - start_time_slot: 20:30 - end_time_slot: 20:30 - track_length: 2 - color: purple - title: "Kahoot game and closing remarks" - location: Zoom - type: workshop +# The grid, one row per slot of the day, in the order it is printed. A slot +# names the talk it holds, or carries its own label and type when it holds +# none: a break, the group photo, the welcome. The level and the requirements +# sit here and not on the talk, because they are what the slot asks of whoever +# walks into it. A start is always quoted: YAML 1.1 reads an unquoted 9:00 as +# the integer 540. +agenda: + - start: "16:00" + track_length: 2 + room: youtube-track1-and-track2 + type: group + label: "Welcome Session" + speakers: [laura-perez-mayos] + duration_minutes: 0 + links: + - type: video + url: "https://www.youtube.com/watch?v=oLB0eo7tpj0" + - start: "16:15" + track_length: 1 + room: youtube-track1 + talk: ready-set-go-with-numba + python_level: beginner + - start: "16:45" + track_length: 1 + room: youtube-track1 + talk: working-with-text-data-in-pandas + python_level: intermediate + - start: "17:15" + track_length: 1 + room: youtube-track1 + talk: lifebox-a-virtual-ecosystem + python_level: intermediate + - start: "17:30" + track_length: 1 + room: youtube-track1 + talk: transformers-the-all-in-one-tool-for-nlp + python_level: intermediate + - start: "17:45" + track_length: 1 + room: youtube-track1 + talk: a-day-has-only-24-1-hours + python_level: intermediate + - start: "18:00" + track_length: 1 + room: youtube-track1 + talk: ho-sento-no-ets-el-meu-tipus + python_level: intermediate + - start: "16:15" + track_length: 1 + room: youtube-track2 + talk: alexa-te-elijo-a-ti + python_level: beginner + - start: "16:45" + track_length: 1 + room: youtube-track2 + talk: network-automation-using-python + python_level: intermediate + - start: "17:15" + track_length: 1 + room: youtube-track2 + talk: retrying-a-better-way + python_level: beginner + - start: "17:30" + track_length: 1 + room: youtube-track2 + talk: antifragile-software-code-that-gains-from-disorder + python_level: beginner + - start: "17:45" + track_length: 1 + room: youtube-track2 + talk: efficiently-share-data-on-a-true-microservices-architecture + python_level: intermediate + - start: "18:15" + track_length: 2 + type: coffee + label: "Coffee Break" + duration_minutes: 0 + - start: "18:30" + track_length: 1 + room: youtube-track1 + talk: performing-sentiment-analysis-on-video-with-serverless + python_level: intermediate + - start: "19:00" + track_length: 1 + room: youtube-track1 + talk: counting-votes-analyzing-a-large-dataset-with-dask + python_level: intermediate + - start: "19:30" + track_length: 1 + room: youtube-track1 + talk: kornia-differentiable-computer-vision-with-pytorch + python_level: intermediate + - start: "20:00" + track_length: 1 + room: youtube-track1 + talk: jina-ai-an-open-source-neural-search-framework + python_level: beginner + - start: "18:30" + track_length: 1 + room: youtube-track2 + talk: building-my-first-python-iot-device-with-containers-in-20 + python_level: beginner + - start: "19:00" + track_length: 1 + room: youtube-track2 + talk: documentation-driven-development-for-python-web-apis + python_level: beginner + - start: "19:30" + track_length: 1 + room: youtube-track2 + talk: alice-in-pythonland-object-oriented-programming-in-lewis + python_level: beginner + - start: "20:00" + track_length: 1 + room: youtube-track2 + talk: investigating-digital-crimes-using-python + python_level: beginner + - start: "20:30" + track_length: 2 + room: zoom + talk: kahoot-game-and-closing-remarks - +# No photos. This edition was online, so the account posted no photo of a room +# and no photo of a speaker. The one picture it did post was a screen capture of +# the sponsors section of this very page, which printed the sponsors a second +# time, so the gallery is empty rather than padded with the page itself. The +# thread of the day is https://x.com/PyBCN/status/1337808647188066305. --- ## What is PyDay BCN 2020 about? @@ -370,4 +449,3 @@ PyDay BCN 2020 will have different **thematic tracks** --e.g. data science, web ### Sponsor us! -Would you like to sponsor PyDay BCN 2020? Have a look at the [sponsorship brochure](https://bit.ly/pydaybcn-2020-sponsoring)! diff --git a/content/events/pyday_bcn/pyday_bcn_2021.md b/content/events/pyday_bcn/pyday_bcn_2021.md index 781e7a0a5..f482f3831 100644 --- a/content/events/pyday_bcn/pyday_bcn_2021.md +++ b/content/events/pyday_bcn/pyday_bcn_2021.md @@ -1,6 +1,10 @@ --- title: "PyDay BCN (2021)" year: 2021 +# The day of this edition, from the Meetup export, which records it per event. +date: 2021-11-27 +# The venue of this edition, from the Meetup export, which records it per event. +venue: "Canòdrom" description: "Post-pandemic edition!" menu: main: @@ -75,19 +79,9 @@ people_sections: - eloi-puertas-prats - mireia-alvarez-dominguez -previous_editions: - - name: PyDay BCN 2020 - url: /events/pyday_bcn/pyday_bcn_2020/ - - name: PyDay BCN 2019 - url: /events/pyday_bcn/pyday_bcn_2019/ - - name: PyDay BCN 2018 - url: /events/pyday_bcn/pyday_bcn_2018/ - - name: PyDay BCN 2016 - url: /events/pyday_bcn/pyday_bcn_2016/ - spansDuration: 15 numTracks: 4 -eventTimes: [9:00, 9:15, 9:30, 9:45, 10:00, 10:15, 10:30, 10:45, 11:00, 11:15, 11:30, 11:45, 12:00, 12:15, 12:30, 12:45, 13:00, 13:15, 13:30, 13:45, 14:00, 14:15, 14:30, 14:45, 15:00, 15:15, 15:30, 15:45, 16:00, 16:15, 16:30, 16:45, 17:00, 17:15, 17:30, 17:45] +eventTimes: ["9:00", "9:15", "9:30", "9:45", "10:00", "10:15", "10:30", "10:45", "11:00", "11:15", "11:30", "11:45", "12:00", "12:15", "12:30", "12:45", "13:00", "13:15", "13:30", "13:45", "14:00", "14:15", "14:30", "14:45", "15:00", "15:15", "15:30", "15:45", "16:00", "16:15", "16:30", "16:45", "17:00", "17:15", "17:30", "17:45"] legend: - type: workshop - type: talk @@ -97,309 +91,334 @@ legend: - level: advanced - separator: true - type: sponsor -events: - - start_time_slot: 9:00 - end_time_slot: 9:15 - track_length: 4 - color: purple - title: "Registration & Welcome" - speaker: "PyDay BCN 2021 Organising Committee" - type: group - location: Open-air terrace - class: middle - - - speaker: "Sergi Ortiz" - title: "How to create Data apps with Python" - description: "Data products are the future of data. And Data Apps (and AI Apps) are an important chunk of this future. For Python coders there are many frictions to create Data Apps nowadays, we will try to address them all and create a Data App (FE - BE and DevOps) during the hands on session" - start_time_slot: 9:30 - end_time_slot: 10:45 - track_length: 1 - color: green - language: "Spanish" - type: workshop - topic: Data Apps - python_level: intermediate - topic_level: beginner - location: Room Actes - - speaker: "Diego Gonzalez" - sponsor: Preply - title: "Build a chat application that lets you speak multiple languages" - description: "Learn how to build a chat application that can translate messages across multiple languages using only a few technologies (Python among them, of course!)" - start_time_slot: 9:30 - end_time_slot: 10:45 - track_length: 1 - color: orange - language: "English" - type: workshop - topic: Web development - python_level: intermediate - topic_level: intermediate - location: Room Guinardó - - speaker: "Esperanza Buitrago" - title: "Implementing your API with FASTAPI" - description: "Implement your API with FastAPI from scratch and make it run in local." - start_time_slot: 9:30 - end_time_slot: 10:45 - track_length: 1 - color: green - language: "English" - type: workshop - topic: Software Engineering - python_level: beginner - topic_level: beginner - location: Room Gòtica - requirements: "" - - - speaker: "Anton Caceres, Alexandre Savio" - title: "Building the Cloud with Python: getting started with AWS CDK" - description: "With emerging cloud technologies it is just a matter of time until most backends run in serverless or container-based environments. This workshop is showcasing a recently released open-source Cloud Development Kit by Amazon, which lets us control cloud resources just like we control our application logic - in pure Python. - CDK offers high-level abstraction to define AWS resources imperatively as customizable and reusable Python classes. Unfortunately, there are not many tutorials available yet and the documentation is limited. So we will be happy to share with you how to: 1) Break down AWS infrastructure into reusable constructs represented by Python classes; 2) Combine own and public constructs into Stack applications; 3) Deploy CDK apps to AWS cloud" - start_time_slot: 9:30 - end_time_slot: 10:45 - track_length: 1 - color: red - language: "English" - type: workshop - topic: Cloud-native Python applications - python_level: intermediate - topic_level: beginner - location: Room Raval - requirements: "Python 3.8+" - - - start_time_slot: 11:00 - end_time_slot: 11:15 - track_length: 4 - color: purple - title: "Coffee Break" - sponsor: Bling - type: coffee - location: Open-air terrace - class: middle - - - speaker: "Elisabeth Ortega" - title: "Creating cute user interfaces in python with Qt" - description: "Most of us learn to use python as a command line tool, asking information to the users and passing them to the code as arguments. Some of us later moved to Django and related web development tools, to have a better interaction with the user paying the cost of fighting against the web layout in different languages. Few of us faced tkinter to build our first user interfaces with more or less success, but almost none of us were happy with the result of the user interfaces created in pure python.
    In \"Creating cute user interfaces in python with Qt\" I will show you how to enjoy creating user interfaces interactively with some clicks and few lines of code using the PySide6 library with all the Qt potential behind it." - requirements: "PySide6 (https://pypi.org/project/PySide6/)

    Course repo:
    Empty and private until some days before the meeting but it will be this: https://github.com/draentropia/pyside-pyday21" - start_time_slot: 11:30 - end_time_slot: 12:45 - track_length: 1 - color: green - language: "Spanish" - type: workshop - topic: User interfaces - python_level: intermediate - topic_level: beginner - location: Room Actes - - speaker: "Gabriel de Maeztu" - sponsor: IOMED - title: "Vector search engines with Python: from embeddings to similarity search" - description: "I would cover the following topics, providing to anyone familiar with Python an overall idea about embeddings and similarity search in addition to a tutorial with with a use cases:
    " - start_time_slot: 11:30 - end_time_slot: 12:45 - track_length: 1 - color: blue - language: "English" - type: workshop - topic: Data Science - python_level: intermediate - topic_level: intermediate - location: Room Guinardó - - speaker: "Vincent Choubard" - sponsor: Rover - title: "Introduction to Django" - description: "We are going to build a web app using Django to create a pet profile and store it." - start_time_slot: 11:30 - end_time_slot: 12:45 - track_length: 1 - color: orange - language: "English" - type: workshop - topic: Web Development - python_level: beginner - topic_level: beginner - location: Room Gòtica - requirements: "Ideally have python and django installed on your machine by following https://docs.djangoproject.com/en/3.2/intro/install/" - - speaker: "Antonio Molina, Erik Tordera, Pablo Fernández" - sponsor: Qustodio - title: "Microservicios en la vida moderna. Un enfoque python-centrico." - description: "Las arquitecturas distribuidas y los microservicios están en boca de todos. Unos defienden que son la cura para todos los males mientras que otros advierten que la complejidad añadida puede desembocar en frustraciones y malos sueños. En este workshop, proponemos una reflexión sobre arquitecturas distribuidas a través de un ejercicio práctico. Aunque orientado a desarrollos basados en nuestro querido python, proponemos salir de nuestra zona de confort para profundizar juntos en eso que llamamos dev/ops y de cómo los equipos podemos operar nuestros servicios asi como un primer contacto con las herramientas que nos ayudarán a minimizar los riesgos y las complejidades (tales como Helm, MiniKubes, Istio, GRPC, Prometheus, etc). Acompañanos en este rato a pensar y entender algunos de los problemas, soluciones y buenas prácticas en este tipo de arquitecturas." - start_time_slot: 11:30 - end_time_slot: 12:45 - track_length: 1 - color: red - language: "Spanish" - title_lang: Spanish - type: workshop - topic: Architecture - python_level: beginner - topic_level: intermediate - location: Room Raval - - - start_time_slot: 13:00 - end_time_slot: 13:00 - track_length: 4 - color: pink - title: "Group photo" - type: photo - location: Open-air terrace - class: middle - - - start_time_slot: 13:15 - end_time_slot: 13:45 - track_length: 4 - color: purple - title: "Lunch" - type: lunch - location: Open-air terrace - class: middle - - - speaker: "David de la Iglesia Castro" - title: "Making MLOps uncool again" - description: "In this workshop we will learn how to build an \"MLOps workflow\" by extending the power of Git and GitHub. Using only open source tools and without the need of external platfforms or complicated infrastructure.

    We will use [HuggingFace] (https://huggingface.co/) to train a model that automatically adds labels to GitHub issues and we will extend the power of Git with [DVC](https://dvc.org/) and [CML](https://cml.dev/) in order to build a living Data Registry and set up a Continuous Training and Deployment loop for our model." - start_time_slot: 14:00 - end_time_slot: 15:15 - track_length: 1 - color: blue - language: "Spanish" - type: workshop - topic: Data science - python_level: intermediate - topic_level: intermediate - location: Room Actes - requirements: "A browser (preferably Google Chrome)
    Github account." - - speaker: "Jordi Mur" - title: "Causal Data Science workshop" - description: "Causal data science is a hot topic in the business applications of machine learning that go beyond predicting a value to actually deciding the best intervention to take based on such a prediction. We will briefly provide the key concepts and methods of causal inference (the topic of this year's Nobel prize in economics!), and then move on to some hands-on practice with Jupyter notebooks based on business use cases. No prior knowledge of causal inference is required." - requirements: "Bring your own laptop
    Libraries: Jupyter notebooks will use DoWhy: https://microsoft.github.io/dowhy/index.html" - start_time_slot: 14:00 - end_time_slot: 15:15 - track_length: 1 - color: blue - language: "English" - type: workshop - topic: Data science - python_level: intermediate - topic_level: beginner - location: Room Guinardó - - speaker: "Matteo Bruno" - sponsor: Onna - title: "How to beat imposter syndrome: confessions of a developer" - description: "Do you feel like you don’t belong, you don’t deserve what you’ve achieved, everyone in your office is more talented than you? Do you have imposter syndrome… too?

    Impostor syndrome is a psychological pattern in which people doubt their accomplishments or talents and have a persistent internalized fear of being exposed as a \"fraud\".

    Imposter syndrome is common across all industries, but the increasing pressure to be successful in your professional career is taking its toll on employees, affecting more than half workers, including our speaker :)

    After many years working in tech for a lot of companies, (from startups to big corporations) in many business fields, Matteo discovered a way to overcome self-doubt and turn this weird feeling into a booster for greater achievements.

    He’d like to share all his experience with everyone, making you understand that feeling inadequate is quite common and that there are ways to approach it in a proactive way." - start_time_slot: 14:00 - end_time_slot: 15:15 - track_length: 1 - color: yellow - language: "English" - type: talk - location: Room Gòtica - - speaker: "Albert Franzi Cros" - sponsor: Typeform - title: "Building a DAG Factory" - description: "At Typeform there are several teams that interact with data. Machine learning engineers, data scientists, data analysts, insights teams. None of them should have to worry about Airflow operators, upstream tasks, downstream tasks and all the million ways that writing Airflow DAGs by hand makes you miserable.

    This is where the Data Platform teams comes to save the day and create Chester, a DAG factory, powered by a set of API connectors handled by us. Other teams only need to worry about where the data comes from and where it goes to, and write some YAML that describes it. All the rest is handled by Chester's superpowers." - start_time_slot: 14:00 - end_time_slot: 14:30 - track_length: 1 - color: red - language: "English" - type: talk - location: Room Raval - - speaker: "Alejandro Nicolás" - sponsor: Hybrid Theory - title: "Burnout Paradise: buenas prácticas para evitar el burnout en desarrollo" - description: "Durante la conferencia se tratará la programación desde el punto de vista psicológico, tanto a nivel individual como a nivel de equipo. Se presentarán los posibles efectos de una rutina de trabajo mal llevada, se evaluarán las causas y se propondrán sistemas o hábitos que afectarían positivamente al bienestar de un desarrollador en un mundo en el que el trabajo en remoto se ha implantado de manera inesperada en nuestro día a día." - start_time_slot: 14:45 - end_time_slot: 15:15 - track_length: 1 - color: yellow - language: "Spanish" - title_lang: Spanish - type: talk - location: Room Raval - - start_time_slot: 15:30 - end_time_slot: 15:45 - track_length: 4 - color: purple - title: "Coffee Break" - sponsor: CloudBlue - type: coffee - location: Open-air terrace - class: middle +# The rooms of this edition, in the order the grid first names them. A room is +# a record with an id because the colour of a block now comes from it: the +# template gives every room of an event one colour of the agenda palette and +# keeps it for the whole day. See partials/agenda_entry.html. +rooms: + - id: open-air-terrace + name: "Open-air terrace" + - id: room-actes + name: "Room Actes" + - id: room-guinardo + name: "Room Guinardó" + - id: room-gotica + name: "Room Gòtica" + - id: room-raval + name: "Room Raval" + - id: all-rooms + name: "All rooms" - - speaker: "Marc Pous" - title: "Build a Machine Learning IoT Device running Python" - description: "Learn on this workshop how to create a fleet of edge AI devices in a simple way using Python, Edge Impulse and balena.

    During the workshop attendants will learn how to create a Bird Watcher using a Raspberry Pi and a USB camera (or Pi Camera). Using Python we will get the feed from the camera, apply machine learning models from Edge Impulse and send telegram messages. Finally we will be able to deploy a fleet of Bird Watchers in a simple way all around the world.

    The goal of this session is to introduce IoT and AI topics to Python developers. Topics such as the Internet of Things, Artificial Intelligence and citizen science are consistently united in a single project. " - requirements: "Bring your own Raspberry Pi (3 or 4) with camera (USB or Pi Camera) with your laptop to try to deploy together a ML edge device." - start_time_slot: 16:00 - end_time_slot: 17:15 - track_length: 1 - color: blue - language: "English" - type: workshop - topic: IOT, ML, Edge AI - python_level: intermediate - topic_level: beginner - location: Room Actes - - speaker: "Mariana Meireles, Laysa Uchoa" - title: "The moons of Jupyter: widgets ecosystem" - description: "Jupyter has much more to offer than an interface for notebooks, the widgets ecosystem can leverage your research, dashboards, data visualization and much more!
    In the moons of Jupyter workshop we aim to give an overview of the standard widget library as well the expanded ecosystem created by contributors." - start_time_slot: 16:00 - end_time_slot: 17:15 - track_length: 1 - color: blue - language: "English" - type: workshop - topic: Data science, scientific computing - python_level: intermediate - topic_level: beginner - location: Room Guinardó - requirements: "https://github.com/jupyter-widgets/tutorial#readme

    But a link to a Binder project where you can run the workshop without installing anything on your machine will also be provided. It’s recommendable to install requirements locally, though." - - speaker: "Vivek Sharma" - title: "Signal Processing - From Neurons to Mars!" - description: "What we see around us with time as its one dimension is a Signal! and to comprehend we just need to analyze it. This workshop is all about the last pit. We'll begin by examining some brain impulses, then move on to our environment, and lastly, Mars! Let's see what's going on over there.
    You'll learn how to make a frequency-specific filter, how to use the Fourier transform, and how to visualize data.
    Don't forget to bring your sense of wonder." - start_time_slot: 16:00 - end_time_slot: 17:15 - track_length: 1 - color: blue - language: "English" - type: workshop - topic: Signal Processing - python_level: beginner - topic_level: beginner - location: Room Gòtica - - speaker: "Christian Adell" - title: "Keeping sync between datasets with Diffsync" - description: "Working with multiple data models (and data inventories) while keeping a common state is a problem that involves a diff calculation first and then a synchronisation in one direction or another, sometimes solving the mapping between the data models.
    Diffsync (https://github.com/networktocode/diffsync) library helps with this common problem by providing an easy data modeling and structured CRUD operations to update the state." - requirements: "Try to run Nautobot Lab (https://github.com/nautobot/nautobot-lab) in Docker, as we'll use it as support during the workshop." - start_time_slot: 16:00 - end_time_slot: 17:15 - track_length: 1 - color: green - language: "English" - type: workshop - topic: Data set synchronisation - python_level: intermediate - topic_level: beginner - location: Room Raval +# The talks of this edition: what was said, by whom, in which language. A talk +# carries no time and no room, because it is the content and not the slot. +# agenda below is what places it on the grid, and one talk can take more than +# one slot. The id is derived from the title and is the anchor a photo of the +# gallery links to, so it must not change. +talks: + - id: how-to-create-data-apps-with-python + title: "How to create Data apps with Python" + speakers: [sergi-ortiz] + type: workshop + language: es + topic: "Data Apps" + duration_minutes: 75 + description: "Data products are the future of data. And Data Apps (and AI Apps) are an important chunk of this future. For Python coders there are many frictions to create Data Apps nowadays, we will try to address them all and create a Data App (FE - BE and DevOps) during the hands on session" + - id: build-a-chat-application-that-lets-you-speak-multiple + title: "Build a chat application that lets you speak multiple languages" + speakers: [diego-gonzalez] + type: workshop + language: en + topic: "Web development" + duration_minutes: 75 + description: "Learn how to build a chat application that can translate messages across multiple languages using only a few technologies (Python among them, of course!)" + - id: implementing-your-api-with-fastapi + title: "Implementing your API with FASTAPI" + speakers: [esperanza-buitrago] + type: workshop + language: en + topic: "Software Engineering" + duration_minutes: 75 + description: "Implement your API with FastAPI from scratch and make it run in local." + - id: building-the-cloud-with-python-getting-started-with-aws-cdk + title: "Building the Cloud with Python: getting started with AWS CDK" + speakers: [anton-caceres, alexandre-savio] + type: workshop + language: en + topic: "Cloud-native Python applications" + duration_minutes: 75 + description: "With emerging cloud technologies it is just a matter of time until most backends run in serverless or container-based environments. This workshop is showcasing a recently released open-source Cloud Development Kit by Amazon, which lets us control cloud resources just like we control our application logic - in pure Python. CDK offers high-level abstraction to define AWS resources imperatively as customizable and reusable Python classes. Unfortunately, there are not many tutorials available yet and the documentation is limited. So we will be happy to share with you how to: 1) Break down AWS infrastructure into reusable constructs represented by Python classes; 2) Combine own and public constructs into Stack applications; 3) Deploy CDK apps to AWS cloud" + - id: creating-cute-user-interfaces-in-python-with-qt + title: "Creating cute user interfaces in python with Qt" + speakers: [elisabeth-ortega-carrasco] + type: workshop + language: es + topic: "User interfaces" + duration_minutes: 75 + description: "Most of us learn to use python as a command line tool, asking information to the users and passing them to the code as arguments. Some of us later moved to Django and related web development tools, to have a better interaction with the user paying the cost of fighting against the web layout in different languages. Few of us faced tkinter to build our first user interfaces with more or less success, but almost none of us were happy with the result of the user interfaces created in pure python.
    In \"Creating cute user interfaces in python with Qt\" I will show you how to enjoy creating user interfaces interactively with some clicks and few lines of code using the PySide6 library with all the Qt potential behind it." + - id: vector-search-engines-with-python-from-embeddings-to + title: "Vector search engines with Python: from embeddings to similarity search" + speakers: [gabriel-de-maeztu] + type: workshop + language: en + topic: "Data Science" + duration_minutes: 75 + description: "I would cover the following topics, providing to anyone familiar with Python an overall idea about embeddings and similarity search in addition to a tutorial with with a use cases:
    " + - id: introduction-to-django + title: "Introduction to Django" + speakers: [vincent-choubard] + type: workshop + language: en + topic: "Web Development" + duration_minutes: 75 + description: "We are going to build a web app using Django to create a pet profile and store it." + - id: microservicios-en-la-vida-moderna-un-enfoque-python-centrico + title: "Microservicios en la vida moderna. Un enfoque python-centrico." + title_lang: Spanish + speakers: [antonio-molina, erik-tordera, pablo-fernandez] + type: workshop + language: es + topic: "Architecture" + duration_minutes: 75 + description: "Las arquitecturas distribuidas y los microservicios están en boca de todos. Unos defienden que son la cura para todos los males mientras que otros advierten que la complejidad añadida puede desembocar en frustraciones y malos sueños. En este workshop, proponemos una reflexión sobre arquitecturas distribuidas a través de un ejercicio práctico. Aunque orientado a desarrollos basados en nuestro querido python, proponemos salir de nuestra zona de confort para profundizar juntos en eso que llamamos dev/ops y de cómo los equipos podemos operar nuestros servicios asi como un primer contacto con las herramientas que nos ayudarán a minimizar los riesgos y las complejidades (tales como Helm, MiniKubes, Istio, GRPC, Prometheus, etc). Acompañanos en este rato a pensar y entender algunos de los problemas, soluciones y buenas prácticas en este tipo de arquitecturas." + - id: making-mlops-uncool-again + title: "Making MLOps uncool again" + speakers: [david-de-la-iglesia-castro] + type: workshop + language: es + topic: "Data science" + duration_minutes: 75 + description: "In this workshop we will learn how to build an \"MLOps workflow\" by extending the power of Git and GitHub. Using only open source tools and without the need of external platfforms or complicated infrastructure.

    We will use [HuggingFace] (https://huggingface.co/) to train a model that automatically adds labels to GitHub issues and we will extend the power of Git with [DVC](https://dvc.org/) and [CML](https://cml.dev/) in order to build a living Data Registry and set up a Continuous Training and Deployment loop for our model." + - id: causal-data-science-workshop + title: "Causal Data Science workshop" + speakers: [jordi-mur] + type: workshop + language: en + topic: "Data science" + duration_minutes: 75 + description: "Causal data science is a hot topic in the business applications of machine learning that go beyond predicting a value to actually deciding the best intervention to take based on such a prediction. We will briefly provide the key concepts and methods of causal inference (the topic of this year's Nobel prize in economics!), and then move on to some hands-on practice with Jupyter notebooks based on business use cases. No prior knowledge of causal inference is required." + - id: how-to-beat-imposter-syndrome-confessions-of-a-developer + title: "How to beat imposter syndrome: confessions of a developer" + speakers: [matteo-bruno] + type: talk + language: en + duration_minutes: 75 + description: "Do you feel like you don't belong, you don't deserve what you've achieved, everyone in your office is more talented than you? Do you have imposter syndrome... too?

    Impostor syndrome is a psychological pattern in which people doubt their accomplishments or talents and have a persistent internalized fear of being exposed as a \"fraud\".

    Imposter syndrome is common across all industries, but the increasing pressure to be successful in your professional career is taking its toll on employees, affecting more than half workers, including our speaker :)

    After many years working in tech for a lot of companies, (from startups to big corporations) in many business fields, Matteo discovered a way to overcome self-doubt and turn this weird feeling into a booster for greater achievements.

    He'd like to share all his experience with everyone, making you understand that feeling inadequate is quite common and that there are ways to approach it in a proactive way." + - id: building-a-dag-factory + title: "Building a DAG Factory" + speakers: [albert-franzi-cros] + type: talk + language: en + duration_minutes: 30 + description: "At Typeform there are several teams that interact with data. Machine learning engineers, data scientists, data analysts, insights teams. None of them should have to worry about Airflow operators, upstream tasks, downstream tasks and all the million ways that writing Airflow DAGs by hand makes you miserable.

    This is where the Data Platform teams comes to save the day and create Chester, a DAG factory, powered by a set of API connectors handled by us. Other teams only need to worry about where the data comes from and where it goes to, and write some YAML that describes it. All the rest is handled by Chester's superpowers." + - id: burnout-paradise-buenas-practicas-para-evitar-el-burnout-en + title: "Burnout Paradise: buenas prácticas para evitar el burnout en desarrollo" + title_lang: Spanish + speakers: [alejandro-nicolas] + type: talk + language: es + duration_minutes: 30 + description: "Durante la conferencia se tratará la programación desde el punto de vista psicológico, tanto a nivel individual como a nivel de equipo. Se presentarán los posibles efectos de una rutina de trabajo mal llevada, se evaluarán las causas y se propondrán sistemas o hábitos que afectarían positivamente al bienestar de un desarrollador en un mundo en el que el trabajo en remoto se ha implantado de manera inesperada en nuestro día a día." + - id: build-a-machine-learning-iot-device-running-python + title: "Build a Machine Learning IoT Device running Python" + speakers: [marc-pous] + type: workshop + language: en + topic: "IOT, ML, Edge AI" + duration_minutes: 75 + description: "Learn on this workshop how to create a fleet of edge AI devices in a simple way using Python, Edge Impulse and balena.

    During the workshop attendants will learn how to create a Bird Watcher using a Raspberry Pi and a USB camera (or Pi Camera). Using Python we will get the feed from the camera, apply machine learning models from Edge Impulse and send telegram messages. Finally we will be able to deploy a fleet of Bird Watchers in a simple way all around the world.

    The goal of this session is to introduce IoT and AI topics to Python developers. Topics such as the Internet of Things, Artificial Intelligence and citizen science are consistently united in a single project. " + - id: the-moons-of-jupyter-widgets-ecosystem + title: "The moons of Jupyter: widgets ecosystem" + speakers: [mariana-meireles, laysa-uchoa] + type: workshop + language: en + topic: "Data science, scientific computing" + duration_minutes: 75 + description: "Jupyter has much more to offer than an interface for notebooks, the widgets ecosystem can leverage your research, dashboards, data visualization and much more!
    In the moons of Jupyter workshop we aim to give an overview of the standard widget library as well the expanded ecosystem created by contributors." + - id: signal-processing-from-neurons-to-mars + title: "Signal Processing - From Neurons to Mars!" + speakers: [vivek-sharma] + type: workshop + language: en + topic: "Signal Processing" + duration_minutes: 75 + description: "What we see around us with time as its one dimension is a Signal! and to comprehend we just need to analyze it. This workshop is all about the last pit. We'll begin by examining some brain impulses, then move on to our environment, and lastly, Mars! Let's see what's going on over there.
    You'll learn how to make a frequency-specific filter, how to use the Fourier transform, and how to visualize data.
    Don't forget to bring your sense of wonder." + - id: keeping-sync-between-datasets-with-diffsync + title: "Keeping sync between datasets with Diffsync" + speakers: [christian-adell] + type: workshop + language: en + topic: "Data set synchronisation" + duration_minutes: 75 + description: "Working with multiple data models (and data inventories) while keeping a common state is a problem that involves a diff calculation first and then a synchronisation in one direction or another, sometimes solving the mapping between the data models.
    Diffsync (https://github.com/networktocode/diffsync) library helps with this common problem by providing an easy data modeling and structured CRUD operations to update the state." - - start_time_slot: 17:30 - end_time_slot: 17:45 - track_length: 4 - color: purple - title: "Closing session & Kahoot" - speaker: "PyDay BCN 2021 Organising Committee" - type: group - location: All rooms - class: middle +# The grid, one row per slot of the day, in the order it is printed. A slot +# names the talk it holds, or carries its own label and type when it holds +# none: a break, the group photo, the welcome. The level and the requirements +# sit here and not on the talk, because they are what the slot asks of whoever +# walks into it. A start is always quoted: YAML 1.1 reads an unquoted 9:00 as +# the integer 540. +agenda: + - start: "9:00" + credited_as: "PyDay BCN 2021 Organising Committee" + track_length: 4 + room: open-air-terrace + type: group + label: "Registration & Welcome" + duration_minutes: 15 + - start: "9:30" + track_length: 1 + room: room-actes + talk: how-to-create-data-apps-with-python + python_level: intermediate + topic_level: beginner + - start: "9:30" + track_length: 1 + room: room-guinardo + talk: build-a-chat-application-that-lets-you-speak-multiple + python_level: intermediate + topic_level: intermediate + sponsor: "Preply" + - start: "9:30" + track_length: 1 + room: room-gotica + talk: implementing-your-api-with-fastapi + python_level: beginner + topic_level: beginner + requirements: "" + - start: "9:30" + track_length: 1 + room: room-raval + talk: building-the-cloud-with-python-getting-started-with-aws-cdk + python_level: intermediate + topic_level: beginner + requirements: "Python 3.8+" + - start: "11:00" + track_length: 4 + room: open-air-terrace + type: coffee + label: "Coffee Break" + duration_minutes: 15 + sponsor: "Bling" + - start: "11:30" + track_length: 1 + room: room-actes + talk: creating-cute-user-interfaces-in-python-with-qt + python_level: intermediate + topic_level: beginner + requirements: "PySide6 (https://pypi.org/project/PySide6/)

    Course repo:
    Empty and private until some days before the meeting but it will be this: https://github.com/draentropia/pyside-pyday21" + - start: "11:30" + track_length: 1 + room: room-guinardo + talk: vector-search-engines-with-python-from-embeddings-to + python_level: intermediate + topic_level: intermediate + sponsor: "IOMED" + - start: "11:30" + track_length: 1 + room: room-gotica + talk: introduction-to-django + python_level: beginner + topic_level: beginner + requirements: "Ideally have python and django installed on your machine by following https://docs.djangoproject.com/en/3.2/intro/install/" + sponsor: "Rover" + - start: "11:30" + track_length: 1 + room: room-raval + talk: microservicios-en-la-vida-moderna-un-enfoque-python-centrico + python_level: beginner + topic_level: intermediate + sponsor: "Qustodio" + - start: "13:00" + track_length: 4 + room: open-air-terrace + type: photo + label: "Group photo" + duration_minutes: 0 + - start: "13:15" + track_length: 4 + room: open-air-terrace + type: lunch + label: "Lunch" + duration_minutes: 30 + - start: "14:00" + track_length: 1 + room: room-actes + talk: making-mlops-uncool-again + python_level: intermediate + topic_level: intermediate + requirements: "A browser (preferably Google Chrome)
    Github account." + - start: "14:00" + track_length: 1 + room: room-guinardo + talk: causal-data-science-workshop + python_level: intermediate + topic_level: beginner + requirements: "Bring your own laptop
    Libraries: Jupyter notebooks will use DoWhy: https://microsoft.github.io/dowhy/index.html" + - start: "14:00" + track_length: 1 + room: room-gotica + talk: how-to-beat-imposter-syndrome-confessions-of-a-developer + sponsor: "Onna" + - start: "14:00" + track_length: 1 + room: room-raval + talk: building-a-dag-factory + sponsor: "Typeform" + - start: "14:45" + track_length: 1 + room: room-raval + talk: burnout-paradise-buenas-practicas-para-evitar-el-burnout-en + sponsor: "Hybrid Theory" + - start: "15:30" + track_length: 4 + room: open-air-terrace + type: coffee + label: "Coffee Break" + duration_minutes: 15 + sponsor: "CloudBlue" + - start: "16:00" + track_length: 1 + room: room-actes + talk: build-a-machine-learning-iot-device-running-python + python_level: intermediate + topic_level: beginner + requirements: "Bring your own Raspberry Pi (3 or 4) with camera (USB or Pi Camera) with your laptop to try to deploy together a ML edge device." + - start: "16:00" + track_length: 1 + room: room-guinardo + talk: the-moons-of-jupyter-widgets-ecosystem + python_level: intermediate + topic_level: beginner + requirements: "https://github.com/jupyter-widgets/tutorial#readme

    But a link to a Binder project where you can run the workshop without installing anything on your machine will also be provided. It’s recommendable to install requirements locally, though." + - start: "16:00" + track_length: 1 + room: room-gotica + talk: signal-processing-from-neurons-to-mars + python_level: beginner + topic_level: beginner + - start: "16:00" + track_length: 1 + room: room-raval + talk: keeping-sync-between-datasets-with-diffsync + python_level: intermediate + topic_level: beginner + requirements: "Try to run Nautobot Lab (https://github.com/nautobot/nautobot-lab) in Docker, as we'll use it as support during the workshop." + - start: "17:30" + credited_as: "PyDay BCN 2021 Organising Committee" + track_length: 4 + room: all-rooms + type: group + label: "Closing session & Kahoot" + duration_minutes: 15 - --- ## About PyDay BCN 2021 We are organizing the **the fifth edition** of PyDay in Barcelona! -PyDay is an event full of FREE **python-related workshops** and activities for the Python community, organized once per year. Over the [last four editions](#previous_editions_section), PyDay has become a great opportunity to share our love for Python and engage users, companies and newcomers into it! +PyDay is an event full of FREE **python-related workshops** and activities for the Python community, organized once per year. Over the last four editions, PyDay has become a great opportunity to share our love for Python and engage users, companies and newcomers into it! ### When and where diff --git a/content/events/pyday_bcn/pyday_bcn_2022.md b/content/events/pyday_bcn/pyday_bcn_2022.md index f32965db8..3fe2d0d86 100644 --- a/content/events/pyday_bcn/pyday_bcn_2022.md +++ b/content/events/pyday_bcn/pyday_bcn_2022.md @@ -1,6 +1,10 @@ --- title: "PyDay BCN (2022)" year: 2022 +# The day of this edition, from the Meetup export, which records it per event. +date: 2022-11-26 +# The venue of this edition, from the Meetup export, which records it per event. +venue: "Canòdrom" description: "For the community, by the community!" menu: main: @@ -25,7 +29,6 @@ free_text_sections: id: registration content: "General registration will open on Monday 21st of November, at 9AM through Eventbrite." -sponsors_text: "Would you like to sponsor this event? Please contact us at pydaybcn2022@googlegroups.com

    " sponsor_levels: - sponsors_per_line: 2 sponsors: [canodrom] @@ -72,58 +75,46 @@ people_sections: - xavi-francisco-gilabert - mireia-alvarez-dominguez -previous_editions: - - name: PyDay BCN 2021 - url: /events/pyday_bcn/pyday_bcn_2021/ - - name: PyDay BCN 2020 - url: /events/pyday_bcn/pyday_bcn_2020/ - - name: PyDay BCN 2019 - url: /events/pyday_bcn/pyday_bcn_2019/ - - name: PyDay BCN 2018 - url: /events/pyday_bcn/pyday_bcn_2018/ - - name: PyDay BCN 2016 - url: /events/pyday_bcn/pyday_bcn_2016/ - spansDuration: 15 numTracks: 3 eventTimes: [ - 9:00, - 9:15, - 9:30, - 9:45, - 10:00, - 10:15, - 10:30, - 10:45, - 11:00, - 11:15, - 11:30, - 11:45, - 12:00, - 12:15, - 12:30, - 12:45, - 13:00, - 13:15, - 13:30, - 13:45, - 14:00, - 14:15, - 14:30, - 14:45, - 15:00, - 15:15, - 15:30, - 15:45, - 16:00, - 16:15, - 16:30, - 16:45, - 17:00, - 17:15, - 17:30, - 17:45, + "9:00", + "9:15", + "9:30", + "9:45", + "10:00", + "10:15", + "10:30", + "10:45", + "11:00", + "11:15", + "11:30", + "11:45", + "12:00", + "12:15", + "12:30", + "12:45", + "13:00", + "13:15", + "13:30", + "13:45", + "14:00", + "14:15", + "14:30", + "14:45", + "15:00", + "15:15", + "15:30", + "15:45", + "16:00", + "16:15", + "16:30", + "16:45", + "17:00", + "17:15", + "17:30", + "17:45", ] legend: - type: workshop @@ -132,291 +123,267 @@ legend: - level: beginner - level: intermediate - level: advanced -events: - - start_time_slot: 9:00 - end_time_slot: 9:15 - track_length: 3 - color: purple - title: "Registration & Welcome" - speaker: "PyDay BCN 2022 Organising Committee" - type: group - location: Sala d'actes Ada Lovelace - class: middle - - speaker: "Gema Parreño" +# The rooms of this edition, in the order the grid first names them. A room is +# a record with an id because the colour of a block now comes from it: the +# template gives every room of an event one colour of the agenda palette and +# keeps it for the whole day. See partials/agenda_entry.html. +rooms: + - id: sala-dactes-ada-lovelace + name: "Sala d'actes Ada Lovelace" + - id: sala-hedy-lamarr-margarita-salas + name: "Sala Hedy Lamarr / Margarita Salas" + - id: sala-hipatia-dalexandria + name: "Sala Hipàtia d'Alexandria" + - id: open-air-terrace + name: "Open-air terrace" + +# The talks of this edition: what was said, by whom, in which language. A talk +# carries no time and no room, because it is the content and not the slot. +# agenda below is what places it on the grid, and one talk can take more than +# one slot. The id is derived from the title and is the anchor a photo of the +# gallery links to, so it must not change. +talks: + - id: machine-learning-en-produccion-experimentos-con-versionado title: "Machine Learning en producción: Experimentos con versionado de datos con DVC y VSCode" + title_lang: Spanish + speakers: [gema-parreno] + type: workshop + language: es + topic: "Data Science and MLOPS" + duration_minutes: 75 description: "El workshop utiliza herramientas OpenSource de DVC y su extension para VSCode para preparar los experimentos de Data Science para su versionado y puesta en producción. Utilizamos el IDE de VS Code y lo transformamos en una plataforma de experimentación de Machine Learning.

    A través de un caso de uso real, veremos las posibilidades que ofrece el implementar practicas de Software a los proyectos de Data Science y herramientas para versionar los experimentos de Machine Learning.

    Objetivo : ayudar a los data scientist a salir de los notebooks y preparar la experimentación y puesta en producción de manera un poco mas robusta ." - start_time_slot: 9:30 - end_time_slot: 10:45 - track_length: 1 - color: red + - id: friendly-fuzzing-for-your-python-saas-applications + title: "Friendly fuzzing for your Python SaaS applications" + speakers: [pavel-lonkin] + type: workshop + language: en + topic: "Security, software development" + duration_minutes: 75 + description: "Tired of bugs? Security issues in your Python code? Fuzzing approach can help you to decrease number of issues received from your production environment using only few lines of code! In this topic you are going to:
    " + - id: how-many-ants-can-carry-an-elephant-pushing-the-limits-of + title: "How many ants can carry an elephant? Pushing the limits of AWS Chalice" + speakers: [kemalcan-bora] + type: workshop + language: en + topic: "Serverless apps" + duration_minutes: 75 + description: "Chalice is a framework for writing serverless apps in python. It allows you to quickly create and deploy applications that use AWS Lambda. Serverless applications generally have some limits like RAM, storage, and CPU.. and the main purpose is simple functions like login, registration, etc. So what if we want to create an ML application? How can we handle our limits? don't panic young Skywalker. We have to push our limits and we'll install NumPy, and Sci-kit learn libraries and our app will roam freely in the cloud in peace." + - id: build-air-quality-sensors-with-python-and-choose-your-own + title: "Build Air Quality Sensors with Python and choose your own adventure!" + speakers: [marc-pous] type: workshop - language: "Spanish" + language: en + topic: "Internet of Things and Air quality sensors" + duration_minutes: 75 + description: "The goal of this hands-on workshop is to build an Air Quality sensor (with Raspberry Pis) using Python to get the data from the sensors. From here you are going to choose what happens next. Would you like to store the data on a database? Visualize it? Send it to a Cloud? or to a Telegram bot? You choose your own adventure! Everything in the edge using containers, python and balena." + - id: build-a-full-stack-app-with-flask-and-vue + title: "Build a full-stack app with Flask and Vue" + speakers: [eva-martin-del-pico] + type: workshop + language: en + topic: "Web apps" + duration_minutes: 75 + description: "In this workshop we will build a complete web application using Flask Python micro framework in the backend and Vue.js JS framework in the frontend. Both Flask and Vue are easy to learn, yet flexible and powerful, making them a great choice for those who want to create modern and robust applications - and do it fast." + - id: python-as-a-gis-tools-howtos-and-gotchas + title: "Python as a GIS: Tools, howtos and gotchas" + speakers: [biel-stela-ballester] + type: workshop + language: en + topic: "Python as a GIS" + duration_minutes: 75 + description: "Use python as a GIS with Rasterio, Xarray and GeoPandas" + - id: building-an-end-to-end-open-source-modern-data-platform-for + title: "Building an End-to-End Open-Source Modern Data Platform for Biomedical Data" + speakers: [alberto-labarga] + type: workshop + language: [en, es] + topic: "Data engineering" + duration_minutes: 75 + description: "A detailed guide to help you navigate the modern data stack and build your own platform using open-source technologies.

    Data engineering has experiences enormous growth in the last years, allowing for rapid progress and innovation as more people than ever are thinking about data resources and how to better leverage them.

    In this talk we will explore the related technologies and build from scratch an end-to-end modern data platform for the analysis of medical data. We will be using open-source tools and libraries, including python-based DBT, Apache Airflow and Querybook.

    The platform will consist of the following components:" + - id: cuando-los-precios-suben-scrapy + title: "Cuando los precios suben: Scrapy" title_lang: Spanish + speakers: [jimena-escobar-bermudez] + type: workshop + language: es + topic: "Scrapy" + duration_minutes: 75 + description: "Criptomonedas, la guerra en Ucrania, la pandemia, la falta de componentes y toda la serie de catastróficas desdichas que estamos sufriendo nos ha llevado a un punto en el que el precio de todo ha subido. En este taller aprenderemos a usar Scrapy para conseguir descargar, almacenar y comparar los precios de los productos que queramos." + - id: inside-out-or-how-to-get-your-app-observable + title: "Inside out. Or how to get your app observable" + speakers: [antonio-molina] + type: workshop + language: es + topic: "Observability" + duration_minutes: 75 + description: "Observability is key in distributed systems and it is gaining importance within the industry. So it is important to understand the concepts behind the idea of observabiity and why is important to us, as developers, to make our developments \"observable\". Being able to create software that is easy to debug while systems scales and complexity grows will level up us as developers and will make our clients and employers far happier. This is what this workshop is about. From a brief theory of what observability is to some practices and best practices." + - id: lightning-talks-session-1-coffee + title: "Lightning talks (session 1) & coffee" + type: talk + duration_minutes: 15 + description: "

    Lightning talks

    \nHow to beat your friends in fantasy football
    Alex Molas

    Have you ever wondered how to win your friends in a football fantasy league? In this talk I will show how to use python to get the best performant team by using web scraping, operations research, and machine learning!

    \nMeasuring media bias
    Luis Ignacio Menéndez

    We'd like to talk about a research project (working progress) trying to measure media bias in Spanish TV news. For this, we employ techniques of speech recognition, speaker diarization and text analysis. This project is carried on by PhD students of the Economics department at Universitat Autònoma de Barcelona.

    \nAstropy 5.X: astronomical tools for everybody
    Francesc Vilardell Sallés

    Astropy is now a mature python library with over 34.000 commits on Github and hundreds of contributors. Astropy is still little known beyond the astronomical community, but offers several powerful tools that are useful to all python developers. In this lightning talk I will present some of these tools.

    \nFighting climate change the Python way
    Rafael Giménez

    The Digital Team at Cetaqua works in bringing state of the art AI (Computer Vision, Reinforcement Learning) to one of the most crucial issues of our time: water and environmental management. The talk aims to briefly showcase how we use Python for that.

    \nPyCamp España
    Johanna Sanchez

    Invitación a la comunidad para participar de un evento diferente

    \nPyLadies España y PyCon ES 2023
    Johanna Sanchez

    Invitación a la comunidad para participar en conferencia y comunidades

    " + - id: using-numba-effectively-today + title: "Using Numba Effectively Today" + speakers: [cheuk-ting-ho] + type: workshop + language: en + topic: "Data Science" + duration_minutes: 75 + description: "Numba is syntactically easy to use - just add a decorator, but actually very hard to use effectively. The reason being it is difficult to understand what Numba does to speed up the numeric operation. This workshop will provide all the knowledge that you need to make Numba works for you." + - id: making-sense-of-your-data-platform-with-openmetadata + title: "Making sense of your Data Platform with OpenMetadata" + speakers: [pere-miquel-brull] + type: workshop + language: en + topic: "Data Management" + duration_minutes: 75 + description: "OpenMetadata is an open-source project (https://open-metadata.org/) that is building a metadata standard and a centralized and shared metadata platform on top of it. In this workshop, we will explore the tool, how it works, and bit by bit we will dive into its implementation and design." + - id: tdd-coding-dojo + title: "TDD Coding Dojo" + speakers: [ana-eliza-barbosa] + type: workshop + language: en + topic: "Test driven development" + duration_minutes: 75 + description: "Nowadays software products are becoming so complex that is unimaginable that one software engineer would develop it alone without any sort of automated testing, so let's get together to practice Test Driven Development while pair programming with the other workshop participants. We will solve some code challenges together, under a bit of friendly time pressure and changing development hats every 5 minutes. If you are interested in knowing how it all looks like then join the workshop!" + - id: lightning-talks-session-2-closing-session-kahoot + title: "Lightning talks (session 2) + closing session & Kahoot" + type: talk + duration_minutes: 15 + description: "

    Lightning talks

    \nIntenciones ganadoras: Cómo implementar la arquitectura de un chatbot basado en intenciones
    Nadal Llabrés Belmar

    En esta charla explicaremos los aspectos fundamentales de cómo diseñar e implementar un chatbot basado en el reconocimiento de intenciones desde el punto de vista de la ingeniería de Software. Mediante un caso de uso, exploramos cómo diseñar e implementar una arquitectura que nos permita integrar y gestionar la base de conocimiento que requiere el bot para su aprendizaje, integrar un motor de reconocimiento de intenciones que sea capaz de entender a los usuarios a partir de un entendimiento contextual de una conversación e integrar un sistema de respuestas en distintos formatos (voz, texto, imágenes, vídeos).

    \nSatellite super-resolution and 3d scenes
    Biel Stela

    Match the resolution of Landsat imagery to fine grained Sentinel using Deep Learning, then create dynamic evolving scenes with blender.

    \ntrrex: Efficient keyword extraction with regex
    Daniel Mesejo

    In this talk I'm going to introduce the trrex package, for performing efficient keyword extraction with regular expressions. Additionally I'll show how to integrate it with pandas for text cleaning, how to use it with spacy to build a gazetteer and how to perform fuzzy matching with the regex library.

    \nTransactions
    Christian Barra

    The goal of the LT is to give to the audience a brief overview about DB transactions, why there are important and how to leverage them for some specific use cases where they play a critical role.

    \nOptimal binning using Python
    Guillermo Navas Palencia

    Presentation of the OptBinning library, a Python library to perform optimal binning and scorecard modelling. Description of main features, current roadmap and applications.

    " + +# The grid, one row per slot of the day, in the order it is printed. A slot +# names the talk it holds, or carries its own label and type when it holds +# none: a break, the group photo, the welcome. The level and the requirements +# sit here and not on the talk, because they are what the slot asks of whoever +# walks into it. A start is always quoted: YAML 1.1 reads an unquoted 9:00 as +# the integer 540. +agenda: + - start: "9:00" + credited_as: "PyDay BCN 2022 Organising Committee" + track_length: 3 + room: sala-dactes-ada-lovelace + type: group + label: "Registration & Welcome" + duration_minutes: 15 + - start: "9:30" + track_length: 1 + room: sala-dactes-ada-lovelace + talk: machine-learning-en-produccion-experimentos-con-versionado python_level: intermediate topic_level: intermediate requirements: "" - topic: "Data Science and MLOPS" - location: Sala d'actes Ada Lovelace - - speaker: "Pavel Lonkin" - title: "Friendly fuzzing for your Python SaaS applications" - description: "Tired of bugs? Security issues in your Python code? Fuzzing approach can help you to decrease number of issues received from your production environment using only few lines of code! In this topic you are going to:
    " - start_time_slot: 9:30 - end_time_slot: 10:45 + - start: "9:30" track_length: 1 - color: yellow - type: workshop - language: "English" + room: sala-hedy-lamarr-margarita-salas + talk: friendly-fuzzing-for-your-python-saas-applications python_level: intermediate topic_level: beginner requirements: "