3 methods on how to backup your Emacs file

Data dump by swanksalot on flickr
The emacs personalization file (dotemacs) is a very important resource for every Emacs user. Typically found at ~/.emacs, this file contains elisp code all the personalization of Emacs to accommodate each user. Its so important that it basically represents your Emacs “personality”.

To loose your .emacs file can mean loosing a lot of hours of tweaking and personalizing GNU Emacs through a bunch of collected-through-time snippets. So, being a very valuable asset, having a good method to back it up is a must have.

Here are 3 common methods people use to keep their Emacs file safe:

Simple backup

The most simple thing to do is to manually make copies of the file on a different directory, another partition on the same hard drive, an external hard drive, or a USB key. Also works well when having multiple computers and copying the same .emacs file on each of them. Using rsync to back it up periodically is a good idea, and it can be used to backup all your other elisp code for common modes (typically at ~/.emacs.d/) you use too.

A good option would be to back it up to an online storage service like Drop.io or even Amazon S3.

Version control

The standard and most common way to store your emacs customizations is by saving them on a file named .emacs placed on your home folder. But this is difficult to setup on a version control system since version control systems check things under directories. So this would mean you would be version controlling your whole home folder, which wouldn’t be a bad idea on some cases but on others would be a mess to maintain.

Fortunately there’s another way: at startup, Emacs also looks for a file called init.el on a hidden folder named .emacs.d/ in your home folder when the typical ~/.emacs file is not found. This way, you can easily set your preferred version control system to track changes on that folder. This has the advantage that any other Emacs modes or code you have can be stored and tracked too. This way, whenever you have a clean install, your Emacs setup and modes are just a checkout away from getting done.

On some setups, tracking changes on the whole ~/.emacs.d/ directory may not be a good option. So, to track changes on only your .emacs file can be achieved by moving your init.el file to a folder inside the home elisp directory and will look like this: ~/.emacs.d/dotemacs/init.el and make a symbolic link to it in ~/.emacs.d/ This way I can version control the “dotemacs” directory very easily.

Distributed version control

Many people use SVN as their preferred version control system, which backs up your data into a central location. But using a distributed version control system like Git, Mercurial or Bazaar is a better option. DVCSs let you setup multiple locations where to backup your code repository, so you don’t have a single point of failure. So you can version control your dotemacs file and back up the changes history on many places like Github, Gitorious, Launchpad or any other code hosting service, plus several other remote locations like multiple machines, a NAS or external drives with complete history of your changes.

Do you know other methods? How do you keep from loosing your dotemacs file?

Data dump image by swanksalot on Flickr

Popularity: 7% [?]

Share:
  • Digg
  • del.icio.us
  • Technorati
  • Reddit
  • StumbleUpon
  • Facebook
  • Meneame
  • FriendFeed
  • Identi.ca
  • Twitter
  • Google Bookmarks

Goodbye ACM Crossroads, Hello GNU

ACM Crossroads logo
I’ve been the web editor for the ACM Crossroads student magazine for the past 4 years. Since I’m no longer a student, the time has come to step out of that position and let someone else take the job.

So since issue 16.2 the ACM Crossroads website is in charge of Malay Bhattacharyya of the Indian Statistical Institute, Kolkata and Srinwantu Dey of the University of Florida. I wish them the best since being an ACM Crossroads editor was a great experience. Met a lot of good friends and interesting people and learned a lot about online publishing and workflows. I’ll continue to support the ACM with any help they need, but I’m no longer in charge of anything.

GNU logo
As one thing ends, another has to begin. So at LibrePlanet 2009 I met Rob Myers and asked to volunteer as a GNU.org webmaster. My contributions so far have been small, but constant, maintaining some minor things here and there and helping cleaning up the spam. I hope to get more involved with GNU this year and make great contributions.

Popularity: 3% [?]

Share:
  • Digg
  • del.icio.us
  • Technorati
  • Reddit
  • StumbleUpon
  • Facebook
  • Meneame
  • FriendFeed
  • Identi.ca
  • Twitter
  • Google Bookmarks

My resolutions for 2010

Xmas time

This 2009 has been a good and busy year. Lots of things have happened: I switched to a new job, I got a DSLR camera I’ve been wanting for a long time, I visited San Francisco and the Sillicon Valley, I went to LibrePlanet and met Richard Stallman and many others I look up to, became GNU.org webmaster and I got a dog.

But looking back to my 2009 resolutions post, I’m very sad to see that I barely did any of those items in the list. From that list, I’ve only been able to fix that bug from Emacs Identica-mode and have continued to improve it. And also released one personal project which is Sabesquemecaga.com(spanish version only) a humor website to shout out what pisses you off in a short and anonymous way.

