HN user

mitchellh

11,288 karma

Email: m@mitchellh.com

GitHub: http://github.com/mitchellh

Twitter: http://twitter.com/mitchellh

Site: http://mitchellh.com

Posts29
Comments558
View on HN
research.swtch.com 9y ago

My Go Resolutions for 2017

mitchellh
329pts197
groups.google.com 12y ago

Go 1.2 Release Candidate 3 Released

mitchellh
1pts0
tito.io 13y ago

GopherCon Registration Opens ($250 Early Bird)

mitchellh
2pts0
github.com 13y ago

Get: A utility for cloning and fetching your remote git repositories from GitHub

mitchellh
2pts1
groups.google.com 13y ago

Go 1.1 RC2 is out

mitchellh
86pts27
www.ircrelay.com 13y ago

Show HN: IRCRelay - Hosted IRC Bouncer Service

mitchellh
30pts44
d.pr 13y ago

New Heroku pricing "Membership" monthly fee for new accounts

mitchellh
1pts1
github.com 14y ago

Show HN: HTML7 - Modern HTML

mitchellh
24pts10
blog.engineering.kiip.me 14y ago

A Year with MongoDB

mitchellh
362pts141
vagrantup.com 14y ago

Vagrant 1.0 - Virtualized development for the masses.

mitchellh
109pts20
opusmagnus.wordpress.com 14y ago

Discovering SmartOS

mitchellh
8pts0
money.cnn.com 14y ago

Facebook buys Gowalla

mitchellh
310pts105
blog.engineering.kiip.me 14y ago

EC2 to VPC: A transition worth doing.

mitchellh
80pts19
www.engadget.com 14y ago

Hands on with Fusion Garage's Grid 10 tablet and Grid 4 smartphone

mitchellh
7pts1
mitchellhashimoto.com 15y ago

CloudFormation: The Big Picture

mitchellh
25pts0
arduino.cc 15y ago

Arduino Announces New Changes "Dinner is Ready"

mitchellh
52pts22
vagrantup.com 16y ago

Vagrant: A tool for building and distributing virtual development environments

mitchellh
129pts28
spawnlink.com 17y ago

Erlang: Managing Application Configuration the Erlang Way

mitchellh
1pts0
spawnlink.com 17y ago

Erlang: Getting Started with EUnit

mitchellh
17pts0
spawnlink.com 17y ago

Erlang: Performing Real-Time Upgrades to an OTP System

mitchellh
8pts0
spawnlink.com 17y ago

Erlang: Introduction to Releases; packaging code for deployment

mitchellh
14pts0
spawnlink.com 17y ago

Erlang: An introduction to "Applications"

mitchellh
21pts0
spawnlink.com 17y ago

Erlang: Using Supervisors to Keep Your Processes Running

mitchellh
22pts5
spawnlink.com 17y ago

Erlang: An introduction to gen_event by creating Account Notifications (Part 3)

mitchellh
24pts1
spawnlink.com 17y ago

Erlang: An introduction to gen_fsm by creating an ATM (Part 2)

mitchellh
26pts8
spawnlink.com 17y ago

Erlang: An introduction to gen_server by creating a banking system

mitchellh
41pts3
spawnlink.com 17y ago

Erlang: Introduction to the Open Telecom Platform

mitchellh
8pts3
spawnlink.com 17y ago

Erlang: Rules of Hot Code Swapping

mitchellh
28pts1
spawnlink.com 17y ago

Compendium of Beginner Erlang Resources

mitchellh
29pts5

Good news is that modern compilers are more than capable of emitting SIMD code even if original source is nothing but.

They're really not (I have a whole section on it in the blog post). This example in the post doesn't auto-vectorize, for example. And its a pretty big part of the overall throughput for plain text runs (ascii or unicode). Really, the point of that section is that almost nothing auto-vectorizes, backed up by LLVM docs and published research.

Instead, writing 12 lines for a 5x gain is way easier than crossing your fingers and hope someone else pays your bills.

