Mitchell Hashimoto

Mitchell Hashimoto's personal website.
https://mitchellh.com/writing (RSS)
visit blog
Ghostty: Reflecting on Reaching 1.0
26 Dec 2024 | original ↗

This isn't a release announcement. Ghostty 1.0 is out. You can download it and read about it on the Ghostty website. This is a personal reflection on the project.

Ghostty 1.0 is Coming
22 Oct 2024 | original ↗

After nearly two years of development and private beta testing1, I’m excited to share that Ghostty 1.0 will be publicly released in December 2024 as an open-source project under the MIT license.

Pledging $300,000 to the Zig Software Foundation
1 Oct 2024 | original ↗

My wife and I have pledged $300,0001 to the Zig Software Foundation (ZSF).

Tagged Union Subsets with Comptime in Zig
23 Sept 2024 | original ↗

Zig supports tagged unions1 and the Zig compiler will error if you switch on a tagged union without handling all possible cases. This is a great feature because it helps you avoid bugs when new cases are added to the union. Many languages support similar functionality.

Conditionally Disabling Code with Comptime in Zig
12 Sept 2024 | original ↗

Zig has a very powerful feature called comptime. Comptime lets you run Zig code at compile time. This isn't a special macro language or AST manipulation; it is just standard Zig code that runs at compile time. The only real limitation is that comptime code can't have side effects (no syscalls, no IO, etc.).

Joining Polar as an Advisor
4 Apr 2024 | original ↗

I'm excited to share that I've joined Polar as an advisor. The opening text of the Polar website at the time of writing is "Get paid coding on your passion." This is a deeply personal mission to me. I want to share some of my personal history and how it led to becoming an advisor for Polar.

Ghostty Devlog 006
12 Feb 2024 | original ↗

Hello! Welcome to the official devlog for Ghostty 👻!

Ghostty Devlog 005
6 Dec 2023 | original ↗

Hello! Welcome to the official devlog for Ghostty 👻!

Grapheme Clusters and Terminal Emulators
2 Oct 2023 | original ↗

Copy and paste "🧑‍🌾" in your terminal emulator. How many cells forward did your cursor move? Depending on your terminal emulator, it may have moved 2, 4, 5, or 6 cells1. Yikes. This blog post describes why this happens and how terminal emulator and program authors can achieve consistent spacing for all characters.

Reorient GitHub Pull Requests Around Changesets
30 Sept 2023 | original ↗

I've had the experience of using GitHub as a maintainer for very large open source projects (1000+ contributors), as an engineer for very large closed source corporate projects, and everything smaller. Through those experiences up to today, GitHub pull requests is where I spend almost all of my time while on GitHub, and to me its also unfortunately the most frustrating part of GitHub.

Ghostty Devlog 004
28 Sept 2023 | original ↗

Hello! Welcome to the fourth official devlog for Ghostty 👻!

Talk: Introducing Ghostty and Some Useful Zig Patterns
12 Sept 2023 | original ↗

This is the text format of a talk I did for Zig Showtime. If you'd rather watch the video, you can find it on YouTube: Zig Showtime: Ghostty. The video also includes a Q&A session at the end which I did not include in this post.

Ghostty Devlog 003
24 Aug 2023 | original ↗

Hello! Welcome to the third official devlog for Ghostty 👻!

Ghostty Devlog 002
5 Aug 2023 | original ↗

Hello! Welcome to the second official devlog for Ghostty 👻!

Ghostty Devlog 001
13 Jul 2023 | original ↗

An inaugural devlog for Ghostty 👻! Ghostty is the terminal emulator I've been working on as a side project since 2021. I recently shared that Ghostty exists and since then there's been a ton of interest in it!

My Approach to Building Large Technical Projects
1 Jun 2023 | original ↗

Whether it's building a new project from scratch, implementing a big feature, or beginning a large refactor, it can be difficult to stay motivated and complete large technical projects. A method that works really well for me is to continuously see real results and to order my work based on that.

Integrating Zig and SwiftUI
27 May 2023 | original ↗

Building a native GUI for a cross-platform application is a decades old problem. Nowadays, most people just don't and fallback to using a non-native experience such as Electron instead.

Prompt Engineering is for Transactional Prompting
24 Apr 2023 | original ↗

I've noticed a consistent point of confusion whenever prompt engineering is discussed and I believe the confusion stems from two distinct ways of using a language model: interactive prompting and transactional prompting. Prompt engineering is primarily about transactional prompting, and a considerable amount of confusion or negativity arises when an individual tries to apply it to interactive prompting.

Using Nix with Dockerfiles
23 Apr 2023 | original ↗

Nix is a powerful cross-platform package management tool. The benefits of Nix are far reaching, but one big benefit is that once you adopt Nix, you can get a consistent environment across development (on both Linux and Mac), CI, and production.

