diff --git a/content/Untitled.md b/content/Untitled.md new file mode 100644 index 00000000..e69de29b diff --git a/content/index.md b/content/index.md index 069835bb..eb938169 100644 --- a/content/index.md +++ b/content/index.md @@ -8,7 +8,7 @@ date: 2023-09-01 My name is Ellie Huxtable. I'm a software/infrastructure engineer, and am at my happiest when I'm building something cool. I love an adventure, and if I'm not at a computer there's a good chance I'm riding a motorcycle. -Here I am trying to maintain a personal wiki, or a second brain. I've found that writing my learnings and thoughts down is immensely helpful. +Here you will find a mix of notes, longer/more thoughtful posts, and links to various things I've done @@ -26,20 +26,26 @@ This site is constantly shifting, but here are some things you may be interested - [Life](/life), where I'm writing about my travels, adventures, and life in general - [Notes](/notes), where I write about things I'm working on and exploring. They're not supposed to be as high-quality as a post, but I'll be publishing them much more often. -## Speaking -I gave my first talk at [FOSDEM in 2023](https://www.youtube.com/watch?v=uyRmV19qJ2o), and am looking forward to giving more in the future! +## Speaking + +- FOSDEM 2023, [magical shell history with Rust](https://www.youtube.com/watch?v=uyRmV19qJ2o) +- EMFCamp 2024, [keeping shell history in sync with turtles and magic](https://www.youtube.com/watch?v=FIswx57l6hw) + +## Podcasts + +- [Rustship #3](https://www.marcoieni.com/2023/09/%EF%B8%8F-atuin-shell-history-sync-search-and-backup-ellie-huxtable-rustship-3/) +- Changelog Interviews 579, [Making shell history magical with Atuin](https://changelog.com/podcast/579) ## Publicity -Some of my [projects](/projects) have been featured in print, in blogs, and in podcasts. This list is not exhaustive, please get in touch if I've missed something! +Some of my [projects](/projects) have been featured in print, and on various blogs/podcasts. This list is not exhaustive, please get in touch if I've missed something! ### Atuin - [Linux Magazine, issue 265](https://www.linux-magazine.com/Issues/2022/265/Atuin) - [LinuxUser 09/2022 (a German magazine)](https://www.linux-community.de/ausgaben/linuxuser/2022/09/die-befehlshistorie-ueber-mehrere-rechner-hinweg-im-blick-behalten/) -- [Changelog 53](https://changelog.com/news/53) +- [Changelog News 53](https://changelog.com/news/53) - [an interview with console.dev](https://console.dev/interviews/atuin-ellie-huxtable) - discussed on [LinuxMatters #10](https://linuxmatters.sh/10/) - [a GitPod guide](https://www.gitpod.io/guides/persisted-terminal-history-atuin) -- [RustShip #3](https://www.marcoieni.com/2023/09/%EF%B8%8F-atuin-shell-history-sync-search-and-backup-ellie-huxtable-rustship-3/) ### iPod - [Vice, with an interview](https://www.vice.com/en/article/qjbexd/a-software-engineer-upgraded-an-old-ipod-for-2022?ref=ellie.wtf) diff --git a/content/places.md b/content/places.md new file mode 100644 index 00000000..e2976556 --- /dev/null +++ b/content/places.md @@ -0,0 +1,9 @@ + +# Thailand +## Bangkok + +| Name | Lat/lon | Gmaps | Note | Tags | +| ------------------ | ------- | ------------------------------------------------- | -------------------------------------------------------------------------------- | ------------- | +| PAGA Microroastery | | https://maps.app.goo.gl/X3CSQp3Q8tijEoPT6?g_st=ic | Fantastic filter coffee. Had a good selection of Geisha when I visited | #place/coffee | +| Casa Lampin | | https://maps.app.goo.gl/GBLteh1DwmDD5XT7A | Really good to work remotely in. Lots of space, nice tables. Wifi is good enough | #place/coffee | +| | | | | | diff --git a/content/posts/switching to zed.md b/content/posts/switching to zed.md new file mode 100644 index 00000000..f0c5b42c --- /dev/null +++ b/content/posts/switching to zed.md @@ -0,0 +1,100 @@ +--- +title: My experience switching to Zed from NeoVim +date: 2024-04-16 +description: Experimenting with Zed, a new text editor +--- +I've been using Vim/NeoVim for the past decade, at least. I converted from Sublime Text after my workflow became more terminal-heavy. + +In the years since, I've tried a great many editors - and always fell back to Vim. VSCode was cool, but the Vim emulation just wasn't quite right. I kept tripping up over myself, and the experience was very jarring. I also felt that the editor was a bit overcrowded - I'd like it to leave me alone to edit text, please! + +I also tried emacs (well, evil), helix, and others. + +But so far, Zed has been the closest to tempting me away. I tried it sometime last year, but it felt a little too unpolished - plus, at the time it was not [open source](https://zed.dev/blog/zed-is-now-open-source). + +I started with [Atuin](https://atuin.sh), a Rust project. The tooling was all setup automatically, with no configuration needed on my part. Nice! + +## Settings + +Zed is pretty nice out of the box, but there were a few things I wanted to change. + +Here's my entire config: + +```json +{ + "theme": "Gruvbox Dark Soft", + "vim_mode": true, + "buffer_font_size": 12, + "ui_font_size": 14, + "buffer_font_family": "FiraCode Nerd Font", + "relative_line_numbers": true, + "terminal": { + "line_height": "standard" + }, + "lsp": { + // Specify the LSP name as a key here. + "rust-analyzer": { + //These initialization options are merged into Zed's defaults + "initialization_options": { + "checkOnSave": { + "command": "clippy" + } + } + } + } +} + +``` + +Other than the obvious theme/font settings, I found the terminal line height a little weird out of the box. It seemed to be a bit higher than it should be, which made some TUIs look odd. Setting it to "standard" resolved this. + +I also made some adjustments to the lsp config for Rust. +## Key bindings + +The next changes I made were to the Vim bindings. They're pretty standard out of the box, but I have a few core customisations that I really need in order to be productive. + +- `jj` - I remap jj -> esc, to keep my fingers on the home row +- `w` - to save the current buffer +- `s t` - grep the entire workspace +- `f` - search for files + +As far as I am aware, Zed does not have the concept of a leader. That's ok! I can hardcode the bindings. + +Here's what I have: + +```json +[ + { + "context": "Editor && vim_mode == insert && !menu", + "bindings": { + "j j": "vim::NormalBefore" + } + }, + { + "context": "Editor && vim_mode == normal && !menu", + "bindings": { + "space w": "workspace::Save", + "space s t": "workspace::NewSearch", + "space f": "file_finder::Toggle" + } + } +] + +``` + +I thought it was pretty cool how the keymap allows me to specify a context as an expression. It's far easier to read than something like `inoremap`. + +You can find other actions in the default keybindings (cmd-shift-p, search default keybindings) + +## Editing experience + +I've found Zed to be very pleasing to use. Everything is buttery smooth, and you can really feel that they've put [lots of work into performance](https://zed.dev/blog/120fps). The UI is minimal, and it does remind me a bit of Sublime. + +Their [UI framework](https://www.gpui.rs/) is written in Rust, and hopefully we will see more applications using it soon! + +## Will it stick? + +Not yet. But it was close! I've used it for longer than any other editor I've tried, but I still feel strange using an editor with a terminal in it - rather than a terminal with an editor. That is absolutely a me problem though, and nothing to do with Zed. + +Otherwise there's still a couple of gaps with the vim emulation. I use [marks](https://vim.fandom.com/wiki/Using_marks) pretty heavily, and they aren't there yet - which is something I kept tripped over. From time to time, my jj binding didn't seem to trigger - perhaps I've pressed it too fast. I couldn't easily replicate this though, it just happened from time to time. + +I think I'll keep checking in with Zed, and perhaps it will fully convert me soon. \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 0d2bf386..738fe8fa 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@jackyzha0/quartz", - "version": "4.1.1", + "version": "4.3.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@jackyzha0/quartz", - "version": "4.1.1", + "version": "4.3.0", "license": "MIT", "dependencies": { "@clack/prompts": "^0.7.0",