a brand new desktop environment
18 Mar 2007 My computer at work has a really steady powersupply. Even the power network never has a glitch. Because of this, I never have a reason to restart my computer and it's on all the time.From time to time I run debian upgrades, but I consider it less critical than on a server. I run debian unstable on my desktop and I have lots and lots of packages installed, not just the packages I need, but also packages I tested at some point in time and never used since.
The result is that my debian installation is pretty fucked up. Even the simplest upgrade has to download hundreds of megabytes of packages and takes a long time. I'm never sure that I won't run into trouble with broken dependencies or even broken packages. Especially the XWindows system can be a pain in the but.
Most of the time, I upgrade without rebooting and assume nothing bad could have happened. All of this because of the stable power-provision...
But even that can go wrong. A couple weeks ago, I performed a daring stunt by plugging in 6 computers on the same powercircuit and turning them all on at once. I'm not sure why I did it: I know the fuse would blow out. Maybe I felt lucky.
Result: 3 offices without power, including my own. After a call to technical support, the power was back on and my computer started booting up.
After a couple fsck-runs, my PC tried to start X and failed. When I fixed that, my trusted KDE environment was gone and instead I was presented with Gnome.
Now I have nothing against gnome. In fact, I don't care which one I use (I have ubuntu at home, which uses gnome).
My whole point is that my desktop environment is fucked up and needs to be refreshed.
This time, I'll probably go with Ubuntu. When I installed my desktop computer, Ubuntu didn't even exist (Yes, that's how old it is). Nowadays, I would be stupid not to run Ubuntu on my desktop.
But, why stop the innovation there ?
In the past I built my desktop from the ground up, adding features that I think would be cool. It works... But things rarely ever integrate and need a lot of work to update.
This time, I want a seamless working environment where things just work. Furthermore, I want to take advantage of working at home more often. I would like to use my laptop for that.
The usecase I have looks like this: I work on my laptop all day (using a dockingstation that provides a better keyboard/mouse and screen. When it's time to go home, I suspend my laptop and take it home. There, I plug it into my docking station and continue working. I should have the option to tunnel traffic to my office using VPN (and vice versa, I would want to tunnel my home network to my office too)
But wait, my vision continues! Being at the office has another "advantage" that I don't have at home. I have a phone of which people have the number. I want that phoneline tunneled through the same VPN to my home, using VOIP. I want to be able to accept incoming calls on my desktop PC at work (the one running debian now). If I'm not reachable, it should take a message. Otherwise, it should forward the call to me on my laptop, either at work or home.
Last year, my laptop got stolen at home. I didn't cry over the missing hardware because it has since then been replaced. But the data that was on it was invaluable (to me). A couple of projects that I had on there were the only copies I had. Plus, my browser had open sessions to several forums I visited. That was painful.
When I received my new laptop, I installed debian on it at first and found out how I could protect my homedirectory using an encrypted filesystem. It worked great. If someone stole my laptop, they would have no use for the data on there. But the data still needed to be mirrored somewhere otherwise I would lose the data again.
So, what I want now in addition to a VPN connection and VOIP, is an encrypted filesystem that is backed up automatically. In addition, I would like it if all the data I have on my laptop is versioned using subversion, so I can go back in time and see what stupid mistakes I made while editing files.
How do I plan to achieve this ? Well, I'm still working on that part.
I know that VPN will probably be no problem (I'm thinking OpenSwan). It will make the network look as if I'm at the office. It would be great if I could have some networkroutes that went to my office and some others that allow me to connect to local resources (like a local network printer and fileshares).
Then there is VOIP. I'll have to look into Asterisk and see if what I want is actually possible. I suspect it is. I can install asterisk on my desktop PC at work and accept calls for me. I should even be able to record a message to indicate I can't be reached (if I or my laptop are not around). I can probably also create a call-queue with music while you wait (I have some nice polka songs) and an answering machine.
I want to have fileshares on my desktop computer that other people can access. Even when my laptop is not hooked up, I should be able to offer these files to my colleagues at work and they should be able to send me files. When I'm at home, I should be able to access those shares over VPN. I can do this with Samba and NFS. I want both because NFS works best in Linux, while Samba works best in Windows and I want both Operating systems on my laptop.
I want the homedirectory on my laptop to be encrypted. When I login, I should be asked for the homedirectory password and then I can use it.
I want to keep a versioned repository of important files in my homedirectory. The files should be stored on a SubVersion server on my desktop PC at work. I should be able to checkout all my files on there to a directory on my (encrypted) homedirectory. The files should be synched automatically so I don't have to worry about it.
Furthermore, all the files on my desktop PC at work should be backep up daily, so I can restore everything if my PC explodes or burns down.
I should also document the things I do to setup both my laptop and desktop computer. This is standard procedure for any server I install and it's a good thing to do for my desktop installations too.
There, I guess that's it.
If I have all these things, I should be able to work on my projects from any place in the world. If I'm not connected to the internet, I should be able to work on a local copy that will be synched with the repository later. All my files will be versioned and backed up and if someone steals my laptop, they won't be able to do anything with the data and I will still have all that data.