Heroku. It abstracts SO much work away and just lets you get on with writing software. It's probably the most underrated platform online. Following that, I think the UI/UX are learned appreciation. Vim and Emacs are amazing once you "get it", same with tiling window managers, etc. Good UX is supposed to be discoverable in a sense and most power tools for developers aren't exactly known for being approachable.
I've found GitLab as a product to be more difficult to use than GitHub. The pages seem more dense with lots of color, many more actions: they just feel busy. Basic features, like getting a permalink to a line of code, take 3-4 clicks in GitLab, when it's just 1 in GitHub.
> Basic features, like getting a permalink to a line of code, take 3-4 clicks in GitLab, when it's just 1 in GitHub
That doesn't seem right.
In Gitlab:
Right click the line number, choose Copy Link in the context menu. Two clicks.
In Github:
Click the line, click the three dots, then click "Copy permalink". Three clicks.
Alternatively, click the line, click the URL bar (or press F6 or ^L) copy the link. Still Three clicks.
What's the one-click method in GitHub I'm missing?
What's different is you get functionally different links. GitLab aliases to the branch name, not the commit hash. So it isn't really a "permanent" link to a line of code. It's whatever happens to be on line N in file X on branch Y at time T, whenever you open the link. This is inconvenient when I might find an old link in an engineering Slack thread, referencing something now much different since the file was amended over time. In fact, the file may not even exist anymore.
GitHub, by default, includes the commit hash. So the line of code will be the same at any point in the future: the file, at that line number, with that commit hash, is immutable (unless developers force push history rewrites, but you get my broader point).
Coming from bitbucket I find gitlab design too busy as well and missing some basic obvious functionality which could be there but it's not intuitive. For example, when viewing a merge request I can't find a way to copy the target branch name.
Vim (recent versions) + the `term` command. All shells and REPLs as Vim buffers, also run any command asynchronously. Paired with the `sendtowindow` plugin, can have two-way communication between any REPL and any other buffer.
There’s not much to say about it, as it does basically one thing, but that thing is powerful. It was added to Vim in v.8. Just type `:term bash` to get a buffer with a bash shell running in it. Or type `:term <command>` to run a command async and see the output in another buffer. Once you have bash, or another interactive prompt with a command like `:term julia`, then, if you have the sendtowindow plugin installed, you can select any text in visual mode and send it to the REPL with the shortcut that you define. You can send in any direction, so you can arrange your buffers as you like. You can switch to the REPL and send output back into your editing buffer. There are many other plugins with similar functionality, but I like sendtowindow because of its simplicity and generality.
It's a perfect example of a tool that looks terrible if you've never seen it before, but after learning its core concepts you will never want to use any other code review system. It's fast, it's optimized for daily use, and it doesn't attempt to woo you with flashy features up front.
It has a tradeoff that most developer tools these days are too scared to pull off, the one where you can't onboard someone within a minute, but you will win them over once they start using it for a while.
Prepare to be disappointed and confused. It really doesn't click until you use it, and you discover features like: attention sets, a working dashboard, commit==CR==multiple patchets, stacked changes, push-to-update/rebase/stack, zero friction comments, comment porting, customizable checks and labels, lightning fast keyboard shortcuts, ...
The Julia REPL. Unicode, colored stacktraces, special modes for documentation and package management, accepts LaTeX commands to enter special characters, has paste mode:
“In Julia mode, the REPL supports something called prompt pasting. This activates when pasting text that starts with julia> into the REPL. In that case, only expressions starting with julia> are parsed, others are removed. This makes it possible to paste a chunk of code that has been copied from a REPL session without having to scrub away prompts and outputs.” → https://docs.julialang.org/en/v1/stdlib/REPL/
- Letterboxd, as a movie fanatic, this app is great, and its community seems very welcoming.
- Feedly, it almost makes me forget I'm really missing Greader.
- Stripe, docs, dashboard, landing pages--everything they do ends up being top notch.
- Github (this is a weird one), didn't really appreciate the care for the UI until I had to use Gitlab extensively, the worst offenders are the PR UI--everything looks so cluttered, and it doesn't happen on Github.
Letterboxd is a shining pinnacle of a website for me. It's more or less unchanged in the 7+ years I've used it as their product is so good that they don't feel the need to change it up to much. This is so counter to most other websites and social networks where there's a disastrous rebrand every 3-5 years.
All they've added is solid features that add value to the product without ever touching the branding or core platform that has been working for them for so long
I like DigitalOcean's site for deploying servers - simple, clean and fast. A few missing advanced features in certain cases, but much more user friendly than AWS.
https://linear.app/ has beautiful UI with super smooth animations. In general, I think "command+K" command-line interfaces for user-facing tools is a huge step up (Superhuman, Linear, etc..).
Interesting, can you expand on your workflow a bit more? I'm of the exact opposite opinion - I think Mac's window management is the absolute worst thing about using a Mac - so I'd love to know what I'm doing wrong.
I use one external monitor and MacBook screen. I full screen all applications and switch between them using control and the arrow key.
So my external monitor has email, IDE, and misc stuff.
Screen has browser, terminal, chat application.
Pressing control + up allows you to easily reorder and move elements. It's helpful to turn off the default option of automatically sorting your screens
Ah, interesting. I think we've arrived at a very similar setup, albeit implemented in different ways. I too use a MacBook and external monitor, and fullscreen my apps, but I just let them take up the whole screen minus the bar at the top, rather than explicitly use the fullscreen new workspace feature. I then swap between apps by binding all my most common apps to F1-F6 using Thor, which I find is easier to navigate than remembering workspace positions.
How do you handle split screen? Do you never have two programs side-by-side on the same screen? I've tried doing that in the official fullscreen mode but found the whole experience a pain, so I use rectangle to shift windows left and right.
I use full screen apps on my Mac and switch between them using ALT-Tab. But there is a bug whereby you don’t always get the window of the app showing if you ALT-Tab too quickly, even though it is selected. I might try something like your setup, or the one above instead.
I'd definitely recommend giving dedicated hotkeys (one per app) a try - it's very hard to go back to alt-tabbing after being able to switch so effortlessly. As I say, I use Thor, but I'm sure there's a bunch of alternatives out there.
I run Ubuntu on my personal machine and haven't found a suitable alternative yet. The more time I spend on my Mac work machine the more I'm thinking about switching my personal one due to this
I went from using i3 on my personal Linux machine, to my macOS machine for work. I've had the same thoughts about switching back, but it wasn't an option. Amethyst pulled me through the worst. It can't compare to i3.
There's also this: https://github.com/koekeishiya/yabai, but I haven't tried it out because of the disclaimer: "You acknowledge that you understand the potential risk that may come from disabling arrow_upper_right System Integrity Protection on your system"
Netlify is consistently held up as an example of how to do developer focused UX. I'm def biased as an ex employee but I can attest that i've seen from the inside how closely design and accessibility are integrated in the dev process.
as far as up and comers, i'd recommend checking out https://supabase.io/ - love the minimal black/green aesthetic. they recently released a Tailwind/React design system too https://ui.supabase.com/
Supabase is really such a dream. It’s obviously early days yet for them, but I love working with the little subset that I picked — it really goes a long way to making Postgres easy. I wonder how accessible it is to newcomers though - feels more useful for the “I’ve used postgres before and am doing a side project” crowd (eg me) versus the Firebase audience of “hello I want something called back end plz”
I always wonder where the “hello I want something called back end plz” crowd come from (is it coding bootcamps?). Backend is so much easier than frontend, an so many problems and complexities can be avoided by putting things in the backend.
When I joined my company, there were a couple of junior devs on my who had barely touched the backend, and never used SQL (because we used to be on firebase). They were up, running ans productive with both in under 2 weeks.
The Swype button in the Swype keyboard for Android. Press it and the word where the cursor is will be selected (like control+w in some desktop editors). Swipe from that key to c/v/x and you will copy/paste/cut directly. Swipe to the space bar and you will change input language. And swipe to other keys to access different keyboards modes.
No other keyboard I know has it (if you do know please tell me!) and I feel extremely slow without it.
IntelliJ Idea + Ideavim plug-in and my heavily customised keybindings and F1-F12 keys. The same UI and keybindings for all my programming languages. I live in this program for 80% of my computer time.
Tmux+Zsh+fzf+bat+exa for terminals and splits. Same or similar keybindings to my InteliJ setup.
Not OP - it took me a bit of time, and I was often frustrated by the things you can't quite do with the product. This was a few months ago though, so things might have changed.