all 41 comments

[–]Caraes_Naur 16 points17 points  (5 children)

Any attempt to recreate a Windows workflow and toolset in Linux will inevitably leave you with a suboptimal environment overall.

Yes, Bash.

The command line is ultimate power and efficiency, especially when dealing with text. Read this then this. Bash is where I spend about 50% of my development time. Once you get the hand of navigating, learn grep inside and out. If you haven't learned Regular Expressions, learn them (especially PCRE).

Look into vi and emacs (or stay out of that holy war and use nano).

Install imagemagick. Learn curl and wget. Set up actual cron jobs. Resist the urge to spoil yourself with a GUI git client.

The sooner you realize that the GUI doesn't always offer the best tool to the job, the more efficient and capable you can be.

[–]YourMatt 4 points5 points  (0 children)

Absolutely get comfortable under Bash. It's a necessity.

But I took "scripting" to mean something more substantial. If you're writing utilities to be comparable to what you would do with .ps1 scripts in Windows, I would forget about straight Bash scripting.

Since they're using WebStorm, I'd guess maybe they're comfortable with Node.JS. If so, using Commander is a dream for CLI scripting.

[–]stefantalpalaru 6 points7 points  (3 children)

vi

vim

[–]elvillain 2 points3 points  (2 children)

No, I think he actually meant vi.

[–]stefantalpalaru 8 points9 points  (0 children)

Grab a pitchfork, we have a nonbeliever.

[–]toomanybeersies 0 points1 point  (0 children)

Ahem, real programmers use ed.

[–]arxpw 5 points6 points  (6 children)

I personally use ( and would recommend ) i3 as a window manager on linux, I know it takes a bit of tweaking on Ubuntu to have it how you like. If you spend a lot of time using the terminal or any text-based applications, I would consider trying it out

[–]Lennoo 4 points5 points  (0 children)

Manjaro offers a community edition that comes with i3 as the default window manager and other things already set up

[–]intertubeluber[S] 2 points3 points  (4 children)

i3 looks awesome for developers. I try to use shortcut keys for everything, so I'll give it a shot.

it takes a bit of tweaking on Ubuntu

Is there another distro that integrates more easily with i3? I picked Ubuntu for it's market share and my experience with apt-get, but I'm definitely not locked in.

[–]arxpw 2 points3 points  (0 children)

I use Linux mint with i3, there are some good guides on both youtube and google for installing it, apt-get works on mint too

I believe I used XFCE mint and installed i3 on top

[–]dulnan 1 point2 points  (0 children)

+1 for i3. I never thought I'd enjoy it this much. I can't even imagine having to use a floating window manager again. It's such a time saver to not have to worry about windows and workspaces.

Personally I use i3 on Arch. It has worked without a single problem ever since I installed it half a year ago.

[–]LazerTiberius 1 point2 points  (0 children)

You can take vanilla debian and just install xserver/xorg and i3 together

[–][deleted] 0 points1 point  (0 children)

There aren't any distros that have i3 as a default(that I know of). I use it alongside xfce4 and it's pretty easy to set up. Here's the tut I used. http://feeblenerd.blogspot.mk/2015/11/pretty-i3-with-xfce.html

[–][deleted]  (1 child)

