a67f951d3290fc9b4d333efb643143abd1b03437 — Andrew Zah 10 hours ago 373bf88 + a379e4b master
Merge branch 'master' of git.sr.ht:~andrewzah/personal-site
1 files changed, 38 insertions(+), 39 deletions(-)

M content/posts/remote_workflow_2019/index.md
M content/posts/remote_workflow_2019/index.md => content/posts/remote_workflow_2019/index.md +38 -39
@@ 1,7 1,7 @@ +++
  title = "My setup for remote programming on OSX in 2019"
  slug = "my-setup-remote-programming-osx-2019"
- date = 2019-04-26
+ date = 2019-10-19
  template = "post.html"
  
  [taxonomies]


@@ 30,41 30,40 @@ t="Working remotely at WeWork, 강남, 서울 (Gangnam, Seoul)"
  )}}
  
- Hi! My name is Andrew, and I work remotely as a software developer. Currently I am in 서울, 대한민국 – Seoul, South Korea.
+ Hi! My name is Andrew, and I work remotely as a software developer. I've worked while traveling across America with spotty or no internet connection. I've worked in countries like South Korea and Japan. I like traveling, and this is how I stay productive.
  
  ## Development Machine
  
  Before we begin, why apple and osx?
  
  1. battery life
- 1. battery life
- 1. battery life
+ 1. *battery life*
+ 1. weight
  1. unix-like environment
- 1. display
- 1. form factor
  
- and to an extent, proprietary or osx-only apps: photoshop, premiere, affinity designer, and sketch.
+ and to an extent, some proprietary or osx-only apps: photoshop, premiere, affinity designer, and sketch.
  
  Before you scoff, I used freebsd and arch on my home pc as daily drivers. I used a modded thinkpad t430 for a few months as well.{{fn(n=0)}} I put in an i7-3632QM (quadcore) chip, a quieter heatsink, 2x8gb memory, a t420 old-style keyboard, and a 9 cell battery.
  
- It was sweet. Until I started lugging it around.
+ It was sweet... before I started lugging it around.
  
- Weight-wise it was slightly heavier than my 15" macbook, but the battery life made it unusable. I was getting 4-5 hours, max, and occasionally it would just die earlier than expected.
+ Weight-wise it was slightly heavier than my 15" macbook (~4.5lbs?), and the battery life made it unusable. I was getting 4-5 hours, max, and occasionally it would just die earlier than expected. (Forcing me to go reset the system time in BIOS).
  
- Essentially I was always worried about my power source. What's the point of a laptop if you always need it to be plugged in?! I [live out of two backpacks][living] and work remotely while traveling, so to say that battery life is important to me is a huge understatement.
- 
- My 2015 13" macbook pro's battery is still good to the point that I can easily work 6-7 hours with C# and Rust without worrying about charging. This doesn't happen often in practice but not having to worry about that is very important.
+ I was always worried about my power source. I [have lived out of two backpacks][living] and worked remotely while traveling, so I can't rely on always being next to an outlet.  My 2015 13" macbook pro's battery is still good to the point that I can get 6-7 hours out of it while working with Rust/C#. It's more like 8-9 if I'm only doing light writing, etc. 
  
  I know someone's going to respond with "but oh, you should've just used power++ with x, y, z configurations!". I *did* experiment with different settings with power++ and other alternative tools–nothing seemed to help. Call me a grumpy old man but I want to work and get things done... not fiddle about with battery tuning settings and the like.
  
- Eventually I'll need to replace this mac. All post-2015 macbooks have been a dumpster fire so I'll probably go with a dell xps, a lenovo x1 thinkpad, or [a custom x62 thinkpad from China, maybe..?][thinkpad] I just want a durable machine with an excellent battery that'll work years later and won't have me configuring things constantly.
+ Eventually I'll need to replace this mac. All post-2015 macbooks have been undesirable to me so I'll probably go with a dell xps 13", or maybe a System76 Galago. I just want a durable machine with an excellent battery that'll work years later and won't have me configuring things constantly. Is that too much to ask?
+ 
+ ---
+ 
+ At home I do have an x201 and x220 thinkpad however. They're great for testing different operating systems, etc. I just don't like traveling with them. The x201 is quite small so hopefully it'll become my main writing machine.
  
- [living]: /posts/living-out-of-two-backpacks-a-three-month-retrospective/
- [thinkpad]: https://www.notebookcheck.net/Enthusiasts-bring-classic-ThinkPad-designs-to-the-modern-era.194630.0.html
+ [living]: /posts/living-out-of-two-backpacks-a-six-month-retrospective/
  
  ## Configuring OSX & Tools
  
