We are unbelievably proud to announce that, after years of hard work, we finally have a 1.0 version of Crystal!
For a long, long time, it was accepted that programming languages couldn’t be simultaneously programmer-friendly and efficient. In 2011, we set out to prove that assumption was wrong. Crystal is the result of that experiment, and the source of much joy, fun and growth for everyone involved.
With thousands of contributions from people worldwide, it was finally possible to reach the level of maturity required for a 1.0 milestone.
And that calls for celebration!
The Crystal Conference will be livestreamed, to make sure that the entire global community that has formed around Crystal can attend.
Programme
Pushing boundaries
A talk on pushing the boundaries of language design.
Crystal 1.0 is out – What's next?
videocam Recording slideshow Slides
Taking a sneak peak at what the Crystal team has been producing, what we're working on, and at what is to come next.
Crystal on demand
Crystal on demand: Crystal is not yet on demand. Let's make Crystal on demand!
How to write efficient network applications
While developing a new advanced message queue system, and several other network servers and clients Carl has gathered experience on do's and don'ts to squeeze out as much performance as possible.
Crystal in the Cloud: A cloud-native journey
videocam Recording slideshow Slides
As part of an initiative to build a testing framework and suite of tests that help end-users to check usage of cloud native practices we chose Crystal as the language for the project. In this talk we will give an overview of the project and the networking+telecommunication domain we are working in. We will review the implementation of the CNF Test Suite. We will also discuss how we see Crystal has good alignment with cloud native and K8s development, such speeding up development velocity, reducing risk, and life-cycle dependency management and why we chose it.
From 0 to Web site – a journey of a Crystal newbie
videocam Recording slideshow Slides
Gabor has been programming for more than 35 years. 25 years in Perl. 10 years in Python. 30 days in Crystal. This talk will explore how a person with a lot of experience in other languages, but 0 background in Crystal, can learn the language and build a web application in a month.
Saving lives with Crystal
In this talk, I will explore how Crystal contributes to genome diagnostics at Invitae, Diploid’s parent company, and why they chose it to build Moon, the first system that goes from genetic data to provisional diagnosis in minutes, saving patients hours or even days. We show how Crystal's syntax, type system and performance offer a unique edge compared to other, more popular programming languages.
Start 'Crystalizing' Your Security Testing
A talk and after that, a hands-on workshop to get you up and scanning for security vulnerabilities. Intro to security testing automation and how you can achieve this. What DAST (Dynamic Application Security Testing) actually means and how it works. Fork the repo, sign up for a free scanning account and scan a CrystalLang vulnerable application. Discuss the results from the scanner, and how to fix some of what we found. How to integrate NexPloit scanning as part of your specs.
Native GUI development using HTML-CSS-JS
A talk about a project on which I have been working for more than 4-5 months. It is a GTK based shard that takes a custom dialect of HTML and translates it to native widgets. These widgets are linked together using the Duktape JavaScript engine. One could compile the entire project down to a single binary, giving incredible reload speeds from HTML to native GTK widgets.
Learn to Love HTML and Embrace the Lucky Way
This talk expands upon the most-viewed LuckyCast I've ever created, about how, within a few days of working with the Lucky framework, I became as productive and confident in my markup as I was in the rest of my codebase. Hopefully, it will encourage any Crystal developers who are still writing web applications in other large frameworks to give Crystal (and Lucky) a chance!
First steps and future directions of the Crystal bioinformatics ecosystem
In this talk, we are going to discuss how the design principles behind Crystal make it an ideal language for the broad field of bioinformatics, from its simplicity and productivity to its performance, stressing out that a self-hosted language with these characteristics have the potential to become lingua franca for the discipline.
Chipmunks and Unicorns
videocam Recording slideshow Slides
Creating a new language and new community in OSS is hard. Sometimes you want to be helpful to newcomers, but *how* you say things may end up making things worse. "Chipmunks and Unicorns" may not mean anything to the person asking for help, and this talk explores those mishaps around communication in the onboarding of newcomers.
Machine Learning with MXNet.cr
MXNet is an Apache Software Foundation framework for machine learning/deep learning. MXNet.cr is bindings to the low-level MXNet library and a port/rewrite of the Gluon deep learning framework from Python to Crystal. This talk will include a brief introduction to deep learning, a short overview of the Gluon framework and lessons learned doing the port, and a demonstration using MXNet.cr to solve some simple classification problems.
Axentro – Building a blockchain in Crystal
The highs, lows, obstacles and successes of building a blockchain platform from scratch in Crystal.
Artistic Crystal
videocam Recording slideshow Slides
A run down of different ways to make art with Crystal. Includes things like sound (via SunVox), graphics (via Celestine and StumpyBMP), pen plotters, and other fun things.
Crafting simulations in Crystal
In this talk, we will explore how you can use the Quartz shard for constructing simulations using a discrete-event abstraction in a bottom-up fashion. The modularity of the formalism it relies on helps you define models able to capture complex dynamic systems.
Crysterm – building console apps with Crystal
A brief introduction to Crysterm, a toolkit for building console apps with Crystal. The talk will cover basics of final app development as well as introduce Crysterm's structure & code to attract more developers & contributors.
Why I Choose Crystal for Science
I would really like to promote the idea that object-oriented design principles are under-utilized in the sciences. I believe that Crystal really strikes that perfect balance that the sciences need today between dynamic and performant. It's a shame that too few scientists are taught to reason about code abstractly in the same way as mathematical formulas but I think Crystal can change that.
Performance Evaluation of Crystal
This talk aims to show performance comparisons of Crystal with Ruby, C and Go, by using different example programs that use specific parts used in real world applications, like iterative and recursive implementations of the Fibonacci sequence, reading and writing files, listening to sockets, as well as calling a method written in C.
Crystal clear bitfield messaging – binary communication in Crystal
I've had to do a lot of work during the last 5 years in decoding binary communication on vehicles. Despite the json driven development world we live in, a lot of messaging is still packed bit by bit for efficiency over slow buses, reliability in harsh conditions, or just because much of the world is still built on protocols from 35 years ago.
Building a 'billion dollar' startup with Crystal and Lucky
Bruce Perens has been building a web startup for the past year using the Lucky Framework and the Crystal Language. And as you can tell from the title of this talk he's not aiming low! Bruce will talk about his experience and how close Crystal and Lucky are to becoming the new sweethearts of the startup venture capital communities. He'll also talk about Open Source and how it's changed since he first announced it in 1987!
A proposal to deal with long running resumable tasks
Having to stop long running tasks and losing all the progress so far is a source of pain. Let's see how we can build some abstraction and tooling around it. What nice features waiting to be discovered? What would be a nice API for crystal? Let's try to figure that out.
Crystal For Rubyists – How to migrate from Ruby to Crystal 1.0
A talk about my experience transitioning from Ruby to Crystal and also my experience migrating the most advanced Ruby toolkit for handling attachments, Shrine, to Crystal.
Dynamic Programming with Crystal
Many Crystal programmers are familiar with Ruby, and while there is some overlap in the dynamic tools available between the two languages, dynamic programming in Crystal is significantly different from Ruby. We will explore how dynamic programming in Crystal works, and explore details about how to do real, practical dynamic programming with Crystal's toolkit.
Porting features from Ruby to Crystal for Speed!
In this talk I'll explain the reason I chose Crystal to improve the performance of loading CSV files into Flatbase.io. I'll cover my initial experience with Crystal as a Ruby developer, compare the previous Ruby implementation to the new one in Crystal, and show how much faster the new implementation is.
Pharo: A live programming experience everywhere
Pharo is a pure object-oriented programming language with a powerful development environment, focused on simplicity and immediate feedback. It is a live-programming environment with an improved edit-compile-test workflow, and it includes an interactive debugger that allows us to modify code at run-time, a rich set of extensible inspectors to observe the state of our application, and code management tools that improve the code exploration experience.
Embracing Ruby and Building on the Shoulders of Giants
Coming to Crystal through the Lucky framework, I sorely missed the massive ecosystem I’d left behind with Ruby and Rails. Specifically, the ability to quickly add and remove functionality from my apps. This talk attempts to bring down the “Ruby vs Crystal” wall, by demonstrating how easily a problem in our community was solved by leveraging existing community tools in another language.
Wyvern – Security by Design
The goal of the Wyvern programming language is to help programmers cleanly express and enforce design as an integral part of programming. The talk will show how Wyvern accomplishes this with a capability-safe object model that expresses design constraints constructively, a strong system of types and effects to enforce abstractions at both component and object scales, and an extensible syntax that can express designs in a variety of domains while preserving important security and modularity properties.
Reaching 200k req/s on a single core with io_uring
io_uring is a new Linux IO interface that's all about doing IO without system calls and expensive context switches. This presentation discusses how Crystal can implement and benefit from it to more than double its IO performance. Here you will see some implementation details, some interesting benchmarks against other languages, and the road ahead.
How to build powerful reactive web apps with Crystal and Svelte
An introduction to building powerful, reactive, component-based (and ridiculously fast) web applications using Crystal and Svelte. I’ll demonstrate some live examples and explore how Crystal-powered web applications of the future might work. This is a beginner-focused talk that will learn heavily on live coding and visual demonstration.
Macros in Practice
Macro is perhaps the most powerful feature in Crystal, the least documented, and the most complex topic in the language. I will explore the organic development of macro usage in the Crystal community, especially as demonstrated in some of the most successful shards (web frameworks, ORMs, serializers). Extrapolated common macro patterns and idioms with corresponding examples (in the standard library and shards) will be analyzed extensively.
Programming Languages and the Unexpected
In this fireside chat, Jack Thorne will interview Bruce Tate, author of Seven Languages in Seven Weeks and founder of Groxio. Together, they will explore the joy of learning programming languages and Bruce's programming journey, including his move from Java to Ruby and the languages that shaped his development as a programmer and author. Then, they'll shift to the exploration of the Crystal programming language. Along the way, they'll discuss several of the delightful surprises found in the Crystal language and community.
Time
The conference took place on Thursday, 8 July 2021, from 12:30 pm to 9:30 pm UTC.
Code of Conduct
Purpose
At the Crystal 1.0 Conference, we aim to be inclusive to the largest number of participants, with the most varied and diverse backgrounds possible. As such, we are committed to providing a friendly, safe and welcoming environment for all, regardless of gender, sexual orientation, ability, ethnicity, socioeconomic status, and religion (or lack thereof).
We invite all those who participate in the Crystal 1.0 Conference to help us create safe and positive experiences for everyone.
Expected behavior
Intentional, positive action is essential to avoid replicating within our conference community the many forms of inequality that exist in greater society. For this reason, we outline in this Code of Conduct expected behaviour as well as prohibited behavior.
The following behaviors are expected and requested of all participants:
- Participate in an authentic and active way. In doing so, you contribute to the health and longevity of this conference community.
- Exercise consideration and respect in your speech and actions.
- Attempt collaboration before conflict.
- Refrain from demeaning, discriminatory, or harassing behavior and speech.
- Be mindful of your fellow participants.
Unacceptable behavior
The following behaviors are considered harassment and are unacceptable within our conference community:
- Violence, threats of violence and incitement of violence towards any individual.
- Derogatory comments related to gender, gender identity and expression, sexual orientation, disability, mental illness, neuro(a)typicality, physical appearance, body size, race, religion, or socio-economic status.
- Gratuitous or off-topic sexual images or behavior, sexualised comments or jokes.
- Posting or threatening to post other people’s personally identifying information (“doxing”).
- Deliberate misgendering or use of “dead” or rejected names.
- Inappropriate photography or recording.
- Deliberate intimidation or stalking.
- Sustained disruption of talks and presentations.
- Advocating for, or encouraging, any of the above behavior.
Consequences of unacceptable behavior
Unacceptable behavior from any conference attendees, including speakers, will not be tolerated.
Anyone asked to stop unacceptable behavior is expected to comply immediately.
If a conference attendee or speaker engages in unacceptable behavior, the conference organisers may take any action they deem appropriate, up to and including a temporary ban or permanent expulsion from the conference without warning.
Reporting guidelines
If you are subject to or witness unacceptable behavior, or have any other concerns, please notify the organiser as soon as possible by messaging @CrystalLanguage in private, on Twitter, or reaching out to crystal@manas.tech
If you feel you have been falsely or unfairly accused of violating this Code of Conduct, you should notify the organiser as soon as possible by messaging @CrystalLanguage in private, on Twitter, or reaching out to crystal@manas.tech, with a concise description of your grievance.
Scope
We expect all conference participants to abide by this Code of Conduct in all conference online venues, e.g. chat, breakout rooms, as well as in all one-on-one communications pertaining to the Crystal 1.0 Conference.
Attribution
This Code of Conduct was adapted from the #causeascene CoC.