I have switched to Ubuntu 16.04 from MacOS two years ago. Compiz is one of the things helped me manage my workspace and windows which really boosted my productivity. I wonder what other tools I might be missing out.
I use almost nothing out of it. I have the default spacemacs configuration. I literaly just write bullet lists and cycle TODO and DONE states on them. Still the best todo-manager :)
I've done a ton of writing and system description. I've got kit in Illustrator, I've bought tools on the mac like Scrivener[0] and Scrapple for writing fiction and technical documentation. I can really move with Omnigraffle. I've bridged that gap with writing my own tools in Python with JS web display layers. I am a competent developer in a few languages and I have known about emacs and org-mode for going on a decade.
I take big stabs at it becoming my goto. I feel like I've done a lifetime of development to just dance around figuring out this tool.
Do you have any suggestions for making it stick? I'm making 2019 my year to really get emacs and put some time into fun Lisp. Any tips relating specifically to org-mode and not just "how to not quit using emacs" would be greatly appreciated.
I don't really have any 'tips to make it stick', because I don't really try to?
Most of my day-to-day development happens in VS Code, most of my in-console or over-the-ssh editing in vim. For interactive/exploratory programming I often grab jupyter notebook.
But having emacs with an org-file open at all times is nice. The bullet lists are pretty :-) And I am slowly branching out to other things that org-mode is capable off. I.e. I started writing a presentation outline in org-mode, then I realized that I could just write the whole thing there and export it to reveal-js html with few key-strokes.
> "how to not quit using emacs" would be greatly appreciated.
Emacs kinda feel like a weird animal when getting started but that's just muscle memory. The best way to have it stick is to get a better understanding of its power. I wrote a 5 episode tutorial series that should get you on the right path: https://mickael.kerjean.me/2017/03/18/emacs-tutorial-series-...
I'm a huge emacs fan but this seems silly. You're comment makes it sound like you're struggling with emacs - don't, just use whatever you're comfortable and productive with.
Well a big thing that happened for me this year is losing OSX as my primary environment. So everything is in flux and has been for about six months. I don't see Apple turning around for what I need and I've been 100% linux desktop over this time period. I'm a long time linux and BSD user, but haven't had it as my primary OS in nearly a decade.
My job has shifted towards ops and managing kubernetes clusters at scale. Since I'm refiguring everything I used to do this year, I figure I might as well try things I always meant to that have been around forever and seem to do it just fine without buying into commercial tools (that largely aren't available for my platform anyway).
Because of my work focus on virtualization, my primary machine is starting to be a mini cluster and I have a 5 node rack adjacent. Being portable between all these environments is becoming an asset very quickly.
Maybe it's silly, but I'm not moving around comfortably in almost anything like I was. World's my oyster I guess.
If you want zero-config portability, learn vim. It's installed everywhere and is very useful. But if you're set on emacs, here's some stuff that helped me.
Don't lean heavily on movement commands, the easiest way to navigate around Emacs is searching. Instead of pressing C-p five times or even C-u C-p C-p, just search for the word you're going to with C-s.
I tried getting into org-mode and leave OneNote. Had to give up at the end of the day due to the lack of image / rich content support. I find it incredibly useful to be able to paste rich content into OneNote and then write work tasks around it. Is there any such option for emacs?
I had the same frustration with org when I started, which has since disappeared and I keep working with saving the screenshots and linking them to my docs. :|
Anyhow, some time ago I came across a blog post where the author wrote some elisp just to copy the stuff from clipboard, save it, link it to the buffer. I don't have the link handy, but maybe this SO answer might help you:
I'm no org-mode expert but I can drag and drop images into my org files with the default spacemacs configuration. I believe this is powered by org-download.
Redshift for blue light filtering, although KDE now has that built-in.
zsh and the oh-my-zsh suite has been really helpful
A bunch of cli tools are nice. Ripgrep is a super fast grep tool that comes in handy for searching inside of files... can basically search your whole filesystem at lightspeed.
- i3 window manager - I just couldn't go back now. Over the course of the last 5 years I have saved time and made window management much less painful.
- Parcelite clipboard history - very useful for various reasons. It's such a basic tool for me now I don't know how people live without one.
Not a tool, but for any shell work learning the readline key bindings is a good time saver: Ctrl+a/e/n/p/b/f. It's just so much more clunky using other
keys
+1 for i3. I have a 13" laptop as my primary driver and using i3 is so much faster & convenient on such a small screen. Though I have made 2 changes to my workflow to get better out of it:
- I use i3 inside XFCE. This allows me to use the xfce launcher, status bar, tray icons and other goodies, e.g. adding external monitor pops open the display properties, volume bar is available anytime. All this saves me from binding buttons & doing other changes in my i3 config.
- Since Win+{1,2,...0} (buttons which change workspaces in i3) are now hardwired in my brain, I have arranged the icons on the taskbar of my Windows-10 machine to what I have in i3.
Win+1 is assigned to Emacs on i3, so that's the first icon on my windows taskbar.
Win+2 -> shell/git bash
Win+3 -> Thunar/Windows Explorer
Win+4 -> Firefox/Firefox
Win+7 -> Anki/Anki
This saves a lot of brain cycles, as my Windows workflow is also a bit like what I usually use on Debian.
Last week I try using EXWM but wasn't able to make it work as per my expectations, so switched back to i3, but EXWM is definitely a TODO on my list.
That's interesting, I never knew that. I actually use Fish shell, and with my Colemak keyboard vi keybindings need to be remapped extensively (also why I don't use vim).
I use another niche keyboard layout (Workman) and have never really felt the urge to rebind anything in vi(m). I can definitely see wanting to rebind the standard nav keys which causes cascading changes and can cause you to lose a lot of the mnemonic advantages of the commands.
My solution to that issue is "just" alternate bindings which obsolete both the standard and vi navigation keys. At the home row, I have the arrow keys on my right hand and a "nav cluster" of my own devising (page up/down, tab left/right, workspace left/right) on the left.
Definitely not for everyone, but a possible way to have your cake and eat it too.
Now bash and anything using readline will use vi key bindings. This Just Works for most of the common cli tools, e.g. the python shell and psql, but there are exceptions. In the past, the mysql client hasn't respected these settings, and there's also a node library called vorpal that is reinventing readline, poorly and for no obvious reason.
Tmux, vim + handful of plugins, i3wm, mutt, qutebrowser. Without the ability to completely control my systems from the keyboard, I would suffer a bit hit to productivity and these applications allow me to do that.
The one app is i3wm. People say tiling wm do not help boost productivity, but it certainly did for me -- or at least I think that it did.
From hardware aspect (although it was never asked), I use a hhkb type-s with the hasu controller. You may think it's a small change, but the fact that you can remap the arrow keys to {h,j,k,l} also helps because you no longer need to stretch your arm to your arrow keys. It did cost a bit of money, but I'm happy that I have it. And aside from the arrow key remap, I also remapped other keys to help with basic functionalities.
I'm also shamelessly addicted to guake (drop down terminal). I know there are more robust alternatives, but having grown up with Quake/CS, it just feels right.
I wanted to use Yakuake but it's for KDE and didn't want to install a complete DE just to use its dropdown terminal. Guake is a fairly good alternative, but I'm having an issue with it that it somehow makes title bars and top menus unclickable, which forces me to terminate it every now and then start it again.
The debian/ubuntu packages were pretty outdated at some point, I had to install the latest version manually to fix a bunch of issues just after updating to 18.04
I mostly use the command line, so Zsh and its extensive support for tab completion is the most important thing.
rsyn^I e.o^I:/va^Iw^I/ ./ -av --prog^I
autocompletes to
rsync example.org:/var/www/ ./ -av --progress
with alternatives listed if I press tab sooner (e.g. --protocol, --protect-args are shown with the purpose of those flags).
On a local filesystem,
ls /v/w/h/i^I
autocompletes to
ls /var/www/html/index.html
The non-default shell tool I use most often is "jq", a JSON processor. I can interact with a REST API, and answer a lot of one-off queries just in the shell.
I should probably write a tab-completion module for our REST API...
Switching back to Mac OS X is what really boosted my productivity as it allowed me to forget all about constant fiddling, broken drivers, breaking updates, inconsistent UX/UI, amateurish applications, etc.
My Ubuntu box (an Ubuntu-approved Dell tower IIRC) required constant attention and ultimately died after two years while my mid-2011 Mac Mini went through 4 major Mac OSX/MacOS versions and countless security patches without a single issue and all the company-provided MacBooks I've had since 2010 have been zero-maintenance.
However, linux has improved over time for desktop use, and more things have moved to the web. So really I feel like I rarely leave the browser. And if I do, it is just to a text editor or IDE.
Having a lightweight setup eliminates a lot of problems. I try to install almost nothing, honestly.
The less you have installed, the less attack surface you have, the less updates you need, and the less chance for breakage.
Usually if something breaks in desktop linux for me, it is because I know I was doing something non-standard. Trying to use unstable packages, custom settings, etc.
Apple solves that problem by barely letting you do anything at all, thus removing the PEBKAC.
With weird Atom issues now (on Ubuntu 18.04 I can't install or update my packages), would love if anyone had a good browser based IDE service which is cheap and private.
try VSCodium.. its vscode without all of the MS telemetry stuff in it. I use it on fedora 29 and it runs great. Im not a django developer though but the community is great and there is a ton of extensions for pretty much everything.
Counter-anecdote: I've been running an Arch install for 2+ years with zero problems. Picking hardware that has direct kernel support will save you a bunch of headaches.
Also, a rolling release distro, which you'd think would be less stable, provides better hardware support as the kernel and firmware packages are much more recent (not to mention libraries/build dependencies). Personally, I'd never go back to a fixed-release distro.
> Picking hardware that has direct kernel support will save you a bunch of headaches.
Yep, that seems key. I've just spend full 5 days (I'm in between contracts, so I have the time) trying to install Arch on my Early 2013 15" MacbookPro. I turned out that, due to buggy/nonstandard hardware, a fully functional dual boot with Windows is not possible (if your disk is GPT, you won't have sound on Windows and if it's MBR, the DisplayPort monitor won't come back from suspend on Arch). Just coming to that conclusion took around 4 days of experiments. I've spend one more day trying to set up wireless, and have just given up. There are more interesting things to do with computers than finding workarounds for a minefield of hardware/firmware/drivers bugs.
I had a late 2013 MBP and went with the XPS 13 for that reason. The process to dual boot (or even wholesale replace) a MBP on Linux looked really scrappy. I get it, Apple's UEFI firmware is essentially a black box with zero configurability. If that's how the process starts, I can't imagine how painful the rest of it is.
I've been using every major os (but mostly GNU/Linux and FreeBSD as my main desktop systems since 2007), and I have to say that I do not share your experience. I've had the same Arch install since they have launched on x86_64 (so quite a while ago) that I just rsync around from one system to another without no fuss or issue. It's only a matter of knowing what you're doing and what the best tool for the job actually is. For instance, I'll never really rely on Ubuntu for development, because you'll definitely end up adding PPAs to compensate for out of date packages or such, and that will definitely wreck your system to smithereens the next time you `do-release-upgrade` (even though an intelligen usage of `systemd-nspawn` has largely fixed that).
Can you share that script or explain a little on how to do that? I assume you cant just `rsync -r /` and you'd have to ignore certain things like `/dev` and `/proc` or whatever.
Shutter is a great little gui tool I use everyday, it let's you easily take screenshots or partial screenshots and mark them up before copying/saving them.
I mostly use the command line. I use Heirloom-mailx for email, i3 for window management (although I wrote my own program for the status bar), vim for text editing, just the shell commands for file management, xterm for terminal emulation, xclip for clipboard management, SQLite for database management, and I wrote my own programs for screen capture and many other things. I do not have a launcher menu; I just start all programs from xterm.
Alpine is absolutely amazing for managing the hundreds of emails I get everyday.
Also, workrave helped with concentration by forcing me to do regular pauses.
Conky is great. For someone starting out in customising their desktop, Conky goes a long way. I used it for years till I started writing my own widgets.
I was using Conky for a todo list on my second monitor, then I added another more specific todo list called "weekdo", one for notes(like how to spell certain words that consistently stymie me). After growing to four lists, each a Conky instance, I wrote a more specific purpose displayer. That was worse on resources, but a rewrite incorporating all the lists into one process was an improvement, even on Conky.
But this is about Conky. Conky pretties up your desktop, displays useful information, and inspires you to take more control of your desktop. Long live Conky.
* Fish shell: Specifically, its abbreviation feature. `abbr --add word phrase`. e.g. `abbr --add g git`, then I don't have to deal with autocomplete support for non-native command names as it literally expands to git after I type it followed by a space or return.
It also allows for faster throw-away function editing and saving if you want to keep it. `function`, `funced`, `funcsave`, `functions`
* Tmux: Use pane splitting so much, always frustrates me to see others moving so slowly through terminal windows and tabs.
bonus: I also have pane splitting to re-attach to existing SSH connection if it was split from a SSH session.
I used to use tmuxinator and probably will again, more valuable if multiple projects simultaneously.
* Guake/Gnome Drop Down Terminal: Terminal dropdown is just such a huge time saver.
* fzf: get ctrl + r history search functionality back that bash provides, also provides ctrl + o to open files in $EDITOR
https://github.com/jethrokuan/fzf
* copyq: Best clipboard manager evah! You NEED a clipboard manager, can't believe I went years without it, I trigger mine with ctrl + alt + c
* pipe to clipboard: `<command with output> | xsel --clipboard`, wrap xsel in a `cb` abbreviation in fish for autoexpansion. `abbr -a cb xsel --clipboard` may need to install `xsel` first.
* workspace tiling: I map 9 workspaces to the same grid on the keyboard with these keys + an <alt> modifier. I also assign certain applications to always auto-assign to specific workspaces:
w e r
s d f
x c v
* clock: set it to show seconds, you can easily perform loose timing way. Use `time <command>` if you are on the terminal.
* timezone: if you work with a team who is in one timezone, just set it to use their timezone during working day. I made a script to toggle this back and forth easily
I also display my timezone in my tray if I am toggling timezones.
* Arch Linux: On previous distros I would have to futz with package sources way too much. With Arch it is the easiest and most productive ever by using the `yay` package manager/wrapper. I can type `yay -S <package name>` and 99% of the time it will be available and even automates building it from source if there isn't a binary. It just works, I will never go back. Arch has some of the best packaging out there, I will use Arch for this reason alone, it saves many hours of time.
* ethernet cable: I use ethernet cabling whenever possible. Lower latency times and in video conferences you can say "not me" when the stream breaks down. Results in you not having to troubleshoot wifi. Using wires is amazing!
* Jabra 410 WIRED speakerphone: one reason, hardware mute button. Don't have to fiddle through windows to see if you are on mute. Big red ring around the speakerphone shows if you are muted or not.
* Screen annotations + touchscreens: The reason to use a touchscreen with linux is screen annotations. Arch + Gnome 3 works well enough with `yay -S gromit-mpx` as an alternative to Compiz Annotate. This saves time because during presentations you can communicate much more efficiently by drawing a red circle around something. You don't need a touchscreen and can use a mouse pointer, but that does slow things down, still better than no annotations though.
* noise cancelling headphones: this is the best investment I have ever made. Do this.
* Focus music: "hey google, play focus music" and also I purchased lifetime subscriptions for brain.fm and focus@will. I toggle between the 3. Combined with noise cancelling headphones you can get into some killer focus zones with these!
* rubber ducking: similar to other posts here for marking @todos etc, which I may look into their suggestions for a CLI method. But for now I use a running Google Doc where I write it out for getting stuck and making progress. Here is an article I wrote expanding on this blurb. https://medium.com/@ElijahLynn/write-it-out-f9c74082e6ca
* 2-5 minute runs: Sometimes just gotta get up and run. I run around the block, it doesn't have to be long. A goal of once around the block is super good for brain health, more is better but 2 minutes is really a good start. My long-term goal is to do a 2 minute run every hour during the day.
Here is my most recent Arch setup with most of these tools listed, it is pretty messy and I didn't document everything in there but maybe it is useful to someone, there is also a video recording of how to install Arch + Gnome 3 at the top of the document that my friend and colleague Cameron Eagans walked me through with some great discussion around UEFI & BIOS. https://docs.google.com/document/d/1QtQyveacu8dgTeoy8939Ti42...
Gosh that was way longer than it was intended to be, original intent was just to write about `fish abbr --add` which you should switch to fish for that reason alone!!
Really appreciate for taking the time to answer my question.
I use zsh myself. Have not tried fish yet but only heard good things about it.
Also, regarding the pipe to clipboard, I liked the 'pbcopy' command on Mac. So, right now I have added an alias pbcopy='xclip -selection clipboard'. It's really handy.
gitg is pretty helpful for visually checking changes before committing. I prefer it to text-more diff and use it for projects that don't require IntelliJ.
From the website's description:
Org mode is for keeping notes, maintaining TODO lists, planning projects, and authoring documents with a fast and effective plain-text system.
I just copied some of the set-up from here[1]
[0] - https://orgmode.org/
[1] - http://doc.norang.ca/org-mode.html