mirror of
https://github.com/wezm/wezm.net.git
synced 2024-12-24 21:19:53 +00:00
365 lines
13 KiB
HTML
365 lines
13 KiB
HTML
<!doctype html>
|
|
<html lang="en" prefix="og: http://ogp.me/ns#">
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
|
|
<title>Great Rust Tools</title>
|
|
|
|
<!-- CSS WebSlides -->
|
|
<link rel="stylesheet" type='text/css' media='all' href="static/css/webslides.css">
|
|
|
|
<!-- Optional - CSS SVG Icons (Font Awesome) -->
|
|
<link rel="stylesheet" type='text/css' media='all' href="static/css/svg-icons.css">
|
|
|
|
<!-- FAVICONS -->
|
|
<!-- <link rel="shortcut icon" sizes="16x16" href="static/images/favicons/favicon.png"> -->
|
|
<!-- <link rel="shortcut icon" sizes="32x32" href="static/images/favicons/favicon-32.png"> -->
|
|
<!-- <link rel="apple-touch-icon icon" sizes="76x76" href="static/images/favicons/favicon-76.png"> -->
|
|
<!-- <link rel="apple-touch-icon icon" sizes="120x120" href="static/images/favicons/favicon-120.png"> -->
|
|
<!-- <link rel="apple-touch-icon icon" sizes="152x152" href="static/images/favicons/favicon-152.png"> -->
|
|
<!-- <link rel="apple-touch-icon icon" sizes="180x180" href="static/images/favicons/favicon-180.png"> -->
|
|
<!-- <link rel="apple-touch-icon icon" sizes="192x192" href="static/images/favicons/favicon-192.png"> -->
|
|
|
|
<!-- Android -->
|
|
<meta name="mobile-web-app-capable" content="yes">
|
|
<meta name="theme-color" content="#333333">
|
|
|
|
<style type="text/css">
|
|
body {
|
|
font-family: 'Roboto', 'San Francisco', helvetica, arial, sans-serif;
|
|
font-family: 'Interface', 'TeX Gyre Heros', sans-serif;
|
|
}
|
|
pre,
|
|
code {
|
|
font-family: 'PragmataPro Mono', monospace;
|
|
}
|
|
.bullets {
|
|
margin-top: 1em;
|
|
}
|
|
.bullets li {
|
|
font-size: 4rem;
|
|
line-height: 1.25em;
|
|
margin-bottom: 0.75em;
|
|
}
|
|
.text-intro {
|
|
font-size: 4rem;
|
|
}
|
|
h1 {
|
|
margin-bottom: 1em;
|
|
}
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<main role="main">
|
|
<article id="webslides">
|
|
<!-- Quick Guide
|
|
- Each parent <section> in the <article id="webslides"> element is an individual slide.
|
|
- Vertical sliding = <article id="webslides" class="vertical">
|
|
- <div class="wrap"> = container 90% / <div class="wrap size-50"> = 45%;
|
|
-->
|
|
<section>
|
|
<div class="aligncenter">
|
|
<h1 class="text-landing">Supporting Rust by using Rust</h1>
|
|
<p class="text-intro">An exploration of great command line tools</p>
|
|
|
|
<p>Melbourne Rust Meetup<br> Tue 26 Sep 2017</p>
|
|
</div>
|
|
<footer>
|
|
<div class="wrap">
|
|
<p>
|
|
<span class="alignleft">
|
|
Wesley Moore
|
|
</span>
|
|
<span class="alignright">
|
|
<a href="#" title="Twitter">
|
|
<svg class="fa-twitter" viewBox="0 0 512 512">
|
|
<path d="m481 117c-13 18-28 34-46 47 0 3 0 7 0 12 0 25-3 50-11 74-7 25-18 49-33 71-14 23-32 43-52 61-21 17-45 31-74 41-29 11-60 16-92 16-52 0-99-14-142-42 7 1 14 2 22 2 43 0 81-14 115-40-20 0-38-6-54-18-16-12-27-27-33-46 7 1 13 2 18 2 8 0 16-1 24-4-21-4-39-15-53-31-14-17-21-37-21-59l0-1c13 7 27 11 42 11-13-8-23-19-30-32-8-14-11-29-11-44 0-17 4-33 12-47 23 28 51 51 84 68 33 17 69 27 107 29-2-8-3-15-3-22 0-25 9-47 27-65 18-18 40-27 66-27 26 0 49 10 67 29 21-4 40-11 59-22-7 22-21 39-41 51 18-2 35-7 53-14z"></path>
|
|
</svg>
|
|
@wezm
|
|
</a>
|
|
</span>
|
|
</p>
|
|
</div>
|
|
</footer>
|
|
</section>
|
|
|
|
<!--
|
|
<section>
|
|
<div class="wrap ">
|
|
<h1><strong>Outline</strong></h1>
|
|
<p class="text-intro">WebSlides makes HTML presentations easy.<br>
|
|
Just the essentials and using lovely CSS.
|
|
</p>
|
|
<ul>
|
|
<li>Spreading Rust by using Rust</li>
|
|
<li>
|
|
Tools
|
|
<ul>
|
|
<li>watchexec</li>
|
|
<li>fd</li>
|
|
<li>fe</li>
|
|
<li>exa</li>
|
|
<li>ripgrep</li>
|
|
<li>alt</li>
|
|
<li>tac</li>
|
|
<li>dot</li>
|
|
<li>titlecase</li>
|
|
<li>ion</li>
|
|
</ul>
|
|
</li>
|
|
<li>How you can help</li>
|
|
</ul>
|
|
</div>
|
|
</section>
|
|
-->
|
|
|
|
<section>
|
|
<div class="wrap aligncenter">
|
|
<h1><strong>Rust is great</strong></h1>
|
|
</div>
|
|
</section>
|
|
|
|
<section>
|
|
<div class="wrap aligncenter">
|
|
<h1><strong>What is a Rust tool?</strong></h1>
|
|
</div>
|
|
</section>
|
|
|
|
<section>
|
|
<div class="wrap ">
|
|
<h1><strong>Why Rust tools are great</strong></h1>
|
|
|
|
<ul class="flexblock features">
|
|
<li>
|
|
<div>
|
|
<h2>
|
|
<svg class="fa-bolt">
|
|
<use xlink:href="#fa-bolt"></use>
|
|
</svg>
|
|
Performance
|
|
</h2>
|
|
Fast and efficient with resources
|
|
</div>
|
|
</li>
|
|
<li>
|
|
<div>
|
|
<h2>
|
|
<svg class="fa-minus-circle">
|
|
<use xlink:href="#fa-minus-circle"></use>
|
|
</svg>
|
|
No runtime
|
|
</h2>
|
|
Few runtime dependencies
|
|
</div>
|
|
</li>
|
|
<li>
|
|
<div>
|
|
<h2>
|
|
<svg class="fa-laptop">
|
|
<use xlink:href="#fa-laptop"></use>
|
|
</svg>
|
|
Cross Platform
|
|
</h2>
|
|
Supports all major platforms
|
|
</div>
|
|
</li>
|
|
</div>
|
|
</section>
|
|
|
|
<section>
|
|
<div class="wrap ">
|
|
<h1><strong>Why Rust tools are great</strong></h1>
|
|
|
|
<ul class="flexblock features">
|
|
<li>
|
|
<div>
|
|
<h2>
|
|
<svg class="fa-terminal">
|
|
<use xlink:href="#fa-terminal"></use>
|
|
</svg>
|
|
Easy to install
|
|
</h2>
|
|
Package manager or <code>cargo install</code>
|
|
</div>
|
|
</li>
|
|
<li>
|
|
<div>
|
|
<h2>
|
|
<svg class="fa-user">
|
|
<use xlink:href="#fa-user"></use>
|
|
</svg>
|
|
Usable
|
|
</h2>
|
|
Provide a nice interface
|
|
</div>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
</section>
|
|
<section>
|
|
<div class="wrap aligncenter ">
|
|
<h1><strong>Demos</strong></h1>
|
|
</div>
|
|
</section>
|
|
|
|
<section>
|
|
<div class="wrap aligncenter ">
|
|
<h1><strong>watchexec</strong></h1>
|
|
<p class="text-intro">Executes commands in response to file modifications</p>
|
|
<p class="text-intro"><a href="https://github.com/mattgreen/watchexec">https://github.com/mattgreen/watchexec</a></p>
|
|
</div>
|
|
</section>
|
|
|
|
<section>
|
|
<div class="wrap aligncenter ">
|
|
<h1><strong>fd</strong></h1>
|
|
<p class="text-intro">A simple, fast and user-friendly alternative to <code>find</code></p>
|
|
<p class="text-intro"><a href="https://github.com/sharkdp/fd">https://github.com/sharkdp/fd</a></p>
|
|
</div>
|
|
</section>
|
|
|
|
<section>
|
|
<div class="wrap aligncenter ">
|
|
<h1><strong>fe</strong></h1>
|
|
<p class="text-intro">A super-fast and easy to use command line fuzzy file searcher</p>
|
|
<p class="text-intro"><a href="https://github.com/btipling/fe">https://github.com/btipling/fe</a></p>
|
|
</div>
|
|
</section>
|
|
|
|
<section>
|
|
<div class="wrap aligncenter ">
|
|
<h1><strong>exa</strong></h1>
|
|
<p class="text-intro">A modern replacement for <code>ls</code></p>
|
|
<p class="text-intro"><a href="https://the.exa.website/">https://the.exa.website/</a></p>
|
|
</div>
|
|
</section>
|
|
|
|
<section>
|
|
<div class="wrap aligncenter ">
|
|
<h1><strong>ripgrep</strong></h1>
|
|
<p class="text-intro">The usability of The Silver Searcher with the raw speed of [GNU] <code>grep</code>.</p>
|
|
<p class="text-intro"><a href="https://github.com/BurntSushi/ripgrep/">https://github.com/BurntSushi/ripgrep/</a></p>
|
|
</div>
|
|
</section>
|
|
|
|
<section>
|
|
<div class="wrap aligncenter ">
|
|
<h1><strong>alt</strong></h1>
|
|
<p class="text-intro">Command line tool to find alternate files</p>
|
|
<p class="text-intro"><a href="https://github.com/uptech/alt">https://github.com/uptech/alt</a></p>
|
|
</div>
|
|
</section>
|
|
|
|
<section>
|
|
<div class="wrap aligncenter ">
|
|
<h1><strong>tac</strong></h1>
|
|
<p class="text-intro">A high-performance, cross-platform file reverse utility</p>
|
|
<p class="text-intro"><a href="https://github.com/neosmart/tac">https://github.com/neosmart/tac</a></p>
|
|
</div>
|
|
</section>
|
|
|
|
<section>
|
|
<div class="wrap aligncenter ">
|
|
<h1><strong>dot</strong></h1>
|
|
<p class="text-intro">Dot file management</p>
|
|
<p class="text-intro"><a href="https://github.com/ubnt-intrepid/dot">https://github.com/ubnt-intrepid/dot</a></p>
|
|
</div>
|
|
</section>
|
|
|
|
<section>
|
|
<div class="wrap aligncenter ">
|
|
<h1><strong>titlecase</strong></h1>
|
|
<p class="text-intro">Capitalise text according to a style guide</p>
|
|
<p class="text-intro"><a href="https://github.com/wezm/titlecase">https://github.com/wezm/titlecase</a></p>
|
|
</div>
|
|
</section>
|
|
|
|
<section>
|
|
<div class="wrap aligncenter ">
|
|
<h1><strong>ion</strong></h1>
|
|
<p class="text-intro">A shell written in Rust for Redox and Linux</p>
|
|
<p class="text-intro"><a href="https://github.com/redox-os/ion">https://github.com/redox-os/ion</a></p>
|
|
</div>
|
|
</section>
|
|
|
|
<section>
|
|
<div class="wrap ">
|
|
<h1><strong>You can build tools too!</strong></h1>
|
|
<ul class="bullets">
|
|
<li>If you use a tool that is frustrating to install due to runtime
|
|
requirements or dependency issues, perhaps it's a candidate for a Rust
|
|
version.
|
|
</li>
|
|
<li>Maybe you use a tool that is error prone or could benefit from fearless
|
|
concurrency.
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
</section>
|
|
|
|
<section>
|
|
<div class="wrap ">
|
|
<h1><strong>Conclusion</strong></h1>
|
|
<ul class="bullets">
|
|
<li>You can help spread Rust by using tools written in Rust</li>
|
|
<li>There's already a stack of great tools out there</li>
|
|
<li>Lots of opportunity to write your own tools</li>
|
|
</ul>
|
|
</div>
|
|
</section>
|
|
|
|
<section>
|
|
<div class="wrap aligncenter ">
|
|
<h1><strong>Questions?</strong></h1>
|
|
|
|
<br>
|
|
<p class="text-intro">
|
|
Slides will be available at:<br>
|
|
<a href="http://wezm.net/talks/rust-tools">http://wezm.net/talks/rust-tools</a>
|
|
</p>
|
|
</div>
|
|
|
|
<footer>
|
|
<div class="wrap">
|
|
<p>
|
|
<span class="alignleft">
|
|
Wesley Moore
|
|
</span>
|
|
<span class="alignright">
|
|
<a href="#" title="Twitter">
|
|
<svg class="fa-twitter" viewBox="0 0 512 512">
|
|
<path d="m481 117c-13 18-28 34-46 47 0 3 0 7 0 12 0 25-3 50-11 74-7 25-18 49-33 71-14 23-32 43-52 61-21 17-45 31-74 41-29 11-60 16-92 16-52 0-99-14-142-42 7 1 14 2 22 2 43 0 81-14 115-40-20 0-38-6-54-18-16-12-27-27-33-46 7 1 13 2 18 2 8 0 16-1 24-4-21-4-39-15-53-31-14-17-21-37-21-59l0-1c13 7 27 11 42 11-13-8-23-19-30-32-8-14-11-29-11-44 0-17 4-33 12-47 23 28 51 51 84 68 33 17 69 27 107 29-2-8-3-15-3-22 0-25 9-47 27-65 18-18 40-27 66-27 26 0 49 10 67 29 21-4 40-11 59-22-7 22-21 39-41 51 18-2 35-7 53-14z"></path>
|
|
</svg>
|
|
@wezm
|
|
</a>
|
|
</span>
|
|
</p>
|
|
</div>
|
|
</footer>
|
|
</section>
|
|
|
|
</article>
|
|
<!-- end article -->
|
|
</main>
|
|
<!-- end main -->
|
|
|
|
<!-- A global footer
|
|
|
|
<footer role="contentinfo">
|
|
<div class="wrap">
|
|
<p>An <a href="https://github.com/webslides/webslides">open source solution</a>, by <a href="https://twitter.com/webslides">@webslides</a>.</p>
|
|
</div>
|
|
</footer> -->
|
|
|
|
<!-- Required -->
|
|
<script src="static/js/webslides.js"></script>
|
|
<script>
|
|
window.ws = new WebSlides();
|
|
</script>
|
|
|
|
<!-- OPTIONAL - svg-icons.js (fontastic.me - Font Awesome as svg icons) -->
|
|
<script defer src="static/js/svg-icons.js"></script>
|
|
|
|
</body>
|
|
</html>
|