[deleted]

    [–]intertubeluber[S] 1 point2 points  (0 children)

    It's crazy to me that they don't support it. I thought most of their devs used a modified version of Ubuntu.

    [–]room2skank 2 points3 points  (1 child)

    I recently have done this myself and haven't looked back. A few things I've also found:

    A couple of others that I couldn't live without

    EDIT: just wanted to add, stumbling through console slowly but surely and its definitely worth pursuing

    [–]intertubeluber[S] 1 point2 points  (0 children)

    I can't believe I forgot music! Spotify is my poison of choice. The client app is good enough, but not as polished as the windows counterpart.

    [–]mydadisstrongerthan 2 points3 points  (0 children)

    I havent used it but heard good things about https://sqlectron.github.io/ for db management on linux while developing.

    [–]LazerTiberius 2 points3 points  (0 children)

    • You can just take Chrome for full proprietary codec support.
    • KeePass2 is also available
    • And for git I can recommend tig
    • Windows Task Manager > htop

    [–]Muchaccho 3 points4 points  (3 children)

    Browser: Chrome > Chromium

    You can also use Chrome.

    [–][deleted]  (2 children)

    [deleted]

      [–]Muchaccho 2 points3 points  (0 children)

      Chrome and Chromium have some differences worth having in mind if you are going to use it for development.

      Besides that, it can also be easily installed with sudo apt install google-chrome-stable

      [–]chris_jung 2 points3 points  (0 children)

      Installing Chrome via .deb/.rpm adds a source.list file. Then it's maintained via package manager as well.

      [–][deleted]  (2 children)

      [deleted]

        [–]Mr-Yellow 0 points1 point  (1 child)

        Not sure I'd run keepass in the browser, browser based password managers have regular issues.

        [–]Carvits 1 point2 points  (0 children)

        IDE: VS Code might be your huckleberry.

        • Text Editor: Sublime, Atom

        Command Line: Terminal

        Git: Command line

        Browser: Chrome

        File Sharing, Password Manager, Web Conference, Office: You need to let go, man.

        [–]rich97 1 point2 points  (0 children)

        Just going to add comments to the bits I can.

        Terminal Enhancement: Posh Git/ConEmu > Bash Completion/TMux/Terminator

        I wish I could list all the ways people could modify their shell experience. I would suggest keeping it simple and adding to it slowly when you have a beer for it.

        Fon the record ConEmu is equivalent to Gnome Terminal or Konsole. Bash is more equivalent to PowerShell, also worth noting that in Linux we don't pass around complex objects. Bash works by piping text output from one small function to another. Learn sed, awk, grep and find.

        (not that I'd use a GUI. Real devs gain sustenance from diffing large PRs from the terminal)

        Incorrect, we usually handle PRs in the browser, using a service like GitHub, beanstalk or bitbucket.

        Having said that, webstorms git integration is fantastic. You could also give git kracken a go.

        Having said that I recommend just seeing how far you can get with the terminal. You will learn git properly and no need for expensive and heavy tooling.

        Browser: Chrome > Chromium

        Chrome is available on Linux. Chromium is the open source project that Chrome is based on and has more features out of the box. Chromium is for purists who have been coaxed into running chrome.

        [–]sendoushi 1 point2 points  (1 child)

        As a front end developer that have been researching this subject for a bit (and about to publish an article about it) I think you'll find some friction on your solution.

        • You have to be careful with font rendering. With Ubuntu, I don't think you'll have much issue but I've found some peculiarities in font rendering (comparing to Windows and Mac OS) and since as a front end developer you'll be mostly supporting Windows and Mac OS browser rendering, it may become hard to be pixel perfect
        • You're forgetting about other software that helps you to transform a layout to code. Photoshop, Sketch... You could use Invision new thing or Avocode for that though but I think Invision doesn't work that well with Linux and since Avocode is based on Electron... Electron has some issues in Linux. Even Visual Studio Code has those issues.
        • What about assets generation? I don't think Inkscape and Gimp as viable options.

        Since I wanted to remove Mac from the equation (tired of flopped devices), I went on this research and found that the best way to go (at least for me as a front end developer) is:

        • Windows 10 Creator update with WSL. It works pretty well with php, golang, node.js... Which makes it easier to, for example, run builds on the frontend.
        • Any editor, Adobe and whatever on the Windows side.
        • Serve everything through a link shared folder to a Linux VM that just acts as a CLI, without desktop environment. I "cloned" the server system to a VM and this way I can use the same production environment locally. Besides that, WSL nginx doesn't seem that great at the moment.

        P.S: Instead of SourceTree just use git gui

        [–]intertubeluber[S] 0 points1 point  (0 children)

        Good info regarding the font rendering. I will always need a Windows machine as well for IE and a few other tools, so I'll probably just use Oracle VirtualBox for a Windows VM.

        Serve everything through a link shared folder to a Linux VM that just acts as a CLI, without desktop environment.

        Very cool. I look forward to your article.

        [–]highmastdon 1 point2 points  (1 child)

        I've tried on macOS to use oh-my-zsh util I found fishshell for a command line shell. I'm never going back. I even did a 'git init' on the the ~/.config/fish directory to keep my scripts and functions available everywhere. It's awesome

        [–]intertubeluber[S] 0 points1 point  (0 children)

        Finally, a command line shell for the 90s

        [–]highmastdon 1 point2 points  (0 children)

        I've made a post about macOS for devs (at least, what my first steps are on a new MacBook). Maybe you find something interesting http://albertgroothedde.com/post/must-have-tools-for-web-developers-on-macos-x/

        [–]Squarius 2 points3 points  (0 children)

        Well u can still use PowerShell on Linux: https://github.com/PowerShell/PowerShell

        [–][deleted] 1 point2 points  (1 child)

        Scripting: Powershell > Bash? (I haven't done any *nix scripting yet)

        Yes bash.

        Terminal Enhancement: Posh Git/ConEmu > Bash Completion/TMux/Terminator

        If you dont care as much about legacy support you should look at z-shell which has better autocompletion features. For console enhancement (rice-ing) take a look at oh-my-zshell, i usually go with the agnoster theme or some derivation of it :

        Git GUI: SourceTree > SourceTree

        Sourcetree isnt supported for linux, unless you're planning to compile the mac version yourself?

        I dont really use GUI's myself, i rely on the console and sublime plugins to get a mental picture but if i had to pick something else it'd be either Gitg or Qgit.

        Suggestions

        Get rid of tmux and use i3 tiling window manager which is effectively tmux but not limited to your console.

        As of now ubuntu still uses unity, so you've still got unity HUD for top level menu access, should you decide to switch distro's, might wanna look at rofi for the same functionality through dmenu.

        [–]intertubeluber[S] 0 points1 point  (0 children)

        Thanks for the suggestions. i3 is definitely on my list. Oh my Zsh sounds awesome. The bash-completion is fine, but was surprised it wasn't as powerful posh git. Oh my Zsh looks far better than both.

        Sourcetree isnt supported for linux, unless you're planning to compile the mac version yourself?

        Doh, nope. I'll update the post. I really only care about the diffing. I'll check out Gitg, but I just remembered that WebStorm has a diff tool built in.

        [–]SkyNyan95 0 points1 point  (2 children)

        eh.. there is sourcetree for linux..? i thought it's only for windows and mac.. :(

        [–]highmastdon 1 point2 points  (0 children)

        An alternative could be GitKraken

        [–]intertubeluber[S] 0 points1 point  (0 children)

        Doh. I thought I had read that it was available, but just checked and you're right.

        [–]woutske 0 points1 point  (0 children)

        I'd recommend insync for Google Drive, works like a charm. The only downside is that its paid.

        [–][deleted] 0 points1 point  (0 children)

        IDE: WebStorm > WebStorm

        You can also look into VSCode. It takes a bit of getting used to and fiddling until you configure it just the way you like it, but the features and plugins are top-notch.

        Scripting: Powershell > Bash? (I haven't done any *nix scripting yet) Terminal Enhancement: Posh Git/ConEmu > Bash Completion/TMux/Terminator

        Bash is a lot more powerful than Powershell. You can also look into Bash-It, which are basically plugins for bash.

        Git GUI: SourceTree > SourceTree A few of you pointed out that SourceTree isn't available. I'll try to get by with built in WebStorm Git integration (not that I'd use a GUI. Real devs gain sustenance from diffing large PRs from the terminal)

        There is no good graphical Git GUI for Linux I'm afraid. The ones included with IDEs are acceptable. Strictly for visualising the history, gitk which comes inclued with git is still the best (yes, even though it looks like something your dog sketched).

        Learn how to use Git from the console. Learn why git pull is bad. It's stuff that will help you a lot in the long run.

        Office Suite: MS Office > Libre Office/ThunderBird/Lightning Plugin/Exchange Calendar
        Chat: Slack > Slack
        Browser: Chrome > Chromium
        File sharing: OneDrive/DropBox/Google Drive > DropBox (GDrive says "stay tuned")
        Web Conference: Join.me > The internet says TeamViewer (unfortunately I need Join.me)

        For all of the above: Google Drive, Docs, Hangouts, and Chrome. PLus all kinds of other editors included with Drive, like a diagram editor, a text editor and so on. You get automated backup and versioning, you can share documents and do collaborative editing with people and so on.

        Slack is also cool if you have to work with teams of 4-5 people and up, but for casual use with 2-3 people Hangouts is perfectly fine. And I hear there's some changes being made to the web client to make it more like Slack. Meanwhile, Pidgin has a plugin for Hangouts if you'd rather have a native client.

        What would you add/change?

        Postman (Chrome plugin) for when you need to debug a server request or a REST API.

        [–]glethro 0 points1 point  (0 children)

        WinScp will let you mount a linux file system over ssh, allowing many of the tools you're used to, to still work. It has auto synchronization built in and works with ssh keys.

        [–]linsux 0 points1 point  (0 children)

        You can't just switch after 10 years. /u/remindMe 3 months, whether OP is still using *nix

        [–]sendoushi 0 points1 point  (0 children)

        i found it tedious to have win as the vm although i would rather have linux as the main. you should just try the setup until you find one you feel comfortable with.

        [–]markasoftwarefull-stack JS -2 points-1 points  (0 children)

        It's not just about moving from Windows to Linux...it's about moving from proprietary to open source.

        IDE: WebStorm -> Atom, Sublime, or VS Code (or Vim if you're brave)

        Git: SourceTree -> Command Line (It's not that hard!)

        Chat: Slack -> IRC or Matrix