Hacker News new | comments | show | ask | jobs | submit login
A funny case of using the PC (luaz.blogspot.com)
35 points by d_luaz on June 23, 2013 | hide | past | web | favorite | 33 comments

I made a very recent decision to do this very thing, but not for any of the reasons the author outlines...

I use an OSX system, and run OSX in a vmware fusion VM, and do all of my work there. Nothing is done in the host OS. I revert to the initial, clean snapshot daily.

I do this for security and privacy. My web history is not wiped by the browser, but is reverted to a clean OS install. Any malware that might infect the VM is cleaned out almost immediately. Further, I can quickly wipe my "system" prior to travel, or other scenarios where I lose physical control of the system.

So at any given time, all I have is a virgin OSX system with vmware fusion on it, and a single, virgin OSX VM. Of course this implies that my work and my data all live remotely, but that has been the case for almost 15 years.

That's very much living in the cloud. How do you handle your passwords -- out of a dropboxed password manager? Or just try to remember them all?

I just remember them.

You're worried about malware on a OS X install? I'm not saying it isn't possible but I'd consider that overkill.

"I wonder about the future where the main OS of a notebook/PC is a VM OS (something like Xen), where we could choose to boot up multiple OSes and communication/sharing between these OS are still possible, and the VM OS doesn't consume too much memory and CPU."

Windows 8 ships with the Hyper-V hypervisor, and provided one's computer has a recent CPU, begins to fulfill the author's vision.

If you had asked me 5 years ago, I would have also been hyped about using a hypervisor to run Windows alongside GNU/Linux, but nowadays I am far more interested in GNU/Linux getting triple A video game titles so that I can simply abandon Windows. When you dual-boot eventually you get sick of powering on/off and you spend most of your time in one of the OSs; I never got to play my games anymore. My solution was to do development on a GNU/Linux or Mac laptop and leave Windows+cygwin on my gaming rig. I frequently use synergy[1] to share my gaming rig's mouse, keyboard, and copy/paste buffer with my laptop over WiFi.

[1] http://synergy-foss.org

I couldn't agree more.

My solution was to run Windows and a very lightweight VM (~512Mb RAM) with a minimal development setup (Arch + emacs + Xmonad) which can be deployed anywhere. RAM can be expanded anytime to allow running heavy servers (such as MongoDB) but the light VM is usually just fine.

I also tried VPS servers on demand (Digital Ocean) + PuTTy on Windows to do remote development, but it isn't nearly as comfortable. Dealing with network waits (e.g. sending large file transfers) was awful, so I don't do that anymore.

I did this because I mostly use Linux for development and Windows for everyday tasks (maintaining a Linux system is tiring even with Ubuntu).

I thought about setting a dev server like you, but I don't want yet another machine in my room wasting space and generating heat. Light ARM systems (e.g. RasPI) might be a good alternative, but I don't feel like dealing with proprietary platforms right now.

Just to clarify that only Pro and Enterprise versions of Windows 8 64 bit have Hyper-V.

I believed Hyper V is more suited if the machine is a server hosting the VM, where client remote into this server from another machine (correct me if I am wrong; perhaps Xen works the same way as well).

It would be nice to get some suggestions on Minimalist/Lightweight Host OS to run VirtualBox. Lubuntu?

Windows just makes it difficult for developers. Or at least difficult for developers not using microsoft stacks.

Why not have a bash compatible shell or at least built-in common programs like ssh and tar?? Even the "power shell" is pretty garbage and has a lot of legacy cmd.exe stuff in it. Where are the tabs!!!

Linuxes just make it difficult for developers. Or at least difficult for developers not using LAMP stacks.

Why not have a CMD compatible shell or at least built-in common programs like rdp and smb?? Even the terminal is clunky and uses bizarre archaic commands. Where is the gui!!!

Not sure if you are being sarcastic for the sake of being sarcastic or are actually serious.

It's a little of both. I like the ideas behind Linux, distros, and FOSS in general, but having grown up in the shadow of Redmond means I'm frustratingly out of my element when trying to set up RasBMC or Raspbian.

Theres always time to learn. You can always try experimenting via VMs on your main computer or simply reading. I can't imagine that RasBMC would be too hard to set up considering its more or less GUI based.

Difficult in what way?

Certain distros come with things like RDP and SMB bundled, and I've never met anyone who actually prefers Window's DOS shell (or whatever it is now) over bash or zsh.

There are sometimes GUIs, but for the most part it's just an extra layer of gunk (at least for me). I partially understand people's need for a GUI, but I just don't get it myself.

The biggest benefits I receive from a GUI are:

1. all details, functions, settings options, etc are explicitly laid out

2. I don't need to remember the command for a setting, nor look it up. I can change a setting with just a couple mouse clicks.

True, there are situations when these are both false, but a well-designed GUI will provide both of these benefits, and maybe even default settings. Enough to get a new user off the ground or enough to give advanced users a hint about why a feature doesn't work right.