Bigger picture, the real point is that this stuff isn't complicated. You wouldn't copy and paste 100 lines because you hope the compiler "lifts this into a for loop", you just write the for loop cause you know how and its simple.

Similarly, the common case of "process N values in parallel" is very simple. Write a dozen lines of code you're comfortable with. No need to pray the compiler people saved your bacon.

i've found that zig tends to extend my vectors to the native width of the platform and then operate on them there

oh interesting. though i suspect that isn't zig and thats llvm.

mitchell, i know you hang around some of these comments sometimes

hi im here

i noticed that in ghostty you bring in some c++ libs to do the simd heavy lifting for you. any plans to port that to zig? anything missing from the language or libs that's preventing it?

No plans to port it. For others, this is referencing highway: https://github.com/google/highway

The major limitation of Zig's vectors is that they're compile-time only. So if you're building redistributed software that compiles for a baseline CPU target, it won't be as optimized as it could be for YOUR possible machine.

Highway compiles our SIMD modules for different hardware configurations and at startup does a CPUID fingerprint to figure out which to load. That way even baseline has AVX512 etc. implementations, and we just activate the right one at runtime.

We only use Highway for our hottest hot paths that we feel benefit from that specialization.

No plans to port that (although, I spent hundreds of dollars and slop-forked it into Zig with the help of this good boy GPT and it worked great actually, but I didn't want to maintain it).

Case-in-point, the example in my own post doesn't auto-vectorize with LLVM or GCC at highest optimization levels. Basically, compilers will never auto-vectorize loops with an early loop break afaik.

If you assume Hashimotos net worth is one billion dollars, a $400k donation is equivalent to a $400 donation if your net worth is one million dollars.

1. Net worth is significantly less than that (taxes + heavy philanthropy)

2. $400K donation is orders (plural) of magnitude off our actual philanthropic giving in total. This is just one donation.

How is it out of touch? I donated much more than Hashimoto did relative to our net worths, but I cannot deny that I would have felt much more satisfied making a 1000x impact if I was a billionaire.

You have no way of possibly knowing this. And I bet you its not true.

I'm no longer a billionaire, partially because I paid an astronomical amount in taxes (I don't play the tax avoidance games). And partially because we're donating a whole lot more than $400K per year. This is ONE donation. We don't publicize most of our giving because it attracts armchair critics like you, and its distracting from the goals.

(I make an exception for Zig and technical things because my influence for better and worse usually is net positive for the initiative)

But, more importantly, I don't think playing these "my donation is worth more than yours" games is productive. If you want to think that way thats fine, I won't defend myself or my family any further than this post.

I'm the creator of Ghostty. This isn't right. It should idle at 0 to 1%, as supported by sibling comments. If you can collect more details about your system please open a discussion on the main Ghostty repo. Same with memory.

In terms of speed, same thing: if you can provide some kind of objectively measurable thing, we can look into it. Everything we've measured so far firmly places Ghostty in the "fast" camp (with friends such as Kitty).

We're sometimes faster, sometimes slower, but in any case not noticeably so. You wouldn't pick Ghostty vs Kitty for example for performance, it'd be something else. But you would pick Ghostty over say... iTerm2 for performance (but you may pick iTerm2 for features, its extremely feature rich!).

As with all things, the horror stories just get the most attention. People love to rage. There are plenty of boring (good, even!) VCs out there. They just work more quietly, professionally.

I'll share a story, but its about a close friend and not me so I won't name any explicit actors and I'm going to round out the numbers. You either trust me or you don't, but this is a very direct relationship I have to both the founder and VC.

The story is this: the founder started their company outside of SV, so the lawyers weren't super familiar with startups and messed up the initial incorporation and stock plan stuff (actually super common: use Stripe Atlas or pay a startup-aware lawyer!). Went under the radar through years. This company ended up being bought for nearly $1B (with a B) after many rounds and a large board.