So, for this year’s resolutions I’m going to continue with last year’s list with some updates. So here are my goals for this 2010 year:

  • Exercise 3 times a week and keep it up at least 3 months.

    I haven’t been able to keep this one up for the past two years. I’m not good at disciplined routines and specially not at exercising, but for health conditions this must be done. Now two years later without reaching this goal it is logical that my health and my weight are worse than before, so now it is a high priority project. Last year I added a goal of 3 times a week to make it more accurate than just say “do more exercise”, but since I couldn’t reach it last year, I’m adding an additional clause to make it even more measurable: keep it up for at least 3 months. This way I’ll know for sure that I’ve reached my year’s goal and hopefully will motivate me more.

  • Start private lessons to learn to play the piano.

    Last year I wanted to learn to play the piano but learning by myself has been hard. What’s been harder is finding the time to sit down and practice. So getting private lessons will force me to sit down with the teacher and have full concentration on the task. What stopped me from learning to play the piano was that I never got the private lessons teacher. So to be more specific, I’ll start by finding my private lessons teacher and start those lessons. Lets see what stems from that at the end of the year.

  • Improve Emacs identica-mode.

    Its been a very good year for identica-mode. I’ve recieved a lot of contributions and also added nice features. I’m very happy with the progress so far. But still there’s a lot of room for improvement. I’d like to add asynchronous http connections so that it won’t hang Emacs on crappy connections.

  • Deploy and improve personal projects.

    There are several things I’d like to do with sabesquemecaga.com like adding comments, user login with option of remaining anonymous and voting. Also I’m planning to release the code with an AGPL license. There are other projects that I need to get out to the world. I’ll just set the goal to one more project release this year.

  • Finally start to podcast.

    I’ve been wanting to start producing a podcast for about 2 years. I’ve been procrastinating on that project for a very long time. I don’t have much planned, its just a thing I want to explore and experiment. It will feature tech and music, that’s all I have planned.

  • Learn to groom my dog and train her more tricks.

    This year I got a miniature schnauzer. She’s a very good and smart dog. I’ve trained her a couple of tricks but she’s still not the best obedience dog ever. I’d like to train her more tricks and make her more obedient. And also I’d like to start grooming her myself this year. I don’t like how local vets have trimmed her hair, and have basically ruined her color and texture. By grooming her myself I’ll keep the quality I want on the looks and texture of her fur.

As last year I couldn’t even get my bonus point of riding an ostrich, I’ll set this year’s bonus point as:

  • Go back to rappeling or kayaking at least once this year

Popularity: 1% [?]

Share:
  • Digg
  • del.icio.us
  • Technorati
  • Reddit
  • StumbleUpon
  • Facebook
  • Meneame
  • FriendFeed
  • Identi.ca
  • Twitter
  • Google Bookmarks

Random links from my bookmarks

I’d like to share my bookmarks from time to time. I think sometimes random browsing can be very fruitful and sometimes even productive.

This week on my delicious bookmaks, I’d like to share:

I hope you find these links interesting or usefull as they’ve been for me.

Popularity: 3% [?]

Share:
  • Digg
  • del.icio.us
  • Technorati
  • Reddit
  • StumbleUpon
  • Facebook
  • Meneame
  • FriendFeed
  • Identi.ca
  • Twitter
  • Google Bookmarks

Mac OS X from a GNU/Linux User

Snow Leopard
The Mac OS X slogan I’ve heard from several mac fanboys is “it just works”. Well, being a GNU/Linux user for quite some time and coming to OS X, that is not the case for me. There’s a lot of little things that “just don’t work” on my particular usage.

Recently I’ve been given a 17″ Macbook Pro for use at my job. My first impression was “wow, nice solid hardware” and that has turned to be very true. But after a while of fiddling with the operating system and doing actual work as I’m used to, lots of little things started to annoy me.

Developer tools

First, I’ve been told that OS X is the best platform for developers. Well, to begin with, basic development tools are not installed by default. You have to install all Xcode tools (about 3.1 GB) just to get gcc, make and related basic tools, off the CD plus a bunch of other unknown things. The installer doesn’t detail much on what its installing.

Getting and updating software

Then, there is no repositories support by default. You have to install Macports or Fink, or download each of your software packages by hand, so upgrading all your apps depends entirely on each provider, except for the Apple applications. So this tells me the software upgrade program is exclusively for Apple apps and no third party software can access this upgrading system. It would be a good idea if the software updater had an API or something that other software vendors can use it to notify upgrades.

