BEGIN:VCALENDAR VERSION:2.0 PRODID:-//Pentabarf//Schedule 0.3//EN CALSCALE:GREGORIAN METHOD:PUBLISH X-WR-CALDESC;VALUE=TEXT:Nim Programming Language devroom X-WR-CALNAME;VALUE=TEXT:Nim Programming Language devroom X-WR-TIMEZONE;VALUE=TEXT:Europe/Brussels BEGIN:VEVENT METHOD:PUBLISH UID:12796@FOSDEM22@fosdem.org TZID:Europe-Brussels DTSTART:20220205T123000 DTEND:20220205T130500 SUMMARY:Nim concurrency DESCRIPTION:
This is a talk about Nim's concurrency mechanisms, how the old things worked, how the current things work and what the future holds.
CLASS:PUBLIC STATUS:CONFIRMED CATEGORIES:Nim Programming Language URL:https:/fosdem.org/2022/schedule/2022/schedule/event/nim_concurrency/ LOCATION:D.nim ATTENDEE;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL;CN="Andreas Rumpf (Araq)":invalid:nomail END:VEVENT BEGIN:VEVENT METHOD:PUBLISH UID:12844@FOSDEM22@fosdem.org TZID:Europe-Brussels DTSTART:20220205T130500 DTEND:20220205T134000 SUMMARY:Next generation micro-controller programming DESCRIPTION:This talk builds on my previous talks about micro-controller programming in Nim, and my talk on writing a keyboard firmware from scratch in Nim. It outlines how a Nim ecosystem for microcontrollers can be built with zero-cost abstractions which means that the resulting code is almost exactly the same size as pure C code (no Arduino). All this while keeping an interface which is much nicer than anything you'd find in C, maybe even better than that of high-level microprocessor coding frameworks like MicroPython and TinyGo.
CLASS:PUBLIC STATUS:CONFIRMED CATEGORIES:Nim Programming Language URL:https:/fosdem.org/2022/schedule/2022/schedule/event/nim_ngmicrocontrollers/ LOCATION:D.nim ATTENDEE;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL;CN="Peter Munch-Ellingsen":invalid:nomail END:VEVENT BEGIN:VEVENT METHOD:PUBLISH UID:12538@FOSDEM22@fosdem.org TZID:Europe-Brussels DTSTART:20220205T134000 DTEND:20220205T142000 SUMMARY:LibVF.IO: vGPU & SR-IOV on Consumer GPUs using Nim DESCRIPTION:I'd like to showcase LibVF.IO's new LIME Runtime feature (Lime Is Mediated Emulation) and do a deep dive on open source vGPU technology in general.
CLASS:PUBLIC STATUS:CONFIRMED CATEGORIES:Nim Programming Language URL:https:/fosdem.org/2022/schedule/2022/schedule/event/nim_libvfio/ LOCATION:D.nim ATTENDEE;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL;CN="Arthur Rasmusson":invalid:nomail END:VEVENT BEGIN:VEVENT METHOD:PUBLISH UID:12839@FOSDEM22@fosdem.org TZID:Europe-Brussels DTSTART:20220205T142000 DTEND:20220205T150000 SUMMARY:Polymorph: a compile time approach to entity-component-systems in Nim DESCRIPTION:The entity-component-system pattern (ECS) is popular in game development for its ability to model complex dynamic simulations with mechanical sympathy, in an environment where microseconds matter.
The pattern is focused on run time composition. Entities are mutable sets of component data types, and systems run for entities with specific sets of components. Many ECS frameworks are oriented around components or entities, and systems use run time queries or filters to match their component data requirements against the live state.
In this talk, a system oriented ECS is presented which removes all run time work for systems by storing execution state in the systems themselves. Changing an entity's components leverages Nim's static typing and powerful AST macros to precalculate affected systems and generate pared down system state changes.
The result is statically defined and intrinsically optimised to the user's system/component design, allowing efficient embedded event loops through to complex interactive simulations.
CLASS:PUBLIC STATUS:CONFIRMED CATEGORIES:Nim Programming Language URL:https:/fosdem.org/2022/schedule/2022/schedule/event/nim_polymorph/ LOCATION:D.nim ATTENDEE;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL;CN="Ryan Lipscombe":invalid:nomail END:VEVENT BEGIN:VEVENT METHOD:PUBLISH UID:12849@FOSDEM22@fosdem.org TZID:Europe-Brussels DTSTART:20220205T150000 DTEND:20220205T154500 SUMMARY:Potato Zombies DESCRIPTION:Enu is a 3D live coding environment that can be used for education, exploration, and light game development. It uses a simple, logo-style Nim DSL, and aims to be accessible to as many people as possible, even those who may not yet be able to read or type. It's still fairly immature, but will eventually be suitable for implementing simple multiplayer 3D games.
In this presentation, Enu's creator will walk through creating a simple 3D game with his 6 year old son using Enu 0.2.
CLASS:PUBLIC STATUS:CONFIRMED CATEGORIES:Nim Programming Language URL:https:/fosdem.org/2022/schedule/2022/schedule/event/nim_potatozombies/ LOCATION:D.nim ATTENDEE;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL;CN="Scott Wadden":invalid:nomail END:VEVENT BEGIN:VEVENT METHOD:PUBLISH UID:12840@FOSDEM22@fosdem.org TZID:Europe-Brussels DTSTART:20220205T154500 DTEND:20220205T163000 SUMMARY:Pararules DESCRIPTION:Reactive programming has become commonplace in many kinds of software, while others, including games, have been slow to adopt it. There is an idea stretching back to the 70s that enables reactive programming in an extremely general way: rules engines. This talk will demonstrate pararules, a breakthrough rules engine for Nim. It will demonstrate how games and other software can define their entire logic as a series of independent rules, and how it decouples your data much like (but more powerful than) an entity component system. It will show why this kind of library is only practical to implement in a language with a Lisp-like macro system such as Nim's.
CLASS:PUBLIC STATUS:CONFIRMED CATEGORIES:Nim Programming Language URL:https:/fosdem.org/2022/schedule/2022/schedule/event/nim_pararules/ LOCATION:D.nim ATTENDEE;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL;CN="Zach Oakes":invalid:nomail END:VEVENT BEGIN:VEVENT METHOD:PUBLISH UID:12770@FOSDEM22@fosdem.org TZID:Europe-Brussels DTSTART:20220205T163000 DTEND:20220205T170000 SUMMARY:HPC from Python to Nim DESCRIPTION:Numpy is considered the go-to library for fast performant python scientifc computing, as it is a heavily optimized scientific computing library written in C. But is it really that fast (spoiler: yes, but not when used with python)? In this talk, I will be covering a real-world example in the domain of genetics, and demonstrating how I was able to out-perform numpy code running on my intel-7700k machine with a raspberry pi running code from the Nim programming language!
I will also be providing optimization tips for speeding up your code, with a focus on comparing python with the Nim programming language.
The talk can be roughly divided into the following sections:
Part 1 (32 min) - Introduction to myself. Describing a computationally expensive problem that I have experienced when working with Python.- My background is in data science and biology- Biologists tend to work with large datasets- One common problem we face is preprocessing of large amounts of data. A common technique used here using distance calculations- Why I decided to learn a different languagePart 2 (1 min) - High level introduction to Nim- Nim is a statically compiled programming language- Etc...Part 3 (10 min) - Going through step-by-step on how to write performance optimal code with Nim. Describing common performance pitfalls that Python users may not be aware of.- Inlining- Using the type system to your advantage- Taking advantage of domain knowledge- Multi-threading (openmp)- Bounds checking- Compiler flags- Mathematical and algorithmic optimizationsPart 4 (3 min) - Benchmarks and closing statement- Show benchmark comparing the naive python numpy implementation with the highly optimized Nim one- Top tips to keep in mind when writing high performance code.
Please note: the purpose of this talk isn't to be an exploration of some new state-of-the-art way of doing performance optimization or some relatively unknown optimization techniques. This is a general introduction for people hoping to use Nim for HPC that are coming from Python. Lots of emphasis will be put comparing the two languages.
CLASS:PUBLIC STATUS:CONFIRMED CATEGORIES:Nim Programming Language URL:https:/fosdem.org/2022/schedule/2022/schedule/event/nim_hpcfrompythontonim/ LOCATION:D.nim ATTENDEE;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL;CN="Ayman Al Baz":invalid:nomail END:VEVENT BEGIN:VEVENT METHOD:PUBLISH UID:12500@FOSDEM22@fosdem.org TZID:Europe-Brussels DTSTART:20220205T170000 DTEND:20220205T174000 SUMMARY:Nim Metaprogramming in the real world DESCRIPTION:Metaprogramming in Nim is very powerful. But why would you use it? How is it used in the real world? We will explore the "power levels": starting from generics, continuing to templates and finally arriving at macros.
We will first look at generics usage in VMath (Vector Math Library) and Jsony (JSON Parsing Library). Then we will continue on to templates and how they are used in VMath and Windy. Finally we will look macros, the top of the "power levels", and how they are used in Shady (a Nim to GLSL compiler) and Genny (Generates bindings for Nim libraries).
CLASS:PUBLIC STATUS:CONFIRMED CATEGORIES:Nim Programming Language URL:https:/fosdem.org/2022/schedule/2022/schedule/event/nim_metaprogramming/ LOCATION:D.nim ATTENDEE;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL;CN="Andre von Houck":invalid:nomail END:VEVENT END:VCALENDAR