My Development Setup
I think I may have a pretty non-standard development setup (even for a Java-and-Scala developer). I use Windows, which I guess almost no “real” developer does. I’ve tried Linux (Ubuntu) a couple of times, but it ruins my productivity (or what’s left of it after checking all social networks).
But how do I manage to get anything done? How do I write scripts that I deploy on servers, how do I run non-Windows software, how do I manage to work on a project where all other developers use either Linux or Mac?
It’s actually quite simple. It’s Windows + Cygwin + VirtualBox with a Linux distro. For most of the things that a Java developer needs, Windows is just fine. IDEs and servlet containers run well, so no issue there. Some project automation is done with shell scripts, but whenever I need to execute them, Cygwin works pretty well. Same goes for project deployment scripts and the likes (and I generally prefer using a class with a main method rather than sed, awk, curl, etc, to test stuff). As for software that doesn’t run on Windows (e.g. Riak doesn’t have a Windows distribution), that goes on the VirtualBox. I always have a virtual machine running with the appropriate software installed and listening on some port, so that I can run any application locally.
No need to mention Git, as there is a git console for Windows, but also there’s SourceTree, which is a pretty neat UI for the day-to-day tasks. Newlines are automatically handled by git, and even when that’s not enough (or is not working, as cygwin needs the Linux endings), Notepad++ has a pretty easy EOL conversion.
What about viruses? Using Firefox with NoScript, combined with good internet habits, means I haven’t had a single virus, ever. Well, maybe I’ve had some very secret one that never manifested itself, who knows.
That may sound like an unnecessary complication – so many components just to achieve what a Linux installation would give out-of-the-box. Well, no. First, it takes 30 minutes to setup, and second, I wouldn’t go for Linux on a desktop. It’s just too unfriendly and you waste so much time fixing little things that usually go wrong. Like when intensive I/O gets your UI completely stuck, or when the wifi doesn’t work because of those-three-commands-you-have-to-execute-to-add-this-to-the-proper-config. In other words, I get the end-user robustness of Windows (and no, it doesn’t give BSOD anymore, that was true 10 years ago) combined with the tools of Linux.
With that I’m not saying that everyone should migrate to my setup tomorrow. I’m just pointing to a good alternative.
I think I may have a pretty non-standard development setup (even for a Java-and-Scala developer). I use Windows, which I guess almost no “real” developer does. I’ve tried Linux (Ubuntu) a couple of times, but it ruins my productivity (or what’s left of it after checking all social networks).
But how do I manage to get anything done? How do I write scripts that I deploy on servers, how do I run non-Windows software, how do I manage to work on a project where all other developers use either Linux or Mac?
It’s actually quite simple. It’s Windows + Cygwin + VirtualBox with a Linux distro. For most of the things that a Java developer needs, Windows is just fine. IDEs and servlet containers run well, so no issue there. Some project automation is done with shell scripts, but whenever I need to execute them, Cygwin works pretty well. Same goes for project deployment scripts and the likes (and I generally prefer using a class with a main method rather than sed, awk, curl, etc, to test stuff). As for software that doesn’t run on Windows (e.g. Riak doesn’t have a Windows distribution), that goes on the VirtualBox. I always have a virtual machine running with the appropriate software installed and listening on some port, so that I can run any application locally.
No need to mention Git, as there is a git console for Windows, but also there’s SourceTree, which is a pretty neat UI for the day-to-day tasks. Newlines are automatically handled by git, and even when that’s not enough (or is not working, as cygwin needs the Linux endings), Notepad++ has a pretty easy EOL conversion.
What about viruses? Using Firefox with NoScript, combined with good internet habits, means I haven’t had a single virus, ever. Well, maybe I’ve had some very secret one that never manifested itself, who knows.
That may sound like an unnecessary complication – so many components just to achieve what a Linux installation would give out-of-the-box. Well, no. First, it takes 30 minutes to setup, and second, I wouldn’t go for Linux on a desktop. It’s just too unfriendly and you waste so much time fixing little things that usually go wrong. Like when intensive I/O gets your UI completely stuck, or when the wifi doesn’t work because of those-three-commands-you-have-to-execute-to-add-this-to-the-proper-config. In other words, I get the end-user robustness of Windows (and no, it doesn’t give BSOD anymore, that was true 10 years ago) combined with the tools of Linux.
With that I’m not saying that everyone should migrate to my setup tomorrow. I’m just pointing to a good alternative.
Well, finally one developer honestly said that he is using Windows and happy with it. Almost my situation is similar to yours. After using Windows for the last 7 years, I am trying to move to Linux but I am having a hard time.
I tried Ubuntu and I didn’t like it much. Then I tried LinuxMint and its lot better.
As you said there won’t be any problems for a Java developer to use Windows for day to day tasks. Only thing is for testing deployment scripts we need Linux kind of environment.
I used to use Cygwin, but once I found Babun(http://babun.github.io/) I stick to it.
For apt-get install kind of cool stuff Windows users can look at https://chocolatey.org/.
This doesn’t explain why not Mac.
That used to be my work setup (Windows mandated by company) and it works pretty well.
The niggles for me were always:
1. Can’t easily sniff the localhost adapter (very easy in Linux)
2. Ctrl-C in cygwin does not kill the entire process tree so you end up with unwanted processes hanging about (I think this is a fundamental difference in Windows vs POSIX architecture).
You sound very happy, but if you are ever inclined to sample Linux once more, give Fedora+Gnome 3 a try. It keeps getting smoother.
[quote] It’s just too unfriendly and you waste so much time fixing little things that usually go wrong. Like when intensive I/O gets your UI completely stuck[/quote]
Yeah, sure. I really love when the backup process kicks in on my office WINDOWS PC and I cannot do absolutely anything until it completes(I cannot even switch between application!). While on my home Debian PC I have no such problems no matter how intensive the disk IO is.
[quote]or when the wifi doesn’t work because of those-three-commands-you-have-to-execute-to-add-this-to-the-proper-config[/quote]
Well, it either works or not. I’ve never had any need to touch any configuration related to my wifi on my linux box, while I had to explicitly install drivers on windows.
As I use both Windows and Linux, I\d say that IMHO Linux is more developer friendly. But for regular users there should be absolutely no difference. After all they cannot configure either 😀
Yeah, that’s the thing. At some point I thought I was having some exceptionally strange experience with Linux. Until it turned out almost everyone has had the same, but they resolved it with some googling and tweaking, felt proud and forgot about it.
You look like a pragmatic user… did you ever try a Mac?
That’s what everyone is suggesting, yes. I’ve tried a Mac once for half an hour and didn’t like it, but I guess that’s because I wasn’t used to it.
But generally I don’t like the whole Apple policy of nudging you to have all your hardware and software and music and films purchased from them. And also, that it’s overpriced. Maybe someday I will try a Mac for real, when some cool employer doesn’t give me another option 🙂
Thanks for the links, will check
I also use win for java dev.
After developing on Windows since 3.1, I moved to OSX last year and never regretted it.
It has a nice UI and all the Unix-y tools are readily available from the command line.
Kinda feels like what Linux should’ve been.
I use a an identical setup. A couple of other tools/features that also improve my productivity use are:
* Total Commander: There are a few other file managers, but this one got my heart 🙂 – best $30 dollars ever spent (about 8 years ago)
* Launchy: To launch applications quickly.
* Firefox keyword search: for sites where I perform searches frequently
* ConEmu (to have a few different terminal windows opened at the same time).
And last but never least, knowing your shortcuts! 🙂
My wife uses Linux for almost 3 years now, since 12.04 and she is pretty happy with it..
I had used Linux for almost 6 years but I switched to OS X last year and I admit I love it.. However never had any of your problems..
Still my fileserver rocks Linux and all my HTPCs and I keep an eye on it on an old dev laptop.. I would gladly go back someday when software support for it catches up..
https://tushirnitin.wordpress.com/2019/11/17/10-great-sites-for-ui-design-patterns/