1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
|
<!-- Automatically generated by emacsconf-publish-after-page -->
<div class="transcript transcript-mainVideo"><a name="julia-mainVideo-transcript"></a><h1>Transcript</h1>
[[!template text="""Hello, I'm very excited to tell you""" start="00:00:00.000" video="mainVideo-julia" id="subtitle"]]
[[!template text="""about shared philosophies""" start="00:00:02.360" video="mainVideo-julia" id="subtitle"]]
[[!template text="""between the Julia programming language and Emacs.""" start="00:00:03.680" video="mainVideo-julia" id="subtitle"]]
[[!template text="""While Julia and Emacs might look like""" start="00:00:06.480" video="mainVideo-julia" id="subtitle"]]
[[!template text="""different pieces of software,""" start="00:00:08.680" video="mainVideo-julia" id="subtitle"]]
[[!template text="""I think there is profound commonalities between the two.""" start="00:00:10.280" video="mainVideo-julia" id="subtitle"]]
[[!template text="""Let's start by introducing Julia.""" start="00:00:13.440" video="mainVideo-julia" id="subtitle"]]
[[!template text="""Julia is a high-level dynamic programming language.""" start="00:00:16.360" video="mainVideo-julia" id="subtitle"]]
[[!template text="""Julia is free and open source software""" start="00:00:19.720" video="mainVideo-julia" id="subtitle"]]
[[!template text="""and is used primarily for scientific computing.""" start="00:00:21.680" video="mainVideo-julia" id="subtitle"]]
[[!template text="""The reason Julia is used for scientific computing""" start="00:00:24.640" video="mainVideo-julia" id="subtitle"]]
[[!template text="""is that while Julia is high level""" start="00:00:27.040" video="mainVideo-julia" id="subtitle"]]
[[!template text="""and has a syntax that looks like Python or MATLAB,""" start="00:00:29.680" video="mainVideo-julia" id="subtitle"]]
[[!template text="""Julia can be high performance.""" start="00:00:32.560" video="mainVideo-julia" id="subtitle"]]
[[!template text="""I use it to develop climate models""" start="00:00:34.560" video="mainVideo-julia" id="subtitle"]]
[[!template text="""that run on hundreds of GPUs.""" start="00:00:36.520" video="mainVideo-julia" id="subtitle"]]
[[!template text="""Models that are traditionally developed with C, C++, or Fortran.""" start="00:00:38.480" video="mainVideo-julia" id="subtitle"]]
[[!template text="""But how is this possible?""" start="00:00:43.400" video="mainVideo-julia" id="subtitle"]]
[[!template text="""How can Julia be high performance""" start="00:00:44.760" video="mainVideo-julia" id="subtitle"]]
[[!template text="""but also high level at the same time?""" start="00:00:46.800" video="mainVideo-julia" id="subtitle"]]
[[!template text="""What makes Julia, Julia?""" start="00:00:48.800" video="mainVideo-julia" id="subtitle"]]
[[!template text="""Well, what makes Julia, Julia""" start="00:00:50.425" video="mainVideo-julia" id="subtitle"]]
[[!template text="""is the idea of multiple dispatch.""" start="00:00:52.470" video="mainVideo-julia" id="subtitle"]]
[[!template text="""Multiple dispatch is the concept where a function call is resolved""" start="00:00:54.720" video="mainVideo-julia" id="subtitle"]]
[[!template text="""by looking at the types of every single argument involved.""" start="00:00:59.000" video="mainVideo-julia" id="subtitle"]]
[[!template text="""So, let's explore this with this example.""" start="00:01:02.360" video="mainVideo-julia" id="subtitle"]]
[[!template text="""Here, I define a function add that takes two objects""" start="00:01:04.960" video="mainVideo-julia" id="subtitle"]]
[[!template text="""and sums them together.""" start="00:01:07.720" video="mainVideo-julia" id="subtitle"]]
[[!template text="""And I call add with two different types.""" start="00:01:09.160" video="mainVideo-julia" id="subtitle"]]
[[!template text="""First with just integers and second with floats.""" start="00:01:11.880" video="mainVideo-julia" id="subtitle"]]
[[!template text="""So, let's look at what this produces.""" start="00:01:14.640" video="mainVideo-julia" id="subtitle"]]
[[!template text="""Here is the output of add in Julia.""" start="00:01:17.560" video="mainVideo-julia" id="subtitle"]]
[[!template text="""So, first we have add, a function with one method.""" start="00:01:20.440" video="mainVideo-julia" id="subtitle"]]
[[!template text="""I'm going to explain this in a second.""" start="00:01:23.280" video="mainVideo-julia" id="subtitle"]]
[[!template text="""And then we have our return values 12 and 12.0.""" start="00:01:24.840" video="mainVideo-julia" id="subtitle"]]
[[!template text="""What we cannot see here is that""" start="00:01:28.720" video="mainVideo-julia" id="subtitle"]]
[[!template text="""Julia has specialized code""" start="00:01:30.800" video="mainVideo-julia" id="subtitle"]]
[[!template text="""for the two different function calls.""" start="00:01:33.440" video="mainVideo-julia" id="subtitle"]]
[[!template text="""For integers and for floating points.""" start="00:01:35.120" video="mainVideo-julia" id="subtitle"]]
[[!template text="""Let's make this more explicit by specifically providing""" start="00:01:38.360" video="mainVideo-julia" id="subtitle"]]
[[!template text="""a new method for the case with floating point.""" start="00:01:42.240" video="mainVideo-julia" id="subtitle"]]
[[!template text="""So here, now I have an add function""" start="00:01:45.080" video="mainVideo-julia" id="subtitle"]]
[[!template text="""specifically for floating point. Instead of taking""" start="00:01:47.600" video="mainVideo-julia" id="subtitle"]]
[[!template text="""A + B, this returns A exponent B. Let's call this.""" start="00:01:50.120" video="mainVideo-julia" id="subtitle"]]
[[!template text="""And what we can see here is that""" start="00:01:54.760" video="mainVideo-julia" id="subtitle"]]
[[!template text="""now we have two methods.""" start="00:01:56.800" video="mainVideo-julia" id="subtitle"]]
[[!template text="""So, we add a new method to the same function.""" start="00:01:58.320" video="mainVideo-julia" id="subtitle"]]
[[!template text="""This is a method that is""" start="00:02:00.560" video="mainVideo-julia" id="subtitle"]]
[[!template text="""specifically for floating points.""" start="00:02:01.640" video="mainVideo-julia" id="subtitle"]]
[[!template text="""And instead of having the value 12, we have 100.""" start="00:02:03.680" video="mainVideo-julia" id="subtitle"]]
[[!template text="""And this is where the trick lies.""" start="00:02:06.960" video="mainVideo-julia" id="subtitle"]]
[[!template text="""Julia compiles the most, um, specialized version""" start="00:02:09.040" video="mainVideo-julia" id="subtitle"]]
[[!template text="""that can be compiled. So, a version with integers,""" start="00:02:13.880" video="mainVideo-julia" id="subtitle"]]
[[!template text="""a version with floats. And in this,""" start="00:02:16.840" video="mainVideo-julia" id="subtitle"]]
[[!template text="""compiling is an actual compilation with LLVM""" start="00:02:19.200" video="mainVideo-julia" id="subtitle"]]
[[!template text="""with optimization and so on.""" start="00:02:22.680" video="mainVideo-julia" id="subtitle"]]
[[!template text="""This is not just ahead of time compilation.""" start="00:02:24.480" video="mainVideo-julia" id="subtitle"]]
[[!template text="""Soon as the Julia knows the type,""" start="00:02:27.440" video="mainVideo-julia" id="subtitle"]]
[[!template text="""a function is compiled if it's not compiled already""" start="00:02:30.720" video="mainVideo-julia" id="subtitle"]]
[[!template text="""and then it's used.""" start="00:02:33.720" video="mainVideo-julia" id="subtitle"]]
[[!template text="""When types are stable and well inferred,""" start="00:02:35.080" video="mainVideo-julia" id="subtitle"]]
[[!template text="""this can lead to code that is as performant""" start="00:02:37.160" video="mainVideo-julia" id="subtitle"]]
[[!template text="""or comparable to C and Fortran.""" start="00:02:40.080" video="mainVideo-julia" id="subtitle"]]
[[!template text="""So, this is what makes Julia, Julia.""" start="00:02:42.160" video="mainVideo-julia" id="subtitle"]]
[[!template text="""Multiple dispatch with just ahead of time compilation""" start="00:02:45.160" video="mainVideo-julia" id="subtitle"]]
[[!template text="""of highly efficient code.""" start="00:02:48.440" video="mainVideo-julia" id="subtitle"]]
[[!template text="""So now, what makes Emacs, Emacs?""" start="00:02:49.720" video="mainVideo-julia" id="subtitle"]]
[[!template text="""Well, in my opinion, what makes Emacs, Emacs""" start="00:02:53.440" video="mainVideo-julia" id="subtitle"]]
[[!template text="""is interactivity, extensibility, and community.""" start="00:02:56.680" video="mainVideo-julia" id="subtitle"]]
[[!template text="""And I claim that Julia has the same three.""" start="00:03:01.160" video="mainVideo-julia" id="subtitle"]]
[[!template text="""Interactivity, extensibility, and community""" start="00:03:06.200" video="mainVideo-julia" id="subtitle"]]
[[!template text="""are three key pillars for Julia.""" start="00:03:09.080" video="mainVideo-julia" id="subtitle"]]
[[!template text="""More specifically, Julia encourages a""" start="00:03:11.840" video="mainVideo-julia" id="subtitle"]]
[[!template text="""REPL-driven, introspective, interactive workflow.""" start="00:03:14.600" video="mainVideo-julia" id="subtitle"]]
[[!template text="""It's largely open to extension and modification""" start="00:03:17.080" video="mainVideo-julia" id="subtitle"]]
[[!template text="""to the point that most of Julia is written in Julia.""" start="00:03:19.880" video="mainVideo-julia" id="subtitle"]]
[[!template text="""And Julia has a thriving and welcoming community""" start="00:03:23.560" video="mainVideo-julia" id="subtitle"]]
[[!template text="""with lots of packages. So, let me showcase""" start="00:03:25.960" video="mainVideo-julia" id="subtitle"]]
[[!template text="""a little bit of this REPL-driven, introspective,""" start="00:03:28.800" video="mainVideo-julia" id="subtitle"]]
[[!template text="""interactive workflow with the hope that commonalities""" start="00:03:31.080" video="mainVideo-julia" id="subtitle"]]
[[!template text="""with Emacs will emerge naturally.""" start="00:03:34.360" video="mainVideo-julia" id="subtitle"]]
[[!template text="""So, let's start by opening a Julia REPL.""" start="00:03:36.760" video="mainVideo-julia" id="subtitle"]]
[[!template text="""Here, I have a Julia REPL.""" start="00:03:39.920" video="mainVideo-julia" id="subtitle"]]
[[!template text="""Let me give you a tour of the Julia REPL.""" start="00:03:41.760" video="mainVideo-julia" id="subtitle"]]
[[!template text="""So, the REPL comes with lots of useful features,""" start="00:03:44.400" video="mainVideo-julia" id="subtitle"]]
[[!template text="""from a shell to a package manager.""" start="00:03:47.760" video="mainVideo-julia" id="subtitle"]]
[[!template text="""So, for example, let's add the random package.""" start="00:03:51.560" video="mainVideo-julia" id="subtitle"]]
[[!template text="""Um, yeah, I have the random package.""" start="00:03:55.000" video="mainVideo-julia" id="subtitle"]]
[[!template text="""I can look at what's inside.""" start="00:03:58.280" video="mainVideo-julia" id="subtitle"]]
[[!template text="""We have the statistics with random""" start="00:03:59.280" video="mainVideo-julia" id="subtitle"]]
[[!template text="""in this particular environment.""" start="00:04:01.280" video="mainVideo-julia" id="subtitle"]]
[[!template text="""Environments are fully declarative.""" start="00:04:02.480" video="mainVideo-julia" id="subtitle"]]
[[!template text="""So here we have the dependencies of this environment.""" start="00:04:05.720" video="mainVideo-julia" id="subtitle"]]
[[!template text="""And I can explore in this manifest,""" start="00:04:08.040" video="mainVideo-julia" id="subtitle"]]
[[!template text="""the specific versions that are used.""" start="00:04:10.240" video="mainVideo-julia" id="subtitle"]]
[[!template text="""So we have a shell, we have a package manager,""" start="00:04:14.000" video="mainVideo-julia" id="subtitle"]]
[[!template text="""and then we have a very powerful help system.""" start="00:04:17.720" video="mainVideo-julia" id="subtitle"]]
[[!template text="""So, for example, I can ask for help for length.""" start="00:04:20.560" video="mainVideo-julia" id="subtitle"]]
[[!template text="""And here we can see we have, well,""" start="00:04:24.200" video="mainVideo-julia" id="subtitle"]]
[[!template text="""the help for length. Lots of information about""" start="00:04:26.640" video="mainVideo-julia" id="subtitle"]]
[[!template text="""how to call length, the expected return values,""" start="00:04:31.000" video="mainVideo-julia" id="subtitle"]]
[[!template text="""examples. And now you can probably start seeing that""" start="00:04:33.400" video="mainVideo-julia" id="subtitle"]]
[[!template text="""this is not that different from calling length.""" start="00:04:36.120" video="mainVideo-julia" id="subtitle"]]
[[!template text="""So this is the output for length,""" start="00:04:37.760" video="mainVideo-julia" id="subtitle"]]
[[!template text="""or for help for length in in Emacs.""" start="00:04:42.120" video="mainVideo-julia" id="subtitle"]]
[[!template text="""So we have help, and we can do more.""" start="00:04:45.000" video="mainVideo-julia" id="subtitle"]]
[[!template text="""We can even look at the source code for length.""" start="00:04:47.960" video="mainVideo-julia" id="subtitle"]]
[[!template text="""So now, what we can see here is that now, well,""" start="00:04:51.880" video="mainVideo-julia" id="subtitle"]]
[[!template text="""we cannot see because it's zoomed in""" start="00:04:57.080" video="mainVideo-julia" id="subtitle"]]
[[!template text="""because the font size is huge, but in this page here,""" start="00:04:58.920" video="mainVideo-julia" id="subtitle"]]
[[!template text="""we can see the implementation of length.""" start="00:05:02.800" video="mainVideo-julia" id="subtitle"]]
[[!template text="""It's this line here in the middle,""" start="00:05:04.760" video="mainVideo-julia" id="subtitle"]]
[[!template text="""or these few lines here in the middle.""" start="00:05:06.720" video="mainVideo-julia" id="subtitle"]]
[[!template text="""And as you... Let's do this again.""" start="00:05:09.720" video="mainVideo-julia" id="subtitle"]]
[[!template text="""As we can see here at the bottom,""" start="00:05:12.080" video="mainVideo-julia" id="subtitle"]]
[[!template text="""what we are looking at,""" start="00:05:13.000" video="mainVideo-julia" id="subtitle"]]
[[!template text="""this is the source code of Julia.""" start="00:05:13.800" video="mainVideo-julia" id="subtitle"]]
[[!template text="""We can change this.""" start="00:05:15.640" video="mainVideo-julia" id="subtitle"]]
[[!template text="""There's even a macro edit""" start="00:05:17.040" video="mainVideo-julia" id="subtitle"]]
[[!template text="""if you want to change its length.""" start="00:05:20.040" video="mainVideo-julia" id="subtitle"]]
[[!template text="""And yeah, I use the word macro.""" start="00:05:22.760" video="mainVideo-julia" id="subtitle"]]
[[!template text="""Julia supports metaprogramming.""" start="00:05:24.600" video="mainVideo-julia" id="subtitle"]]
[[!template text="""And actually metaprogramming is""" start="00:05:28.640" video="mainVideo-julia" id="subtitle"]]
[[!template text="""one of the key features in Julia.""" start="00:05:30.360" video="mainVideo-julia" id="subtitle"]]
[[!template text="""It's used extensively in the core,""" start="00:05:32.080" video="mainVideo-julia" id="subtitle"]]
[[!template text="""but it's also used extensively in packages,""" start="00:05:33.640" video="mainVideo-julia" id="subtitle"]]
[[!template text="""both to extend the Julia ecosystem and functionalities,""" start="00:05:36.400" video="mainVideo-julia" id="subtitle"]]
[[!template text="""but also to develop full domain specific languages.""" start="00:05:40.080" video="mainVideo-julia" id="subtitle"]]
[[!template text="""Some of the useful macros are, well, I don't know,""" start="00:05:43.480" video="mainVideo-julia" id="subtitle"]]
[[!template text="""like time. Here, we have a built-in""" start="00:05:47.240" video="mainVideo-julia" id="subtitle"]]
[[!template text="""basic performance tool in in in Julia.""" start="00:05:52.240" video="mainVideo-julia" id="subtitle"]]
[[!template text="""And I want to showcase more introspection, macros.""" start="00:05:55.800" video="mainVideo-julia" id="subtitle"]]
[[!template text="""But for that, I'm going to do it slightly different.""" start="00:06:00.480" video="mainVideo-julia" id="subtitle"]]
[[!template text="""I'm going to open a file""" start="00:06:02.960" video="mainVideo-julia" id="subtitle"]]
[[!template text="""example.jl where I define a""" start="00:06:04.040" video="mainVideo-julia" id="subtitle"]]
[[!template text="""function, or our""" start="00:06:06.240" video="mainVideo-julia" id="subtitle"]]
[[!template text="""function add, there was an asterisk""" start="00:06:08.040" video="mainVideo-julia" id="subtitle"]]
[[!template text="""and I will go back to that in a second.""" start="00:06:09.520" video="mainVideo-julia" id="subtitle"]]
[[!template text="""So now, I am going to include this this file,""" start="00:06:11.200" video="mainVideo-julia" id="subtitle"]]
[[!template text="""and I can call my function add, one and two,""" start="00:06:15.240" video="mainVideo-julia" id="subtitle"]]
[[!template text="""and we get three. And now, what I can do is this.""" start="00:06:18.200" video="mainVideo-julia" id="subtitle"]]
[[!template text="""I can look at what code gets compiled""" start="00:06:22.640" video="mainVideo-julia" id="subtitle"]]
[[!template text="""when I call my when I call 1 + 2.""" start="00:06:28.040" video="mainVideo-julia" id="subtitle"]]
[[!template text="""And here, now we can see""" start="00:06:31.360" video="mainVideo-julia" id="subtitle"]]
[[!template text="""that there is some integer stuff.""" start="00:06:33.360" video="mainVideo-julia" id="subtitle"]]
[[!template text="""But if I make this floating point,""" start="00:06:34.640" video="mainVideo-julia" id="subtitle"]]
[[!template text="""now the compiled code changes.""" start="00:06:38.160" video="mainVideo-julia" id="subtitle"]]
[[!template text="""Now, maybe assembly code""" start="00:06:40.240" video="mainVideo-julia" id="subtitle"]]
[[!template text="""is a little bit too hard to read,""" start="00:06:43.600" video="mainVideo-julia" id="subtitle"]]
[[!template text="""so I can look at the LLVM IR representation.""" start="00:06:45.080" video="mainVideo-julia" id="subtitle"]]
[[!template text="""In this case we can see that there is promotion.""" start="00:06:48.640" video="mainVideo-julia" id="subtitle"]]
[[!template text="""The promotion will probably go away""" start="00:06:50.400" video="mainVideo-julia" id="subtitle"]]
[[!template text="""if I make everything float. So this we have F add,""" start="00:06:52.240" video="mainVideo-julia" id="subtitle"]]
[[!template text="""floating point add for a double,""" start="00:06:56.040" video="mainVideo-julia" id="subtitle"]]
[[!template text="""but we can also look at""" start="00:06:58.000" video="mainVideo-julia" id="subtitle"]]
[[!template text="""the Julia lowered representation""" start="00:06:59.440" video="mainVideo-julia" id="subtitle"]]
[[!template text="""after the abstract syntax tree is produced.""" start="00:07:04.240" video="mainVideo-julia" id="subtitle"]]
[[!template text="""The reason I put this in a file is because""" start="00:07:06.080" video="mainVideo-julia" id="subtitle"]]
[[!template text="""now what I can do is I can change this.""" start="00:07:07.920" video="mainVideo-julia" id="subtitle"]]
[[!template text="""And now, one and two will be two.""" start="00:07:10.120" video="mainVideo-julia" id="subtitle"]]
[[!template text="""So this to me is very reminiscent""" start="00:07:14.080" video="mainVideo-julia" id="subtitle"]]
[[!template text="""of how I work in Emacs,""" start="00:07:16.880" video="mainVideo-julia" id="subtitle"]]
[[!template text="""where there is a global state""" start="00:07:18.720" video="mainVideo-julia" id="subtitle"]]
[[!template text="""that I can access and modify any time""" start="00:07:20.240" video="mainVideo-julia" id="subtitle"]]
[[!template text="""with no restrictions. And this happens in in Julia too.""" start="00:07:22.960" video="mainVideo-julia" id="subtitle"]]
[[!template text="""Typically, we don't want to modify functions""" start="00:07:27.160" video="mainVideo-julia" id="subtitle"]]
[[!template text="""that are in other packages or they are in base,""" start="00:07:29.560" video="mainVideo-julia" id="subtitle"]]
[[!template text="""but we can do that. For example,""" start="00:07:32.520" video="mainVideo-julia" id="subtitle"]]
[[!template text="""I can change what is plus for integers.""" start="00:07:34.080" video="mainVideo-julia" id="subtitle"]]
[[!template text="""And if I change with this plus""" start="00:07:37.640" video="mainVideo-julia" id="subtitle"]]
[[!template text="""and make it so that any two integers return zero,""" start="00:07:41.080" video="mainVideo-julia" id="subtitle"]]
[[!template text="""well, I can do this. This will break Julia because,""" start="00:07:43.760" video="mainVideo-julia" id="subtitle"]]
[[!template text="""well, Julia is built in Julia.""" start="00:07:46.320" video="mainVideo-julia" id="subtitle"]]
[[!template text="""So if we break this, well, nothing will work.""" start="00:07:48.360" video="mainVideo-julia" id="subtitle"]]
[[!template text="""But I can do that. This to me is one of""" start="00:07:51.400" video="mainVideo-julia" id="subtitle"]]
[[!template text="""the signs of the powerful, introspective,""" start="00:07:53.400" video="mainVideo-julia" id="subtitle"]]
[[!template text="""and powerful interactive type of workflows""" start="00:07:56.200" video="mainVideo-julia" id="subtitle"]]
[[!template text="""that Julia enables.""" start="00:07:58.480" video="mainVideo-julia" id="subtitle"]]
[[!template text="""Finally, I want to talk about the general registry.""" start="00:07:59.280" video="mainVideo-julia" id="subtitle"]]
[[!template text="""This is the equivalent of Melpa.""" start="00:08:03.480" video="mainVideo-julia" id="subtitle"]]
[[!template text="""It comes with with Julia.""" start="00:08:06.400" video="mainVideo-julia" id="subtitle"]]
[[!template text="""But this is very akin to Melpa.""" start="00:08:08.760" video="mainVideo-julia" id="subtitle"]]
[[!template text="""It's built upon Git essentially.""" start="00:08:11.120" video="mainVideo-julia" id="subtitle"]]
[[!template text="""It's collaborative, as relies heavily on GitHub, GitLab.""" start="00:08:14.480" video="mainVideo-julia" id="subtitle"]]
[[!template text="""It's heavily automated.""" start="00:08:19.400" video="mainVideo-julia" id="subtitle"]]
[[!template text="""And comes with lots and lots of tools and packages.""" start="00:08:21.120" video="mainVideo-julia" id="subtitle"]]
[[!template text="""What's beautiful about all these tools and packages""" start="00:08:24.480" video="mainVideo-julia" id="subtitle"]]
[[!template text="""is that in the same way many of Emacs packages""" start="00:08:27.560" video="mainVideo-julia" id="subtitle"]]
[[!template text="""just play nicely with each other""" start="00:08:30.280" video="mainVideo-julia" id="subtitle"]]
[[!template text="""without any input from the developers,""" start="00:08:32.400" video="mainVideo-julia" id="subtitle"]]
[[!template text="""the same is true for Julia packages.""" start="00:08:34.880" video="mainVideo-julia" id="subtitle"]]
[[!template text="""The Julia packages are highly composable,""" start="00:08:37.560" video="mainVideo-julia" id="subtitle"]]
[[!template text="""so two developers can develop""" start="00:08:40.680" video="mainVideo-julia" id="subtitle"]]
[[!template text="""two distinct packages""" start="00:08:42.880" video="mainVideo-julia" id="subtitle"]]
[[!template text="""that end up playing nicely together for free""" start="00:08:44.720" video="mainVideo-julia" id="subtitle"]]
[[!template text="""because of the intrinsic structure, intrinsic way""" start="00:08:47.640" video="mainVideo-julia" id="subtitle"]]
[[!template text="""Julia objects are built.""" start="00:08:51.880" video="mainVideo-julia" id="subtitle"]]
[[!template text="""So, with all of this, I also want to mention that""" start="00:08:54.080" video="mainVideo-julia" id="subtitle"]]
[[!template text="""the community, in addition to have all these packages,""" start="00:08:57.480" video="mainVideo-julia" id="subtitle"]]
[[!template text="""is highly active, highly collaborative.""" start="00:09:00.080" video="mainVideo-julia" id="subtitle"]]
[[!template text="""The community meets regularly on places like Slack,""" start="00:09:02.600" video="mainVideo-julia" id="subtitle"]]
[[!template text="""as opposed to the Emacs community""" start="00:09:06.160" video="mainVideo-julia" id="subtitle"]]
[[!template text="""that I'd say maybe meets on Reddit.""" start="00:09:08.200" video="mainVideo-julia" id="subtitle"]]
[[!template text="""So, with all of this, I want to thank you""" start="00:09:10.040" video="mainVideo-julia" id="subtitle"]]
[[!template text="""for your attention, enjoy Emacs, and enjoy Julia.""" start="00:09:13.000" video="mainVideo-julia" id="subtitle"]]
</div>Questions or comments? Please e-mail [emacsconf-org-private@gnu.org](mailto:emacsconf-org-private@gnu.org?subject=Comment%20for%20EmacsConf%202023%20julia%3A%20Exploring%20shared%20philosophies%20in%20Julia%20and%20Emacs)
<!-- End of emacsconf-publish-after-page -->
|