- The first thing I always do is install xcode-tools, iTerm2, brew, and zsh. Then I clone the osx branch of my [dotfiles repo][dotfiles] and symlink the files where they need to be. I should automate this part with a script, but making that script would take me far more more time than just doing it manually. Not worth it.
+ The first thing I always do is install xcode-tools, iTerm2, brew, and zsh. Then I clone the osx branch of my [dotfiles repo][dotfiles] and symlink the files where they need to be. I should automate this part with a script, but making that script would take me far more more time than just doing it manually. Not worth it, for now at least.
  
  You can use `brew leaves` to see installed items and `brew cask list` for cask items. I [stored][leaves] [mine][cask-list] when I originally started abstracting out my dotfiles.
  


@@ 74,7 73,7 @@   ### poor man's window tiling
  
- After using i3 I will never go back to non-tiling windows. I long for the day that i3 works natively on osx. Sigh.
+ After using i3 I can't go back to non-tiling window managers. I long for the day that i3 works natively on osx. Sigh.
  
  I've somewhat replicated it with [chunkwm][chunkwm], [skhd][skhd], and [karabiner][karabiner]. Chunkwm is a tiling window manager, but it doesn't handle keyboard input. That's where skhd comes in. I copy/pasted to my [khdrc][khdrc] but to be honest I don't use most of these hotkeys still.
  


@@ 87,36 86,38 @@   #### cons
  
- Some applications have minimum window sizes. So if I have a few windows tiling, they will just overlap. KakaoTalk is an example offender.
+ Some applications have minimum window sizes. So if I have too many windows in one workspace, they will just overlap. Spotify and KakaoTalk are example offenders.
  
  {{image(
    url="https://s3.amazonaws.com/andrewzah.com/posts/015/overlap.png",
    desc="An example image showing how Kakaotalk does not layout correctly when I have a terminal kakaotalk and two chat windows open",
-   t="Notice bottom left and bottom middle."
+   t="Notice the overlaps in bottom left and bottom middle."
  )}}
  
  ### poor man's workspaces
  
- I use 10 Spaces. I added shortcuts to quickly focus them: hyper + 1-5, q-t.
+ I use 10 Spaces. I added shortcuts to quickly focus them: hyper + 1-5, w-y.
  
  I disable "Automatically rearrange Spaces based on most recent use", in Settings -> Mission Control. This has got to be one of the worst defaults ever made.
  
- My workspaces follow this order:
+ My workspaces generally follow this order:
  
  1. terminal (currently iterm2)
  2. browser (firefox)
- 3. misc / Rider
+ 3. misc / Rider / Safari
  4. misc
  5. misc
- 6. [q] misc / desktop / vlc / signal
- 7. [w] misc / discord
- 8. [e] kakaotalk, messages app
- 9. [r] anki
- 10. [t] thunderbird
+ 6. [w] misc / desktop / vlc / signal
+ 7. [e] misc / discord
+ 8. [r] kakaotalk, messages app
+ 9. [t] anki
+ 10. [y] thunderbird
+ 
+ Something about the Catalina update broke `hyper + q`.
  
  ### apps
  
- I always have iterm2, firefox, kakaotalk, anki, and thunderbird running.
+ I almost always have iterm2, firefox, kakaotalk, anki, and thunderbird running.
  
  Misc tools I generally use:
  


@@ 127,8 128,9 @@   Task bar apps:
  * Harvest (time tracking)
- * Duet (use my ipad as an extra display)
+ * Duet (use my ipad as an extra display)*
  * Caffeine (prevent my computer from sleeping)
+ * SnapScan client (for my [Fujitsu ix500 scanner](https://www.fujitsu.com/global/products/computing/peripheral/scanners/scansnap/ix500/))
  
  And non programming-related ones:
  * Discord (messaging, language study, rss)


@@ 139,11 141,11 @@   ### code editor
  
- For non-C# code, I use neovim, vim, or vi, in that order. I don't care what you use. I like (neo)vim, so I use that. I just become disappointed when people reflexively dismiss it because has any learning curve, like at all. There's a *reason* why it has one, and it's not because Bram Moolenaar is masochistic. In particular, modal editing and buffers{{refer(n=0)}} test.
+ For non-C# code, I use neovim, vim, or vi, in that order. I don't really care what you use. I like (neo)vim, so I use that. I just become disappointed when people reflexively dismiss it (or Emacs) because they have any learning curve, like at all. There's a *reason* why vim has one, and it's not because Bram Moolenaar is particularly masochistic. In particular, modal editing and buffers{{refer(n=0)}} are why I enjoy vim.
  
  Even if you don't use vim, I urge you to read the manuals of the software that you do use. Small tidbits of knowledge add up over time, especially with common repetitive actions.
  
- It's also good to know a little `vi` when you mess up your FreeBSD installation and have to dip into an emergency shell. `nano` won't be accessible then.
+ It's also good to know a little `vi` when you mess up your FreeBSD installation and have to dip into an emergency shell. Will `nano` be accessible then?
  
  *Modern Vim* by Drew Neil is a fantastic read. I read parts of it here and there to glean ways I can improve my vim usage. Every vim user should read *Oil and vinegar - split windows and the project drawer* [from vimcasts][oil-vinegar].
  


@@ 167,8 169,6 @@ t="neovim with four *buffers* open – and monaco font"
  )}}
  
