8 Tools For Software Development Happiness in 2023
Вставка
- Опубліковано 27 тра 2024
- Some software development tools that make me really happy, all of which I discovered in the past several years. At the end I also go over some promising tech that isn't yet part of my daily workflow but that I'll be keeping an eye on.
Code to the Moon Discord: / discord
Glove80 Keyboard (not sponsored) - www.moergo.com/collections/gl...
My Glove80 ZMK Configuration - github.com/MoonKraken/glove80...
Camera: Canon EOS R5 amzn.to/3CCrxzl
Monitor: Dell U4914DW 49in amzn.to/3MJV1jx
SSD for Video Editing: VectoTech Rapid 8TB amzn.to/3hXz9TM
Microphone 1: Rode NT1-A amzn.to/3vWM4gL
Microphone 2: Seinheiser 416 amzn.to/3Fkti60
Microphone Interface: Focusrite Clarett+ 2Pre amzn.to/3J5dy7S
Tripod: JOBY GorillaPod 5K amzn.to/3JaPxMA
Mouse: Razer DeathAdder amzn.to/3J9fYCf
Computer: 2021 Macbook Pro amzn.to/3J7FXtW
Lens 1: Canon RF50mm F 1.2L USM amzn.to/3qeJrX6
Lens 2: Canon RF24mm F1.8 Macro is STM Lens amzn.to/3UUs1bB
Caffeine: High Brew Cold Brew Coffee amzn.to/3hXyx0q
More Caffeine: Monster Energy Juice, Pipeline Punch amzn.to/3Czmfox
Building A Second Brain book: amzn.to/3cIShWf
Other Keyboards
Redragon K552 - amzn.to/3oNtpD7
Keychron Q1 - amzn.to/3YkJNrB
Keebio Iris - keeb.io/collections/iris-spli...
Purple Gradient Keycaps on Iris - amzn.to/3UZq93f
Corne v3 - shop.beekeeb.com/product/pre-...
Apollo themed keycaps on Corne - amzn.to/3IXKPUc
Chocofi - shop.beekeeb.com/product/pres...
Piantor - shop.beekeeb.com/product/pre-...
Kinesis Advantage360 Professional - amzn.to/3Ce5zUf - Наука та технологія
Join us on Discord! discord.gg/2G35Sp6kpQ
A few other great tiling window managers on Linux:
- GNOME has a fantastic extension called "Material Shell" which turns it into a tiling window manager.
- Pop-OS's COSMIC desktop has a tiling window mode which can be toggled on and off.
- Sway is a tiling Wayland compositor which is a drop-in replacement for i3
+1 for Pop OS tilling
nice, thanks for pointing these out! my lack of familiarity with the Linux ecosystem definitely showed here...
thanks for the suggestion. I'll try that one out.
Right now I'm very happy with gSnap and I created some advanced layouts depending on specific use cases (Messaging+Spotify+IDE+Browser, Terminal+IDE+Browser, ...)
started using i3, tmux and neovim like 2 months ago, now I can't imagine my life without these 3. Great video btw ;)
nice and thank you !
I've never understood the need to use tmux while using i3. Isn't it just two ways to solve the same problem? Or has tmux some killer feature that's missing in i3?
@@ArnaldurBjarnason i3 and tmux solve different problems imo. For someone always working from the terminal like me, I like to have max 3 workspaces opened in i3, the first one for my terminal, second for browser and third for discord. Now in my terminal I will be in a tmux session with the first window being always neovim, the second window can be like running a local dev server or just bash to run commands. And if I need to work on another project I just switch tmux sessions :)) idk if that makes sense but for me i3 and tmux are complementary
@@ArnaldurBjarnason Tmux is more like WM + Workspaces, but without GUI dependencies. If you are working on a remote machine it basically gives you all of these things + allows you to re-attach to your session should you get disconnected. On local machine WM vs. terminal multiplexers is mostly a workflow preference. Maybe there is less resource overhead if you run some job in a detached tmux session vs. an inactive workspace, I'm not sure though. The odds of loosing work (eg; if ignored for days / weeks / months) does seem infinitely higher in a Workspace than a Tmux session to me.
I use zellij instead of tmux. It is intuitive, has great defaults and is pretty feature complete. I love its file format for "terminal workspaces as code". Easy to read, write and share on a per repo basis. I never got into tmux because I didn't have the time to configure it and or learn the weird keybindings. I hear that tmux users really miss the feature to restore tmux sessions from disk (after shutdown), zellij doesn't have that but my use case doesn't really need this. I prefer to store layout files.
I tried Zellij for the first time a few days ago and so far I love it! I'm running out of reasons to stick with tmux...
3:26 doom emacs is so good. It's almost like using vim but you also get the emacs features.
Obsidian is great. The flexibility is incredible.
it is! some days I ask myself why I haven't switched yet...
I honestly love Obsidian, I do all my writing stuff there: daily and weekly journaling, learning stuff for uni, write notes about stuff I read and that all on your pc in simple markdown files, I really apprecciate that they kept it in this open format! I hear their sync works great, for me I just keep the notes inside my Nextcloud and have it sinced like that, works lovely :)
@@codetothemoon I came to Obsidian to link code/math snippets and make canvases, but cherish it as a tool to offload nagging thoughts into my daily journal on my walks. It's easier to go on walks these days because my digital mind comes with me now, as metaphysical as that sounds. The mobile UI could be snappier. At least it all syncs so that when I get back home to code or blog, I can [[]]'s those thoughts into gray nodes that show up in my graph or my ctrl + shift + f searches.
My thought patterns are more cross-referential or recursive than hierarchical, hence my ergonomic struggle with Making Too Many Folders. [[Folder nesting is a bit like OOP and inheritance, if you squint a bit]] (ctrl + alt + enter)
Edit: Since you mentioned Copilot I'll mention my Rust-friendly hack to get the right code suggestions. Turn the problem into a "fill in the blank" game. Write the function name, arg list, signature, take a stab a the final line, stick a `todo!();` in the middle so it compiles, and prime it with the first few lines. If you type `let employee_name_from_database: String = `, it probably knows what you want to do. This way you iterate from a useless function that compiles to one that captures more and more, but you type less and can think through the logic while it fills in the holes.
I use Copilot X, but it's not without flaws. It is ignorant of more recent Rust syntactic sugar with formatting and crate knowledge. I value the chat window for saving me the trip to my web browser. I assume that the AI is an ensemble of LLMs specialized for code, so it has to spend less compute power on code switching (ha!).
Oh ma! You've just described my setup! down to the grits of soldering own custom keyboard.
My whole setup is stands on the foundation of nix, I think this is something worth looking into is you are heavy terminal and multiple machine users.
I've using most of the tools described here for years, occasionally evaluating what's out there on the market -- the list above is comprehensive and will keep one busy and productive for years to come.
nice! I'm definitely kicking myself for not discovering these tools many years sooner - I've learned that I need to sometimes disconnect from whatever "needs to be done yesterday" tasks and invest more time into researching tools like these that might have a significant impact on long term productivity.
I've heard of nix and the premise sounds very compelling, just haven't quite gotten around to trying it yet...
I ordered the Glove80 and (coming from the kinesis advatange platform) and waiting for it to arrive. I’ve been trying to find a tutorial on setting up the glove80 with home row mods - would be cool to have a short video demonstrating the process.
So do you use all the note taking apps simultaneously? You mentioned taking notes in eMacs, notion and obsidian. Do you do anything to sync them or do you use them for different purposes? It seemed like there was overlap between them all. Maybe I misunderstood but if you were to pick one which would you pick between them?
I actually don't use Obsidian at all - it's just a tool I'm keeping an eye on and occasionally tempted to switch to. I do use emacs and Notion, and I don't have ultra clear rules about which I use for what purposes. I have quite a bit of stuff in Notion from the time prior to me discovering org-roam, but for new things if it's work or technology related it's likely going into an org document. If it's something personal, or something that requires tables (I can't stand org tables for many purposes) it's probably going into Notion.
Thanks for making this video 😊
Thanks for watching, glad you got something out of it!
These are, hands down, the best tools to use if you want to waste all your time fiddling with configs while getting no actual work done.
you got me! 😎
@@codetothemoon 😁😇 obviously I'm being cheeky. I love all these tools, and love fiddling with their configs -- much more than actually working. 👀
Amazing video, really helpful content, thank you! Would you mind sharing a link to your glove80 config on the Moergo site for easier visualisation? Unfortunately there doesn't appear to be a way to import your config to the site, so I have no idea what I'd actually be using 😅
I actually haven't tried their graphical configuration options, as I have other boards that use ZMK and it's much easier to share layouts between them by copying and pasting code. I do plan to give graphical configuration a try though, so I'll report back if I find a way to replicate my layout there!
@@codetothemoon Ok no worries, thanks for the response :)
Hey Ken, great video! I'm sure you get the same nagging feeling I do "Wait, I could do all these in emacs with just a long enough config..." 😀
I really appreciate you recommending day one!
it surprises me how loyal I've become to an app that does something so simple because it does it so well
You can have obsidian + chatgpt through a plugin, so you "eliminate" the need for mem ai and notion (assuming that's what you're going for). Because it's local, I'm sure someone will eventually create a plugin that allows you to run a local LLM to scan your notes and answer all questions/ summarize your own notes.
Also, I know you mentioned that you enjoy that notion is cloud-based, so I thought you should know that you can also pay for Obsidian's cloud sync for $8 per month
wouldn't you be paying the ChatGPT API usage fees with the Obsidian setup though? If not, sign me up! If so, I'll probably hold off until the local LLM option becomes more viable
@@codetothemoon Yeah, you definitely would. But I suppose that as long as you kept it under $8 a month, you'd still beat out the pricing of mem-ai.
Maybe this is just from my past of using emacs (I love the doom emacs shoutout), but the idea of keeping everything "simple" and having a "one-stop" tool for everything really appeals to me.
What about RemNote? I has devices sync for free.
Great video, as always :)
I see Haxe on your list to check out there, I am currently considering it myself...
Being able to write essentially TS syntax (with some additional features thrown in) & spit out a binary is pretty rad.
Keeps my life simple & as it offers the option of additional performance with virtually no effort (ok, maybe I am lazy).
Grain was another language that really interested me (for simple syntax, features & WASM) - probably the nicest syntax I have ever seen,
but unfortunately it is lacking some key requirements, like a http client - at this stage.
You are my favourite coder❤ I got the video notification but I was busy yesterday 😅. Love you man❤❤
thanks!! sending ♥️ right back!
@@codetothemoon got it 💘
My setup:
OS: Arch Linux btw
Window manager: AwesomeWM
Shell: Nushell
Terminal: Kitty
Terminal Multiplexer: Zellij
Note taking: Obsidian
IDE: Neovim (Nvchad specifically).
Terminal prompt: Starship.
nice! I just tried Zellij for the first time and it seems really good, I'm considering switching from tmux. I'm also a big fan of NvChad even though I don't use it as part of my daily workflow. I had originally intended to mention it at the end of the video but wound up forgetting to record that part 🙃
I've been having troubles with keeping track of my notes. I think I would with obsidian
I started with amethyst and now I’m using yabai with skhd. Love it!
Looking at using LeftWM when I switch to Linux.
Also another vote here for zellij!
Any recommendations for widescreen monitors for mac? I’d heard there were some weird scaling issues with some resolutions?
This is the one I use - for about 3 years now - and it's been fantastic amzn.to/3Yk6exk
In the beginning I definitely had resolution related problems which I think were due to macOS, but Apple seems to have fixed them in the newer versions because I haven't ran into any in the last 1-2 years.
I use vterm in Doom emacs to keep that single pane of glass. Also use Rectangle which seem's equivalent to Amethyst.
Nice - I’ll have to check out Rectangle!
Great video, really cool tools some of them are already part of my daily business. I am just wondering what is the name of the font you are using I really like it. Anyone knows?
Thanks! For font I used Monaco for awhile but recently switched to Fira Code nerd font - honestly i don't remember which I was using for this video, but it was one of those two
@@codetothemoon Thanks for the info. I could already learn so much from your rust content and I really appreciate that
The only thing I don't understand that you maybe could clarify is why both Notion and Obsidian? I recently (as in 6 months ago) completely migrated from Notion to Obsidian and brought everything from my journaling, notes, devlog, learnings, ideas for projects, work related stuff like meeting minutes... everything... with me.
The reason being that Notion since 3 years have been more and more sluggish, loads very slowly and always seems to have some kind of major bug that is being investigated.
I moved to Obsidian and bought their sync instead so I can work in markdown using neovim (which is what I prefer) from anywhere and the loading times are snappy as one would expect from a markdown file (the sorting, saving, loading, syncing etc is done using a daemon/service so nothing I have to wait on like with Notion who does this in the client I am working in)
So any specifics as to why you run both? I'll admit Notion is "prettier" but ...
Self improvement finally makes sense 🎉
😎
fukken awesome pack, bro!
thanks, glad you liked it!
I am working with the charachorder now. It has a very steep learning curve, and some interesting features. Not sold on it so far
thanks, this is a good data point to have. I've seen may similar reactions from those first starting out...
Really nice👍!
16:05 you can use a browser extension like dark reader to get dark mode
good point!
0:35 i3 also exists on Wayland as sway.
Lol :D :D I switched all my tasks management to old good paper and pen... to be more productive I try to minimalize number of sofwares required to be open. (also with old school paper, I can be creative at night without receiving any light from screen). I have my paper TODO list always in front of my monitor, no need to turn on additional app, all my focus is on the first line of paper until I don't cross it out.
nice, there's something to be said for keeping it simple! Not sure if there's been any research around this, but my gut feeling is that there's probably some advantage gained from the tactile feel of a pen in terms of remembering what you are writing down
@@codetothemoon there is a lot of research and books about it. Art of impossible, Deep Work, Getting things done,... Andrew Huberman podcasts...
Why not Zellij?
hadn't heard of it tbh! just took a look, looks really interesting...
I rely heavily on command line tools like ripgrep (grep replacement), fd(find replacement), tig (git browser) and neovim. Used tmux but I jest prefer to tile everything in i3wm.
I like the idea of Mem, but I've just been trying it and it seems too early in development to be very useful. For example, I pasted a markdown file in as it recommended, but it doesn't recognize even basic headers. The chat was confused by this.
I pasted in a new note that contained my notes from an RPG session. There were seven sessions with the same header format. It still didn't recognize the markdown syntax. I asked it how many sessions I played. It said two and listed two of the dates. I told it that I see seven that have the same header format ranging between the start and end dates. It basically said, "oh yeah, I was wrong, here they are."
Was expecting better performance and response from such a small data set. But it can't even see what I've entered, I don't see that it's very useful (yet?).
I appreciate the list you made, though. Definitely some stuff I'm going to check out.
I've used screen occasionally, but tmux looks like it might be better. I've also just recently started playing with Obsidian based on a recommendation from No Boilerplate.
I never use a window manager. Even on windows I never dock a window to a half or something. I have 3 monitors and that's enough space for all my stuff at full size. Also most applications don't work correctly or have nasty scroll bars everywhere if not covering a reasonable amount of space on the screen. It's good for wide screen setups I guess.
yeah understandable - I think widescreens are where tiling window managers really shine. And setups with > 2 monitors where they're slightly less useful. I will say though that Amethyst has some nice key bindings for moving windows between monitors and switching focus to different monitors - I make extensive use of those on the occasions when I'm plugged into two monitors.
Lovely video. I tried ditching VSCode for Vim and Helix, but no success. I may try again, or I may try Emacs
thanks, glad you got something out of it! it is a big leap that can be really hard to make especially if you're trying to do at the same time as your normal work. You might check out NvChad - I haven't used it too extensively but my understanding is that, to some extent, tries to replicate the VSCode look and feel in nvim
I've used NvChad, LunarVim, LazyVim and AstroNvim, and I would say Astro is probably the easiest & best if you want a full featured experience, and NvChad is the best if you want an excellent and minimal (but extensible) framework. I currently use Astro cause I cbf keeping up with the plugins at the moment.
+1 for astronvim it's nice
@@danielyrovas how do you have the time to try all these and not the time to setup your own neovim config ?
obsidian is incredible
agree! It's hard for me to shake the feeling that maybe I should be using it instead of org-roam... but I'm holding out for now....
FancyWM and komorebi are window managers for Windows.
What's the wallpaper btw?
it's actually one of the "dynamic" ones that comes with macOS Ventura - if you're on mac you should be able to find it in the "Wallpaper" section of System Settings
Great video... Could you add timestamps on the next one?
thanks and will do!
Head injury ER Criteria after Gentle Patch Removal
wat
Sway to add, when real compositors (Wayland) come to mind? And I'm using it in production for 2+ years 🤓
We need timestamps per topic
thanks for the feedback, I'll try to include these next time!
This man has no mouse
au contraire, I have a Razer DeathAdder which I love! But I do try to use it as little as possible
That zmk config file looks suspiciously similar to Linux Device Tree syntax… 🤔
This year I stopped using anything other than a browser and terminal. I moved my notes, coding & rss to the terminal, everything else is in the browser.
nice - ooc what do you use for notes?
@@codetothemoon This might seem more complicated than it is, but I ssh into my phone, and write the notes as .md files with neovim. On android use a simple markdown app to crud on the run.
I've heard that yabai is a better twm than amathyst, i haven't personally use any of those, I use i3wm since around 2021 and have tried a couple of others too.
thanks, I hadn't heard of yabai, definitely going to check it out!
These are the biggest gaps I have ever seen. I only have 2 pixel gap on my 1440p monitor; basically non existent. My tiling window manager is Qtile, written and configured in Python language. Pretty cool. On Linux I think Qtile is more popular than Xmonad. Even DWM seems to be more popular than Xmonad.
yeah, definitely wouldn't actually do work with these sorts of gaps. Thought more of the wallpaper showing might be better for the video. Thx for the pointers on the tiling window manager landscape in Linux!
@@codetothemoon Right, you mentioned it in the video later. I did a comment as soon as I saw the gaps.
Chording keyboard or steno is not worth it, maybe if you are a professional writer and rarely use hotkeys, otherwise it just too much effort for not much reward, I haven't used such keyboards, but I tried plover and 24 key keyboards with lots of layers/functions.
good to know thx! was always curious why more folks don't go this route - good to hear from someone who has actually tried it!
Give me Fearless Concurrency or Give me Death !!!
😎
ChatGPT for research? You're a bold one for sure.
why is that?
@@codetothemoon ua-cam.com/video/oqSYljRYDEM/v-deo.html I myself have also found ChatGPT to be extremely unreliable, takes too much manual work, might as well do it all myself from the start
hallucination probably
@@kickbuttowsk2i yeah definitely something to watch out for - anecdotally, I've experienced hallucinations with many language models, including GPT3, Bard, and many of the open source ones. But I've yet to experience hallucination with GPT-4 - I'm sure it happens, but it seems like it might be rare and/or more common with "tougher" prompts
I’ll suggest if you want to show a tool show it how you use it , not the way you think will be esthetically pleasing, because looking at those giant margins, I have no desire to want to use them.
thanks for the feedback!
After doom emacs I've stopped paying attention
thanks for the feedback - why is that? because you're a die-hard vim user or something else?
AAAAA vim in zsh this is crazy! lovit
😎
let tools = [Tool; 8]; assert!(tools.iter().filter(|&tool| !tool.description.eq("rust")).count() == tools.len());
the jokes in the code above, its pretty understandable. tbh this code prolly doesnt even compile if i defined struct Tool & set the field. bc rust 🥴🤡