Changes in the website

I’m sure you have noticed the fact that this website has changed (if not, welcome!). Well, there was some issues with the previous one and after fixing the code I was completely unable to make it work again, there was some problems with python + django + mysql, very very weird (process forking, memory issues and alike), so I sadly ended giving up and installing the only blogging system made in php (or in some other language) that I would change for the one made by myself: wordpress. I have to say that it’s really nice in it’s latest incarnation :)

I’ll try to update my blog a little bit more often, so stay tunned.

Awesome 3.4-rc* and default floating layout

I think awesome wm is, well awesome. I tried the last rc but I found that all the tags were set to the floating layout by default, so digging through the internet I found these bug that is exactly what was happening to me:

For the lazy ones, here is the solution:

Change:
tags[s] = awful.tag({ 1, 2, 3, 4, 5, 6, 7, 8, 9 }, s)

to:
tags[s] = awful.tag({ 1, 2, 3, 4, 5, 6, 7, 8, 9 }, s, layouts[1])

taken shamelessly from the ticket.

Emacs 23 released!

Read the announce and new features here

Problems shuting down Gentoo with kernel 2.6.29

I updated my laptop a few days ago and suddenly it failed to shutdown correctly, it powered down but without finishing the shutdown process. Today, while reading the spanish users mailing list I found the solution.

In /etc/conf.d/alsasound, set:

UNLOAD_ON_STOP=”no”

KILLPROC_ON_STOP=”no”

This fixed the problem. Here is the original thread

What did I do the past 3 months?

Well, I’ve been doing an internship at a known internet company and it has been an awesome experience. I’ve learned quite a lot, I had an amazing host and a very supportive team. Now I’m on my way back home, and there’s nothing like a couple of hours in an airport to raise the blogging enthusiasm.

I worked with java, that language that I didn’t like too much because, as on of my friends at work said, there is too much plumbing needed to do anything. But, now I feel more respectful to the java camp, and definitely I’m going to keep writing some code in java, after all, if you consider that skills are based on real production code written, java would be my “main” language. (Although is hard to admit)

I did practice some elisp, and I realized tahat even with cool IDE’s with pretty nice features, nothing beats emacs at manipulating text files. Changing editors is a very hard topic, you have to deal with muscle memory and such, and then you found thos little things you take for granted as… how to move.

Well now is time to go back, to my girlfriend and my family!

Do you want to show off emacs?

Take a look at this screencast. Just amazing, I found it while reading the emacs wiki page of cedet.

Elisp func to create a dummy admin.py

While writing a django app, I faced the tedious task of updating the corresponding admin.py file for the models I was writing. Because I didn’t want to customize any of the admin options just yet all I had to do is insert new register entries on the file (one for model). I grew tired of this pretty soon so I wrote this elisp function to update an admin.py file easily. Hope this helps somebody

(defun rl/django-admin-all-models()
(interactive)
(let ((content " "))
  (with-temp-buffer
    (insert "from models import *\n")
    (insert "from django.contrib import admin\n\n")
    (let ((text-start (point)))
  (insert-file-contents "models.py")
  (keep-lines "^class.*$" text-start (point-max))
  (while (re-search-forward "^class \\(\\w+\\).*" nil t)
    (replace-match "admin.site.register(\\1)"))
  (write-file "admin.py" nil)))))

A word of warning: this will override your current admin.py

python and emacs: the rope way

If you follow Planet Emacsen you have probably read a couple of great posts about emacs and python.

Ryan McGuire’s EnigmaCurry blog has a post about using Emacs as a powerful Python IDE, and later about using Autocomplete.el: code completion in emacs. The heart of both posts is rope and ropemacs. Rope is a great!, go to rope’s website for a full feature listing (e.g. autocompletion, refactoring, pydoc, etc.)

A simple post about what you need to install and how you have this post from Edward O’Connor.

Also, if you use yasnippet for templates you may also find interesting Ian Eure’s post about Disabling Python-mode’s skeletons would be also very useful.

Querying for an ethernet address in the arp cache

Just a quick note for myself, and for anybody looking to do the
same. If you have an IP address and you want the corresponding MAC,
using the ARP cache, here is the function:

#include <stdio.h>
#include <sys/types.h>
#include <net/if_arp.h>
#include <sys/ioctl.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#include <string.h>

void print_eth_addr(const char* ip)
{
     int s;
     struct sockaddr_in *sin;
     struct arpreq a;
     struct in_addr addr;

     s = socket(AF_INET, SOCK_DGRAM,0);

     memset(&a, 0, sizeof(a));
     strcpy(a.arp_dev, "wlan0");
     sin = (struct sockaddr_in*)&(a.arp_pa);
     sin->sin_family = AF_INET;
     a.arp_flags = ATF_PUBL;

     inet_aton(ip, &addr);

     memcpy(&sin->sin_addr, &addr, sizeof(struct in_addr));

     if (ioctl(s,SIOCGARP,&a)) {
          perror("ioctl");
     }
     unsigned char* hw_addr = (unsigned char *) a.arp_ha.sa_data;
     printf("HWAddr found : %x:%x:%x:%x:%x:%x\n", hw_addr[0],
        hw_addr[1], hw_addr[2], hw_addr[3], hw_addr[4], hw_addr[5]);

}

Just change “wlan0″ for “eth0″ or your favorite network interface.

Why did I stop using tabs on emacs?

A long (long!) time ago I used to be trapped on the Windows world,
surfing the Web using Microsoft Internet Explorer… and I hated
it. It was an absolute mess having more than 5 windows open, so I
didn’t open more than 3. And then I found Firefox with it’s tabs, I
just loved it.

Fast forward to the present, on almost anything I do using a GUI I
want to be able to use tabs, even on Emacs. I was a huge fan of
elscreen,
it’s a nice package that creates and manages tabs on emacs, nicely
integrated with emacs-w3m (although
emacs-w3m have their own tabs), dired and a few more. I wrote some
elisp code to integrate it with
erc and
jabber.el. So what happen?

ido-mode

Tabs are a great way of organizing and making accessible content, don’t
get me wrong, but on emacs you have the power of the minibuffer, and matching it with
ido-mode feel more emacsy for me than tabs. It does fuzzy
auto-completion on the minibuffer when opening a file or switching
buffers. And when you begin to feeling comfortable using it, tabs (at
least for me) become almost useless.

If what I said earlier doesn’t convince you, I recommend you to watch
Stuart Halloway’s great What You
Can Learn From ido.el
. It greatly
motivated me to take a deep look at ido-mode.