<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Brendan Falk</title>
    <description>The latest articles on Forem by Brendan Falk (@brendan).</description>
    <link>https://forem.com/brendan</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F417180%2F00c3438a-e07b-4f53-9550-4185a77a0911.jpg</url>
      <title>Forem: Brendan Falk</title>
      <link>https://forem.com/brendan</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/brendan"/>
    <language>en</language>
    <item>
      <title>Cicada: Write CI/CD pipelines in TypeScript</title>
      <dc:creator>Brendan Falk</dc:creator>
      <pubDate>Tue, 25 Apr 2023 17:41:01 +0000</pubDate>
      <link>https://forem.com/brendan/launching-cicada-write-cicd-pipelines-in-typescript-3i31</link>
      <guid>https://forem.com/brendan/launching-cicada-write-cicd-pipelines-in-typescript-3i31</guid>
      <description>&lt;p&gt;Hey DEV! I’m Brendan, one of the creators of Cicada (&lt;a href="https://cicada.build"&gt;cicada.build&lt;/a&gt;). Cicada lets you write CI/CD pipelines in TypeScript and test them locally. &lt;/p&gt;

&lt;p&gt;We built Cicada because of our own struggles building CI/CD pipelines. YAML is cumbersome, not type-safe, and does not scale well for large pipelines. Sharing logic across pipelines is hard and most providers don’t let you test your pipelines locally. &lt;/p&gt;

&lt;p&gt;Cicada lets you&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;write your pipelines in a real programming language. Using TypeScript gives you  type-checking, syntax highlighting, and in-line documentation out of the box. It also lets you extend your pipelines by hooking into the entire TypeScript ecosystem of packages and modules. &lt;/li&gt;
&lt;li&gt;test your pipelines locally. All jobs are run in containers. This means you can test them with Docker/Podman. It also means you get great caching. &lt;/li&gt;
&lt;li&gt;run your pipelines on our cloud. Pipelines are checked into your repository and run when triggered by an event in your repository (like a commit/PR), when triggered manually, or at a defined schedule.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;We use Deno[0] to create pipeline definitions, Docker Buildkit[1] as our build engine, and Fly [2] for our cloud hosting. Our CLI is written in Rust for speed and stability.  The hardest technical challenge we faced was writing BuildKit bindings for rust [3].&lt;/p&gt;

&lt;p&gt;Cicada’s client is fully MIT OSS (the CLI, BuildKit integration, and SDK) [4]. Our dashboard and cloud runners are closed source. The cloud runners have a generous free tier for individuals and are cheap and easy for teams. &lt;/p&gt;

&lt;p&gt;You can create and run your first pipeline on your local device by running &lt;code&gt;npm install -g @cicadahq/cicada&lt;/code&gt;. You can also learn more in our &lt;a href="https://cicada.build/docs"&gt;docs&lt;/a&gt; or by joining &lt;a href="https://cicada.build/discord"&gt;our Discord&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;In the meantime, I’d love to hear your feedback on what we’ve built! &lt;/p&gt;

&lt;p&gt;[0] &lt;a href="https://deno.land/"&gt;https://deno.land/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;[1] &lt;a href="https://docs.docker.com/build/buildkit/"&gt;https://docs.docker.com/build/buildkit/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;[2] &lt;a href="https://fly.io/"&gt;https://fly.io/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;[3] &lt;a href="https://github.com/cicadahq/buildkit-rs"&gt;https://github.com/cicadahq/buildkit-rs&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;[4] &lt;a href="https://github.com/cicadahq/cicada"&gt;https://github.com/cicadahq/cicada&lt;/a&gt;&lt;/p&gt;

</description>
      <category>cicd</category>
      <category>typescript</category>
      <category>devops</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Fig Scripts: Build internal CLI tools really fast</title>
      <dc:creator>Brendan Falk</dc:creator>
      <pubDate>Thu, 02 Feb 2023 19:47:30 +0000</pubDate>
      <link>https://forem.com/brendan/fig-scripts-build-internal-cli-tools-really-fast-19a6</link>
      <guid>https://forem.com/brendan/fig-scripts-build-internal-cli-tools-really-fast-19a6</guid>
      <description>&lt;p&gt;Hey everyone! I'm &lt;a href="https://www.linkedin.com/in/brendanfalk"&gt;Brendan&lt;/a&gt;, founder of &lt;a href="https://fig.io?ref=devto"&gt;Fig&lt;/a&gt;. Fig makes the shell easier and more collaborative.&lt;/p&gt;

&lt;p&gt;Today we are launching Fig Scripts, a ridiculously easy way to build and share internal CLI tools. You can build a workflow like the below in &amp;lt; 1 minute! &lt;/p&gt;

&lt;p&gt;Try it out &lt;a href="https://fig.io?ref=devto"&gt;here&lt;/a&gt; or watch this &lt;a href="https://www.loom.com/share/c3fa97d40ca2476aa140dba3abe456d3"&gt;quick demo video&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--lsgvDkCQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/62673ak5ibxd62sey9w6.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--lsgvDkCQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/62673ak5ibxd62sey9w6.gif" alt="Fig Scripts demo" width="880" height="586"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why did we build this?&lt;/strong&gt;&lt;br&gt;
There is surprisingly a lot of friction involved in building an internal CLI. Instead of writing business logic, most of your time is spent on boilerplate: integrating with the CLI framework, reading/validating user input, working out how to distribute/update your tool, tracking usage and errors, even adding colored output... This is stupid. You should be spending your time writing your business logic, not doing boilerplate!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How does Fig Scripts work?&lt;/strong&gt;&lt;br&gt;
We’ve built a platform to build, distribute, and manage your internal scripts and CLI tools. We handle all the boilerplate, you focus on writing your business logic.&lt;/p&gt;

&lt;p&gt;Some key features are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Jupyter-notebook style interface with multi-language support (bash, python, js/ts...)&lt;/li&gt;
&lt;li&gt;Easy input definition: Fig out-of-the-box terminal UI library makes accepting user input easy. We even generate the CLI flags for you.&lt;/li&gt;
&lt;li&gt;Instant cross-device sync: Changes are instantly provisioned to everyone on your team.&lt;/li&gt;
&lt;li&gt;Built-in usage monitoring and error reporting: See how frequently scripts/subcommands are used and what the most common errors are.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What's next?&lt;/strong&gt;&lt;br&gt;
Coming soon, we are going to add integrations with popular developer infrastructure (like AWS, Docker, GitHub), cron jobs, new cell types (like markdown), more language support, and the ability to run scripts in the cloud.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Our ask&lt;/strong&gt;&lt;br&gt;
It’s still early, there are kinks, but we think what we have is really promising. I'd love to hear any feedback on what we’ve built! 😊&lt;/p&gt;

</description>
      <category>bash</category>
      <category>programming</category>
      <category>devops</category>
      <category>git</category>
    </item>
    <item>
      <title>🎉 Launching Fig</title>
      <dc:creator>Brendan Falk</dc:creator>
      <pubDate>Thu, 18 Nov 2021 18:51:41 +0000</pubDate>
      <link>https://forem.com/withfig/launching-fig-da6</link>
      <guid>https://forem.com/withfig/launching-fig-da6</guid>
      <description>&lt;p&gt;I am excited to announce that as of today, &lt;a href="https://fig.io"&gt;Fig&lt;/a&gt; is generally available to the public for download. &lt;/p&gt;

&lt;p&gt;With our public launch, I'd like to share a little more about Fig's mission: who are we, what we're doing, and what's to come. &lt;/p&gt;

&lt;p&gt;The terminal has barely changed since the 1970s and yet is still used every day by tens of millons of developers. Our bet is the terminal isn't going away any time soon. We are excited for Fig to play a part in its evolution. &lt;/p&gt;

&lt;h3&gt;
  
  
  🚀 What is Fig?
&lt;/h3&gt;

&lt;p&gt;Fig makes the terminal easier for beginners, more productive for advanced engineers, and more collaborative for teams.&lt;/p&gt;

&lt;p&gt;To do this we are creating the &lt;strong&gt;app ecosystem for the terminal&lt;/strong&gt;. We've built out a simple Javacript API (Fig.js) that makes it easy to extend your local terminal &amp;amp; shell with visual apps and shortcuts.&lt;/p&gt;