- You know, I don't get why people go overboard with stuff like [powerline][powerline] and patched fonts. It's mostly superfluous information at best, and distracting at worst. But, you do you.
- 
  #### cons
  
  Vim's autocompletion... exists I guess. A while ago I looked into it but it seemed not worth the hassle to set up. Anyway, ctrl-p in `insert` mode brings up suggestions from open buffers. Good thing `p` is right next to `[`, which takes you out of `insert` mode. /s


@@ 180,17 180,16 @@ [initvim]: https://git.sr.ht/~andrewzah/dotfiles/tree/osx/config/nvim/init.vim
  [nord]: https://github.com/arcticicestudio/nord
  [plug]: https://github.com/junegunn/vim-plug
- [powerline]: https://github.com/powerline/powerline
  
  As an aside, did you know that `vim` displays `Type :quit<Enter> to exit Vim` if you hit ctrl-c, and that it's done so for a long time? Is your joke very outdated and unoriginal? Yes, yes it is.
  
  ### code editor (for C#)
  
- I use [IntelliJ Rider][rider] on both osx and arch. I think the value is worth it. It's definitely nowhere near as snappy as vim but the autocompletions are excellent. The build profiles and test runners are pretty nice. Modifying environment variables and profile configurations is tedious.
+ I use [IntelliJ Rider][rider] on both osx and arch. I think the value is worth it. It's definitely nowhere near as snappy as vim but doing C# without autocompletions would eb... rough. The build profiles and test runners are pretty nice. Modifying environment variables and profile configurations is tedious.
  
  The Intellij plugin ecosystem is great- you can easily install plugins in any of their editors, to my knowledge. There's even an official [rust plugin][rust-plugin].
  
- However, cmd-4 is the shortcut to close windows..?!
+ However, cmd-4 is the shortcut to close tabs..?! The default controls are interesting, to put it one way.
  
  [rider]: https://www.jetbrains.com/rider/
  [rust-plugin]: https://intellij-rust.github.io/


@@ 204,7 203,7 @@   1. make a list (or queue, if you prefer it that way) of things
  1. roughly ballpark estimates, with the understanding that estimating things is notoriously difficult
- 1. accurate prioritize those things (not everything is #1 urgency)
+ 1. accurately prioritize those things (if everything is #1/urgent, nothing is)
  1. work on those things
  1. discuss progress and blockers in daily call and/or slack
  1. repeat


@@ 215,7 214,7 @@   ---
  
- Since I'm 13 hours ahead, this occasionally poses small issues with working with other team members, but I solved this by going to sleep a bit later (about 1am or so). I'm 23 so I stay up until ~1/2 am anyways ¯\\\_(ツ)_/¯. Having different things to work on is also important– if I'm ever blocked on something, such as waiting for a teammate to wake up and answer a question, I can just work on something else in the meantime.
+ Being 13 hours ahead does pose issues occasionally, but I solved this by going to sleep a bit later (about 1am or so). Having different things to work on is also important– if I'm ever blocked on something, such as waiting for a teammate to wake up and answer a question, I can just work on something else in the meantime. This async style of work won't work if you always need rapid communication with your team.
  
  [good-agile-bad-agile]: https://steve-yegge.blogspot.com/2006/09/good-agile-bad-agile_27.html
  [youtrack]: https://www.jetbrains.com/youtrack/


@@ 286,4 285,4 @@ [ripgrep]: https://github.com/BurntSushi/ripgrep
  
  ## Conclusion
- This is my personal setup. It is by no means prescriptive–I merely wanted to share what works for me. I enjoy looking at other people's workflows to see how they handle things. Usually I can take away a thing or two and improve my own workflow. I'm open to improving it!
+ This is my personal setup. I find it fascinaing to look at other people's workflows and see how they handle things. Usually I can take away a thing or two and improve my own workflow. Feel free to make suggestions.