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
//! Raph Levien on using Rust to build the Xi editor
//!
//!   - **Date:** June 24, 2016
//!   - **Subject:** The Xi Editor project as a window into complex data
//!     structures, memory management, and the Unix philosophy.
//!   - [**Audio**][mp3]
//!
//! [mp3]: https://www.podtrac.com/pts/redirect.mp3/cdn.newrustacean.com/file/newrustacean/interview/2/part_1.mp3
//!
//! <audio style="width: 100%" title="Interview 2: Raph Levien, Part 1" controls preload=metadata><source src="https://www.podtrac.com/pts/redirect.mp3/cdn.newrustacean.com/file/newrustacean/interview/2/part_1.mp3"></audio>
//!
//!
//! Notes
//! -----
//!
//! Chris chats with Raph Levien about his background in software development,
//! what attracted him to Rust, and how he's using Rust to build the Xi Editor,
//! a project which aims to be the fastest text editor out there, with native
//! user interfaces and a Rust text engine.
//!
//!
//! Links
//! -----
//!
//!   - Past work:
//!
//!       + [GIMP]
//!       + [GTK]
//!       + [GhostScript]
//!       + [Google Web Fonts]
//!       + [font-rs]
//!
//!   - Current projects:
//!
//!       + [pulldown-cmark]
//!       + [Xi Editor]
//!
//!   - [fuzz testing]
//!
//!   - [sanitizers]
//!
//!   - [FreeType]
//!
//!   - [HarfBuzz]
//!
//!   - [ICU]
//!
//!   - Ropes
//!
//!       + [Wikipedia summary]
//!       + [original paper]
//!   - ["log n operation"], or *O(log n)*
//!
//!       + [Big O notation]
//!   - Rust:
//!
//!       + [`Arc`]
//!       + [`RefCell`]
//!       + [`Borrow`]
//!       + [`AsRef`]
//!   - Rust libraries
//!
//!       + Crossbeam: [source][Crossbeam source] | [docs][Crossbeam docs]
//!       + Rayon: [source][Rayon source] | [docs][Rayon docs]
//!
//!   - [Unix philosophy]
//!
//!     > The Unix philosophy emphasizes building simple, short, clear,
//!     > modular, and extensible code that can be easily maintained and
//!     > repurposed by developers other than its creators. The Unix philosophy
//!     > favors composability as opposed to monolithic design.
//!
//! [GIMP]: http://www.gimp.org
//! [GTK]: http://gtk.org
//! [GhostScript]: http://www.ghostscript.com
//! [Google Web Fonts]: https://fonts.google.com
//! [font-rs]: https://github.com/google/font-rs
//! [pulldown-cmark]: https://github.com/google/pulldown-cmark
//! [Xi Editor]: https://github.com/google/xi-editor
//! [fuzz testing]: https://en.wikipedia.org/wiki/Fuzz_testing
//! [sanitizers]: http://developers.redhat.com/blog/2014/12/02/address-and-thread-sanitizers-gcc/
//! [FreeType]: https://www.freetype.org
//! [HarfBuzz]: https://www.freedesktop.org/wiki/Software/HarfBuzz/
//! [ICU]: http://site.icu-project.org
//! [Wikipedia summary]: https://en.wikipedia.org/wiki/Rope_%28data_structure%29
//! [original paper]: http://citeseer.ist.psu.edu/viewdoc/download?doi=10.1.1.14.9450&rep=rep1&type=pdf
//! ["log n operation"]: http://stackoverflow.com/questions/2307283/what-does-olog-n-mean-exactly
//! [Big O notation]: https://en.wikipedia.org/wiki/Big_O_notation
//! [`Arc`]: http://doc.rust-lang.org/std/sync/struct.Arc.html
//! [`RefCell`]: http://doc.rust-lang.org/std/cell/struct.RefCell.html
//! [`Borrow`]: http://doc.rust-lang.org/std/borrow/trait.Borrow.html
//! [`AsRef`]: http://doc.rust-lang.org/std/convert/trait.AsRef.html
//! [Crossbeam source]: https://github.com/aturon/crossbeam
//! [Crossbeam docs]: http://aturon.github.io/crossbeam-doc/crossbeam/
//! [Rayon source]: https://github.com/nikomatsakis/rayon
//! [Rayon docs]: http://nikomatsakis.github.io/rayon/rayon/
//! [Unix philosophy]: https://en.wikipedia.org/wiki/Unix_philosophy
//!
//!
//! Sponsors
//! --------
//!
//!   - Aleksey Pirogov
//!   - [Chris Palmer]
//!   - [Daniel Collin]
//!   - [Derek Morr]
//!   - Doug Reeves
//!   - Hamza Sheikh
//!   - Lachlan Collins
//!   - Leif Arne Storset
//!   - Luca Schmid
//!   - Micael Bergeron
//!   - [Pascal Hertleif]
//!   - Ralph Giles ("rillian")
//!   - Ralph "FriarTech" Loizzo
//!   - Raph Levien
//!   - reddraggone9
//!   - Ryan Ollos
//!   - Vesa Kaihlavirta
//!   - [William Roe]
//!
//! [Chris Palmer]: http://red-oxide.org/
//! [Daniel Collin]: twitter.com/daniel_collin
//! [Derek Morr]: https://twitter.com/derekmorr
//! [Pascal Hertleif]: https://pascalhertleif.de/
//! [William Roe]: http://willroe.me
//!
//! (Thanks to the couple people donating who opted out of the reward tier, as
//! well. You know who you are!)
//!
//! ### Become a sponsor
//!
//!   - <a href="https://www.patreon.com/newrustacean" rel="payment">Patreon</a>
//!   - [Venmo](https://venmo.com/chriskrycho)
//!   - [Dwolla](https://www.dwolla.com/hub/chriskrycho)
//!   - [Cash.me](https://cash.me/$chriskrycho)
//!   - [Flattr](https://flattr.com/profile/chriskrycho)
//!   - [PayPal.me](https://paypal.me/chriskrycho)
//!
//!
//! Contact
//! -------
//!
//!   - New Rustacean:
//!     + Twitter: [@newrustacean](https://www.twitter.com/newrustacean)
//!     + Email: [hello@newrustacean.com](mailto:hello@newrustacean.com)
//!   - Chris Krycho
//!     + GitHub: [chriskrycho](https://github.com/chriskrycho)
//!     + Twitter: [@chriskrycho](https://www.twitter.com/chriskrycho)