&lt;p&gt;The first app built on top of the Fig platform is &lt;a href="https://github.com/withfig/autocomplete"&gt;autocomplete&lt;/a&gt;. We are launching autocomplete today, but soon, we will open up our API so anyone can create their own apps. &lt;/p&gt;

&lt;h3&gt;
  
  
  🔥 Our First App: Autocomplete
&lt;/h3&gt;

&lt;p&gt;Our first app, &lt;strong&gt;autocomplete&lt;/strong&gt;, is a modern intellisense for your interactive shell. We support inline completions for subcommands, options, and arguments for 200+ CLI tools. &lt;/p&gt;

&lt;p&gt;We make it ridculously easy to build completions. We've defined a declarative standard that makes building completions for things like  &lt;code&gt;git checkout &amp;lt;branch&amp;gt;&lt;/code&gt; or &lt;code&gt;npm install &amp;lt;package&amp;gt;&lt;/code&gt;  around 10 lines of Javascript. All of our completions are open source in our public GitHub repo (&lt;a href="https://github.com/withfig/autocomplete"&gt;withfig/autocomplete&lt;/a&gt;) and have been built by 120+ contributors!&lt;/p&gt;

&lt;p&gt;Autocomplete is built to be &lt;em&gt;extensible&lt;/em&gt;. You can add your own personal shortcuts, add project-specific shortcuts,  customize descriptions for package.json scripts, and even build completions for your team's internal CLI tool. You can build all this and more by checking out our &lt;a href="https://fig.io/docs"&gt;docs&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Here's what autocomplete looks like in action.&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/wel5bMZtFLA"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h3&gt;
  
  
  🎉 The Fig.js API
&lt;/h3&gt;

&lt;p&gt;Fig isn't &lt;em&gt;just&lt;/em&gt; autocomplete. Fig's backbone is the Fig.js, an API that enables building web apps that seamlessly integrate with the terminal.&lt;/p&gt;

&lt;p&gt;Very soon, we will open up access to the Fig API, so that anyone can build their own apps. You can use our API to:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Receive events from the shell (e.g. when a new process is executed or when the working directory changes)&lt;/li&gt;
&lt;li&gt;Run local shell commands&lt;/li&gt;
&lt;li&gt;Position the Fig window in various locations around the user's terminal&lt;/li&gt;
&lt;li&gt;Insert text into the active terminal session&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;We will discuss Fig.js in more depth when we're ready for &lt;strong&gt;you&lt;/strong&gt; to start building apps with it. In the meantime, you can see the early prototypes we built to get a sense of what's possible:&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/90T5ePnROZk"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h3&gt;
  
  
  ☁️ Future Apps
&lt;/h3&gt;

&lt;p&gt;What workflows do you do every day in the terminal that could be improved? Are any of these workflows shared across your team? &lt;/p&gt;

&lt;p&gt;As you might expect, engineers do &lt;strong&gt;a lot&lt;/strong&gt; of different things in their terminal. Here are a few Fig apps that will make common terminal workflows faster and easier:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Shared terminal configuration (scripts, functions, aliases, snippets, CLIs, and dotfiles) across a teams&lt;/li&gt;
&lt;li&gt;Interactive jupyter notebook style "runbooks" for dev ops/SREs&lt;/li&gt;
&lt;li&gt;Shared environment variables, secrets, certificates, and keys&lt;/li&gt;
&lt;li&gt;Live terminal sharing and session recording&lt;/li&gt;
&lt;li&gt;2FA for SSHing into remote machines&lt;/li&gt;
&lt;li&gt;"Fig cloud" for hosting and deployment&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;What else could you do?&lt;/em&gt; You could have an internal app for your team/company. You could build a keyboard driven git GUI that uses &lt;code&gt;d3.js&lt;/code&gt; to visualise your commit history. You could use Fig onboard new engineers to your team or even users to your public CLI.&lt;/p&gt;

&lt;p&gt;These ideas really barely scratch the surface of what's possible. We're so excited to see what the community will build!&lt;/p&gt;

&lt;h3&gt;
  
  
  💾 Why hasn't Fig built its own terminal?