During the legal work to close the acquisition, they found out this messed up stock plan. Without going into the details, the effect was that instead of taking home $200M, the founder would take home ~$75M. The mistake the lawyer made almost a decade earlier was about to cost him $125M.

Most of the board basically said "too bad so sad, law is law." But one VC (the one I know, the one I'm talking about) basically strong armed and politicked the whole thing and eventually convinced everyone around the table to give up an equal share of their own holdings to make the founder whole.

Letter to the law: they didn't have to.

Spirit of being founder friendly: this VC went to bat hard and got everyone to yield to make things "right."

Also, look, you might argue $75M vs $200M is just "rich vs rich." Who cares? Sure. That's not the point.

You don't hear about stuff like this because honestly its not a big enough deal and feel good stories get way less clicks than pitchfork stories.

Correct. I use AI a ton and I'm having more fun every day than I ever did before thanks to it (on average, highs are higher, lows are lower). Your characterization is all very accurate. Thank you.

Here's some other topics I've written on it:

- https://mitchellh.com/writing/my-ai-adoption-journey

- https://mitchellh.com/writing/building-block-economy

- https://mitchellh.com/writing/simdutf-no-libcxx (complex change thanks to AI, shows how I approach it rationally)

Yep!

To be more specific, Open Source only promises the four fundamental freedoms (https://en.wikipedia.org/wiki/The_Free_Software_Definition).

It promises literally NOTHING else, including zero cost. Free and open source software can and should cost money! (The "free" in "free and open source" is not about money, people!)

I'm actually very enthusiastic about these OSS "supply chain" attacks that have been happening in various communities. Because optimistically I hope it'll help people realize that OSS _is not a supply chain_ (more details here: https://lobste.rs/s/cxwidw/no_one_owes_you_supply_chain_secu...). Unless you're paying your vendor AND/OR have a contract in place with them with certain guarantees, you do not have a supply chain.

One term thats in almost every FOSS license is "this software is provided with no warranty." A supply chain implies a warranty. Therefore, FOSS is not a supply chain.

I know this is ridiculously dramatic, but its the truth: I actually cried writing this blog post (tears hit my keyboard, I'm embarrassed to say).

Nobody should cry over a SaaS, of all things. But GitHub has meant so much more to me than that (all laid out in the post). I have an unhealthy relationship with it. Its given me so much and I'm so thankful for it. But, it's not what it used to be. I don't know.

We've been discussing it off and on for months, really started seriously discussing it a couple weeks ago, and made the final decision a few days ago. Putting metaphorical pen to paper and hitting "publish" makes it so very real.

I'm sure folks will make fun of me for this. It is a stupid thing. But I truly love GitHub, and I hope they find their way.

Im touched that “Ghostty but for X” is a marketing point but what does it mean in this case? I thought this might be based on the architecture I did for Ghostty. But it’s not. Or it might be full native UI, but it’s not (it’s GPUI). Not trying to be rude or unappreciative but as the creator of Ghostty here… what do you mean?

I'm not concerned with it.

The real goal isn't for Alacrity or Kitty or WezTerm or any other terminal to use libghostty. I think over the long term, terminal emulator user bases dwindle down to niche (but important) use cases.

The real goal is for higher-level tooling (GUI or browser) that utilizes terminal-like programs to have something like libghostty to reach for. I think this represents the much, much larger ecosystem out there that likely touches many more people. For example, Neovim's terminal mode, terminal multiplexers, PaaS build systems, agentic tooling, etc. You're seeing this emerge in force already with the awesome-libghostty repo.

libghostty would still be useful for traditional terminal emulators to replatform on, and for example xterm.js is seriously looking into it (and I'm happy to help and even offered their maintainer a maintainer spot on libghostty). But, they're not the goal. And if fragile egos hold people back, it's really not my problem, it's theirs.

Yes, LLMs with Zig are absolutely useless without agentic behaviors. Throw an agent in the mix and it's totally fine. Bonus points if you pair it with some basic agent skills so it knows how to look up language references, stdlib files, etc. then it does even better.

It's been extremely good. I should really blog about it in more detail because I do get asked this question regularly. It's been very good.

The large language changes are a burden, but it's something I knew going into it. And so far in every case, it's been well worth it. For example, 0.15 introduced the std.Io.Writer overhaul, but I really love the new API. I haven't started the std.Io change yet for 0.16. We'll see. And honestly, LLMs make this all way less painful... even though they're not trained on it, agents are able to run builds, reference docs, and work their way through the upgrade with huge success.

I thought that finding contributors would be an issue, but it hasn't at all. There's a lot of people out there eager to use Zig, the language isn't hard to learn (as long as you're already familiar with systems concepts), etc. It has been good.

I'll think about more to say if I write about this more but overall, I'm very happy with the language, the community, and the leadership. All good.

Overall I would describe it as "amusing."

If you told me 3 years ago that terminal usage would _increase_ I would've laughed. Beyond that, I'm now having regular conversations with the frontier agentic coding companies (since they're far and away the largest terminal users at the moment) and if you had told me 2 years ago that that would be happening because of a terminal, I would've laughed even harder.

So, it's amazing. But overall, its amusing.

Note in Ghostty 1.3 we disable discretionary ligatures (I think dlig/calt) by default as recommended by font standards. We still enable liga though that usually contains far less controversial ligatures.

I'm the original creator of Ghostty. It's been a few years now! I don't know why this is on the front page of HN again but let me give some meaningful updates across the board.

First, libghostty is _way more exciting_ nowadays. It is already backing more than a dozen terminal projects that are free and commercial: https://github.com/Uzaaft/awesome-libghostty I think this is the real future of Ghostty and I've said this since my first public talk on Ghostty in 2023: the real goal is a diverse ecosystem of terminal emulators that aim to solve specific terminal usage but all based on a shared, stable, feature-rich, high performant core. It's happening! More details what libghostty is here: https://mitchellh.com/writing/libghostty-is-coming

I suspect by the middle of 2027, the number of people using Ghostty via libghostty will dwarf the number of users that actually use the Ghostty GUI. This is a win on all sides, because more libghostty usage leads to more stable Ghostty GUI too (since Ghostty itself is... of course... a libghostty consumer). We've already had many bugs fixed sourced by libghostty embedders.

On the GUI front Ghostty the apps are still getting lots of new features and are highly used. Ghostty the macOS app gets around one million downloads per week (I have no data on Linux because I don't produce builds). I'm sure a lot of that is automated but it's still a big number. I have no telemetry in Ghostty to give more detailed notes. I have some data from big 3rd party TUI apps with telemetry that show Ghostty as their biggest user base but that is skewed towards people consuming newer TUIs tend to use newer terminals. The point is: lots of people use it, its proven in the real world, and we're continuing to improve it big time.

Ghostty 1.3 is around the corner, literally a week or two away, and will bring some critically important features like search (cmd+f), scrollbars, and dozens more. In addition to GUI features it ships some big improvements to VT functionality, as always.

Organizationally, Ghostty is now backed by a non-profit organization: https://mitchellh.com/writing/ghostty-non-profit And just this past week we signed our first 4 contributor contracts to pay contributors real money! Our finances are all completely public and transparent online. This is to show the commitment I have to making Ghostty non-commercial and non-reliant on me (the second part over time).

That's a 10,000 foot overview of what's going on. Exciting times in Ghostty land. :) Happy to answer any big questions.

To give a little productive criticism, one thing I really miss is when having tiled terminals, I want to be able to full screen one of them temporarily.

I think you're looking for the `toggle_split_zoom` binding which has existed since Ghostty 1.0 and is default bound to `cmd+shift+enter` on macOS which is the same binding as iTerm. It's also visible in the menu and command palette.

We recently added a kind of split title bar, making it double click to zoom is a good idea. I'll add an issue for that to the roadmap.

Vouch 5 months ago

No, that’s quite a jump. I just respect whatever your preferences are.

Vouch 5 months ago

That’s fine and doesn’t bother me one bit.