Prompt Engineering vs. Blind Prompting
14 Apr 2023 | original ↗

"Prompt Engineering" emerged from the growth of language models to describe the process of applying prompting to effectively extract information from language models, typically for use in real-world applications.

Growth of AI Through a Cloud Lens
4 Apr 2023 | original ↗

Every 10 or so years, a platform shift begins. 17 years ago, Amazon kicked off a platform shift with the release of S3 and EC2 under the Amazon Web Services (AWS) umbrella. This resulted in a shift best summarized as "cloud-native," fundamentally changing the way we build and deliver software worldwide from small individuals to the largest global companies.

My Startup Banking Story
14 Mar 2023 | original ↗

As a relatively new member of adult society, and an absolute infant of the business world, I didn't think much about bank choice. I figured: you put money in, you take money out, they're all the same. I also figured a local branch of a global bank is just a fungible tentacle of the giant banking machine, so also... who cares. Both incorrect assumptions, but let's relive and rediscover the effect of these assumptions as I did.

Contributing to Complex Projects
13 Mar 2022 | original ↗

As a frequent open source maintainer and contributor, I’m often asked: where do you start? How do you approach a new project with the goal of making meaningful changes? How can you possibly understand the internals of a complex project?

Zig Build System Internals
24 Feb 2022 | original ↗

Zig has a built-in build system for building projects. It runs on every platform Zig supports and is capable of building everything from simple executables and libraries to complex, multi-artifact, multi-step projects. This page will dive into how the internals of the Zig build system works.

Zig Sema: ZIR => AIR
13 Feb 2022 | original ↗

The next compiler stage after “AstGen” is “Sema.” Sema is responsible for taking the ZIR output from the AstGen stage and producing AIR. AIR, which stands for “Analyzed Intermediate Representation” is a fully typed intermediate representation, whereas ZIR is an untyped intermediate representation. AIR can then be lowered directly to machine code.

Zig AstGen: AST => ZIR
12 Feb 2022 | original ↗

After building the abstract syntax tree (AST), the next step in many compilers is to generate an intermediate representation (IR). Whereas the AST is a tree, the IR usually begins creating a sequence of instructions for various blocks of a program (a file, a function, etc.). This sequence of instructions format can be more easily analyzed for optimization and conversion to executable machine code.

Zig Parser
11 Feb 2022 | original ↗

Parsing is the next step in the compilation pipeline following tokenization. Parsing is responsible for constructing an abstract syntax tree from a stream of tokens. I’ve previously written about how Zig converts a stream of bytes (source) into a stream of tokens.

Zig Tokenizer
10 Feb 2022 | original ↗

Tokenization is the first step in a typical compiler pipeline. Tokenization is the process of converting a stream of bytes (the programming language syntax) into a stream of tokens.

Comparing Filesystem Performance in Virtual Machines
10 Jan 2014 | original ↗

For years, the primary bottleneck for virtual machine based development environments with Vagrant has been filesystem performance. CPU differences are minimal and barely noticeable, and RAM only becomes an issue when many virtual machines are active.

Packer
28 Jun 2013 | original ↗

For the past two months, I've been heads down working on something new. There is still a lot of work left, but I believe it's time to show everyone what I've been up to. Today, I'm announcing Packer: an open source tool for creating machine images for multiple platforms.

The Tao of Vagrant
18 Jun 2013 | original ↗

Before even installing Vagrant or seeing how it works, it is important to understand the high-level workflow of Vagrant in an actual working environment. These principles are collectively known as the "Tao of Vagrant." The following is an excerpt from Vagrant: Up and Running.

Automation Obsessed
6 Jun 2013 | original ↗

Someone asked me recently to share some previous work I had done. As I looked back at my personal history, and reflected on what I've done successfully, it was clear to me that I'm definitely working on things I'm meant to be working on. Automation has been my passion since the very beginning.

Abandoning Rubygems
21 Mar 2013 | original ↗

Vagrant 1.1+ no longer supports RubyGems as an installation method. Instead, you must install Vagrant 1.1+ using pre-made packages or installers. For folks used to the gem-based installation, this has caused a mixture of confusion and disdain. In this post, I enumerate my reasons for abandoning RubyGems, and why it is better for the Vagrant community long-term.

APPLE: My Key to Success
4 Mar 2013 | original ↗

No, not the company or the fruit. APPLE is an acronym ingrained into every Apple store employee before they ever even step on the retail floor. And it has continued to guide me ever since.

The New Normal
21 Jan 2013 | original ↗

The "new normal" is what I've named a phenomenon I've seen multiple times in my life. It's an event where your perception of normality is changed by the people surrounding you. Consequently, your ambitions and chance of achieving those ambitions change as well. Actively seeking a new normal can steer you in a direction you never thought you'd take.

↑ These items are from RSS. Visit the blog itself at https://mitchellh.com/writing to find everything else and to appreciate author's digital home.