&lt;/h3&gt;

&lt;p&gt;Early on, we decided not built our own terminal and instead integrate with  &lt;em&gt;existing&lt;/em&gt; terminal emulators. &lt;/p&gt;

&lt;p&gt;This is incredibly ambitious, but it has three major advantages:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Teams can use Fig to collaborate but engineers will still be able to use their preferred terminal. &lt;/li&gt;
&lt;li&gt;Fig developers can build for a much larger audience. Since anyone can add Fig to their existing setup, apps built on top of the Fig.js API are &lt;em&gt;not limited&lt;/em&gt; to people who use a specific terminal or shell...&lt;/li&gt;
&lt;li&gt;Fig is backwards compatibile. Your terminal is still your terminal. Fig is a new interface to build upon.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Fig will work with your standalone terminal (like iTerm2 or Kitty), the terminal embedded in your IDE (like VSCode or JetBrains), and even in the terminal in a browser-based IDE (like GitHub Codespaces). &lt;em&gt;Fig works where you work.&lt;/em&gt; &lt;/p&gt;

&lt;p&gt;For instance, here's Fig in VSCode:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--fkN-gzEh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://fig.io/images/screenshots/vscode-colored-background.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--fkN-gzEh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://fig.io/images/screenshots/vscode-colored-background.png" alt="Fig in VSCode" width="880" height="527"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We imagine a world where your manager uses bash on Windows, your colleague uses Alacritty on Arch Linux, and you use the terminal embedded in VSCode on macOS. Fig works with all of them and lets you seamless collaborate.&lt;/p&gt;

&lt;p&gt;Fig currently work with iTerm2, the native macOS terminal, Hyper, Alacritty, and the terminal embedded in VSCode on macOS. Once we have stablized and launched our API, we will go cross-platform to Linux and Windows. If you'd like to help with this, come chat with us in our &lt;a href="https://fig.io/community"&gt;Discord community&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;One day, we may build a Fig terminal to provide the best first party experience. For now, our integrations work quite nicely!&lt;/p&gt;

&lt;h3&gt;
  
  
  💰 How will Fig make money?
&lt;/h3&gt;

&lt;p&gt;We get asked this question a lot and so as a final note to our launch, I thought it would be good to address it.&lt;/p&gt;

&lt;p&gt;First, &lt;strong&gt;Fig will be always free for individuals&lt;/strong&gt;. We want users to feel confident that even if they sign up to Fig and become the biggest power user, they will never be charged.&lt;/p&gt;

&lt;p&gt;Our pricing model is inspired by GitHub's:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;For individuals and open-source projects, Fig is completely free.
&lt;/li&gt;
&lt;li&gt;For teams product that require hosting, Fig will charge a small fee per person per month.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For instance, our &lt;a href="https://fig.io/teams"&gt;autocomplete for teams&lt;/a&gt; product enables companies to build and share completions for internal CLIs. We think charging for hosting is reasonable as there is a cost incurred by us. We are willing to absorb this cost for individuals but not for teams. &lt;/p&gt;

&lt;p&gt;Finally, Fig will &lt;strong&gt;never&lt;/strong&gt; sell your data. The terminal is an incredibly sensitive environment. Security and privacy is top of mind for everything we do.  &lt;/p&gt;

&lt;h3&gt;
  
  
  ◧ What's next?
&lt;/h3&gt;

&lt;p&gt;We are really only just getting started. Fig's platform opens up a whole new world of opportunties for developer tooling. Our public launch of autocomplete today is just our first demonstration of what's possible. Our roadmap for the next several months includes more terminal integrations, launching our Fig.js API, new apps, and maybe even a beta on Linux!&lt;/p&gt;

&lt;p&gt;If you're excited about Fig's vision and mission &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Follow &lt;a href="https://twitter.com/fig"&gt;@fig&lt;/a&gt; on Twitter.&lt;/li&gt;
&lt;li&gt;Join our &lt;a href="https://fig.io/community"&gt;Discord community&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Join the team: &lt;a href="https://fig.io/jobs"&gt;fig.io/jobs&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Or just email me (brendan [at] fig.io)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;-Brendan Falk&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