A curious thing for me is the fact that lately when the software updater updates the Safari web browser and other trivial applications, it asks for a full system restart. I don’t know why OS X, a BSD Unix based system, needs a restart when you upgrade such a non-critical application like the browser, but that reminds me a lot of Windows asking to restart for every single piece of software installed.

PHP and extensions

At my job we use PHP 5.2.8 and a bunch of extensions. Although OS X comes with Apache and PHP already, there’s no easy way to install all the extensions we use, so we have to compile the damn thing and all its dependencies. It has taken us a whole day just setting this up, and some co-workers just quit trying and went through the option of developing on a virtual machine with GNU/Linux. Some even cried. I got it all good and running, but when I upgraded to Snow Leopard, all my settings were reverted so I had to start again.

GNU

Emacs

For most of my tasks I use Emacs, but there’s a bunch of choices and versions on how to install it, but none is very consistent. If you install emacs from Fink, you don’t get finder actions to open files on Emacs. If you don’t install from Fink, then when installing other packages, like Auctex, will need to download Emacs from Fink. Then you have redundancy. So the solution here is to install your elisp files manually on your elisp folder.

Ctrl, meta and alt keys are messed up. Important for any Emacs user and also for a command line power user.

Other software

Basic office apps, like the typical word processor, spreasheed and presentations programs are not available by default, which is something you have for granted on most GNU/Linux distributions.

No GPG, wget, latex and other basic tools you take for granted on any GNU/Linux or BSD system.

Finder annoyances

Hidden folders (those starting with a dot) are not easy to browse on the file navigator (Finder). To view hidden files in Finder, you need a hack. There’s no easy menu option for it.

You cannot overwrite by drag and dropping a hidden folder like ~/.emacs.d/ if it already exists. It first asks you for the administrator password, then it tells you it will not change an “invisible” folder. The only way I could get around it was by using the terminal.

Also Finder has no “one directory up” button, so to move one directory up, you must enable the navigation bar that appears at the bottom of every window. But this is not very intuitive to do. Also, if you are on a file chooser dialog, this bottom navigation does not appear, so there’s no way “up”.

Finder always puts a .DS_Store and a ._MacOSX file and folder on everything you browse, being an external hard drive or usb drive or anything and you can’t disable that behavior. So I typically end up with my thumbdrives and backup drives filled with this files. Also if you compress (zip) a directory using the Finder menu option, the resulting zip also contains these files.

Finder cannot be used as an FTP or SCP client like Konqueror or Nautilus via the location bar. Although you can use the “connect to server…” option.

Conclusions

Well… not much to conclude here. I guess I just have to get used to “the mac way” of things until I get back home to my nice Debian system.

Have you migrated from GNU/Linux to OS X? I’d like to know your experiences and recommendations.

Snow Leopard foto is Creative Commons by Captain Chickenpants
Wildbeet foto is Creative Commons by Arno & Louise

Popularity: 42% [?]

Share:
  • Digg
  • del.icio.us
  • Technorati
  • Reddit
  • StumbleUpon
  • Facebook
  • Meneame
  • FriendFeed
  • Identi.ca
  • Twitter
  • Google Bookmarks

Blog Updates

Cleaning up

Photo by DanBrady

There’s been a lot going on during the past months and I haven’t posted much on this pages lately. But finally I’ve come to choose a new blog theme and doing a bit of clean up around here.

It all started with me doing lots of house chores and cleaning, washing clothes, picking up room, you know, all that stuff that needs to get done every once in a while (actually must be done constantly). Then I looked at my computer and started cleaning up files and old downloads, then doing backups (yes, that also needs to be done frequently) and finally, I managed to upgrade from Debian Lenny (stable) to Debian Squeeze (testing). And ending up with cleaning up the blog and changing the theme.

On the blog side of things, this time I chose to go back to the black text on white background type of blog, just to see how it feels. Maybe I got bored of the darkness of my past theme. I like this one because its very clear and clean.

I’ve also done some clean up of the categories and blog roll links. I hope I didn’t mess up any category’s RSS feed. There was a lot of categories on this blog and that was because I’ve been using Wordpress before tags were integrated, so I was using categories as tags. That is no longer necessary since several Wordpress releases, so it was just confusing me at posting time and confusing visitors with a big mess.

Hope you like this new theme and hope to keep up with my blogging and publishing more stuff.

Popularity: 1% [?]

Share:
  • Digg
  • del.icio.us
  • Technorati
  • Reddit
  • StumbleUpon
  • Facebook
  • Meneame
  • FriendFeed
  • Identi.ca
  • Twitter
  • Google Bookmarks
Subscribe to RSS Feed