> 1. all details, functions, settings options, etc are explicitly laid out

The same is true for a well written man page.

> 2. I don't need to remember the command for a setting, nor look it up. I can change a setting with just a couple mouse clicks.

You still have to remember where the setting is located. You'll still keeping track of a piece of data, but instead of text it's location.

Rather than clicking around through a menu, trying to remember where a specific setting is kept in the GUI, I can open the config file, search for the option I want to change, and quickly adjust it. Same for options, opening up a man page and searching for keywords is a lot nicer, to me, than randomly choosing an option to see if it's what I want.

Plus, I really like tab complete, especially for files, and would rather use that than a file chooser.

I'm not saying it's bad for you, just that those aren't advantages for everyone (specifically, me).

When I'm using the command line on Windows I wind up using ConEmu [1], which gets me the sort of baseline terminal emulator experience I expect from other OSes. I also tend to be using the bash shell installed with the official Git distribution [2], which gets me all those handy *nix commands.

Should the default be better? Absolutely. But this works for now.

[1]: https://code.google.com/p/conemu-maximus5/

[2]: http://git-scm.com/downloads

I am in similar situation, but I have less powerful computer. So I made minimal debian setup in virtualbox, mounted my work folders as shared. When I need it I start the machine in headless mode. After few seconds I got ssh access.

EDIT: I just realized that I was doing the same thing as vagrant is doing, without actually knowing about it beforehand.

One awesome benefit of VMs are snapshots. Experiment as much as you like, then revert to an earlier state and start anew.

Nice to see a fellow Malaysian on the front page of HN ;)

Gotta give a huge recommendation for Vagrant. Spinning up a VM is dead simple, and synchronisation between VMs is more or less automatic. Not sure how well it fares in Windows though.

I've been using it for a while and so far so good. The only problem I ran into was when I wanted to use ansible for the provisioning and since it was not really easy to do so I just went with chef instead.

I really enjoy using Windows, so much that I'm dual booting it on my MacBook Air. I find it particularly odd when web developers make their sites and web apps look better in a Mac than on a Windows machine since (being generic here) most users will be using Windows. This is mostly noticeably in two areas: colors and type. Both look very different between Macs and Wins.

Heads up that since Vagrant 1.2, Ansible is supported by Vagrant without the need of a plugin. I created a gist similar to the one we're using at work to show how to use Ansible on Vagrant: https://gist.github.com/baalexander/5845528.

We do the exact same thing. Up until 5 or so years ago, we used a separate computer under each desk to run Linux on, it's so nice to be able to run both on the same machine. It's also portable, where previously you'd have to drag two laptops on the road with you.

I finally abandoned Windows as my main OS after 16 years and moved to OSX only using Windows 8 in VM for my accounting software VT Transaction+, and I haven't looked back. I was using OSX in VM lots anyway so the time was right.


"Internet Explorer: In Malaysia (my country), IE is the only choice if I need to perform Online Stock Trading (every brokerage use the same ActiveX app developed by the same company), and the same goes with some Online Banking."

I am not 100% certain but in Slovakia majority of gov. related communication requires Internet Explorer. Not talking about Windows.

Sounds like he should try Vagrant.

I'm trying to understand the viability of the use case for Vagrant. It seems to me that if the developer does not do "vagrant destroy" at the end of the day and chooses to customize their VM; then it will dialy diverge from the specified starting point of the Vagrantfile. If on the other hand, the developer does "vagrant up", code some stuff, check it in, do "vagrant destroy" and follows this use case daily then I'd see where Vagrant makes sense.

I use vagrant but I never do vagrant destroy. I just create a separate vagrant for every project that has different requirements. So I have one with LAMP , one with Rails etc and don't have to worry about them treading on each other's toes.

The advantage is how easy it is to create a new VM under vagrant, just entering a few commands vs going through an OS install process. Also most of the boxes are created with development in mind, so having a shared folder created automatically and a passwordless SSH login is a timesaver.

If you wanted a significantly divergent configuration from the base config you could just create a new box and puppet manifest. That way you can distribute your configuration to other developers if required.

You shouldn't need to customize the VM that much beyond installing tools required for the project, because the idea is that you still run most of your user-facing tools on the host OS.

It seems like the purpose of Vagrant is to easily and consistently create VM environment: either multiple VMs for testing, or sharing the same VM setup with others. (based on what I read, no experience here)

Is there a particular use-case for Vagrant where i) I already setup my VM environment ii) Not much sharing or duplication of the VM environment is necessary iii) I actually code within the VM, not just as production/testing environment

The strongest use-case for Vagrant is to set up separate VMs for each project. This allows you to ensure a clean, stable environment for each project you may have, without it being cluttered by dependencies from other projects.

It's like a system-wide virtualenv.

And I have a very cute puppy.

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact