Adventures of a multidimensional freak

This is Juan Julián Merelo Guervós English-language blog. He teaches computer science at the University of Granada, in southern Spain. Come back here to read about politics, technology, with a new twist

This is called a sparse checkout. Most solutions I found need to clone the whole repository and then do a filter, but I found the correct one in this page in Spanish, which I then with this sequence to do a partial checkout of a local repository (as opposed to a remote one).

(Kinda) Frustrated by the onslaugh ot emails that start by the beginning of the year requesting a summer internship with me, my group, whatever, I wrote this short how-to a few years ago. The skinny is that, unlike some Indian universities seem to have, Spanish universities (at least as far as I know) do not offer official internships. Paid or otherwise. You can of course be a invited researcher for some time and the university will provide access to IT facilities. That's it.
So I'm rather surprised the letters keep coming. Or rather not. Probably they grab hold of some mass-emailing program, scrape their way to email authors and then just send thousands of emails to the unsuspecting population. Somebody might have a few thousand euros lying around and dole them out to pay the roundtrip and then a bit more for their troubles, but if I had that money to pay a collaborator I'd probably go local and invest that same money in paying a month more of work.
At the end, it all boils down to me not seeing the logic in writing to somebody in other continent, other than the fact that it's free and, well, you might get lucky and score something in a rich country like, I don't know, Switzerland. Come to think of it, in these countries it might be much cheaper to get a foreign student to come and work for peanuts, even considering roundtrip, than pay a local student to do the same. But, believe me, that's not the case in Spain.

With Google citations you have a nice (or disheartening) graph showing how many citations you have deserved and got during each year. The problem is that it is not trivial to obtain, from that graph, the actual number of citations. However, it is not impossible. Here is how you can compute it.

Here's a simple fix... In Google Code hosting, if you choose git for your repository, the instructions tell you to clone your repo this way:
git clone https://jjmerelo@code.google.com/p/code-golf-etsiit-2012/
However, if you do so, it will be quite difficult, maybe impossible, to push changes back onto the repository. I tried to include my password in a .netrc file, to no avail. What's the fix? Simply clone using this instead:
git clone https://yourusername:your_googlecode_password@code.google.com/p/your-proyect/
That's it! You can then push, merge, and whatever tickles your fancy without a problem.

After upgrading to Ubuntu 12.04, the wireless in my VAIO hasn't been working as it used to. nm-applet stops showing the list of APs, for instance. He was doing exactly that today when I tried the old and tested disable/enable wireless again to make it come back to life (and make the laptop connect to another AP).
Disable wireless worked, but then the enable option was, well, disabled and said that the wireless had been physically disabled. The VAIO has a wireless switch, and it was switched on, so I tried to switch it off and on again. It should have worked, right? Well, it didn't.
I thought that maybe the wifi had busted for some reason, but I booted in *cough* another OS *cough* and it worked like a charm (the wireless, not the OS). So I went back to looking for the solution over the internet. And finally I found it in Ask Ubuntu. Looks like you can physically disable the network inadvertently from nmapplet, and you can enable it back with a shell command I didn't know existed, as shown in cfstras. Since I'm a newbie at AskUbuntu, I can't mod the guy up, but if you are not, please do, it really worked.
In a few words, you have to show using rfkill list all which RF devices are physically disabled and, then, if the list show they are hard blocked, enable then back using its number with rfkill unblock [number].
Etiquetas: internet is great, thanks the gurus

While there's a lot of advice out there on making presentations at conferences, there's not so much for designing and presenting posters. Post facto, I have found this extensive post by Colin Purrington on how to design and present scientific posters. Good advice, all of them, that will do no harm if followed.
My approach is different. Poster presentation, like conference presentation, belongs more to the area of dramatic arts than to marketing. It is information/entertainment, and that is the main thing you have to bear in mind when preparing for the session. Plus, while at a conference you have the full attention of your audience (shared, of course, with email, Facebook, plus the 10% that are simply speaking) in a poster session you have to first attract the attention of the people wandering around a hall shared with other 20 to 100 posters, then keep them there for the duration of the spiel and while you start a new one, and then, of course, convey the information you want to share with your poster.
I will not give you a few bullet points, just share my experience and you can pick and choose whatever you want.
First thing is to choose well the place. Show up early, put up your poster near the entrance or close to the toilettes, in a place that people will see easily, not after walking the halls for a while. As in shops, location is important. If your place has been assigned in advance, look for the best no-show and move there. Near the corners or the ends of halls is always important.
Second, keep your poster minimalistic and use dynamic elements to convey information during the spiel. A poster is just a prop to deliver the presentation, so I used velcros to set up slots so that I can move things around
You can use them to show just a few graphs at a time, or to show real-life animations, data flow, phases in a methodology, whatever. The whole point of this is that the poster has been created for being explained, not to be there and be self-explanatory all by itself.
Posters are actually, or can be, 3-d objects. So put solid things there, papercraft stuff, use them for illustration or for fun, make it mobile, make it rock. I used a couch (my paper was about CouchDB and a skull to show two parts of my algorithm, but there are lots of things you can do. Use fun metaphors, create mockups, things people can look into and from the side.
Be short and state clearly you've finished. To emphasize the closure, give something out. It can be your card, a copy of the paper, or even something related to the paper. I gave out origami couches made by my daughter, which people really liked.
Besides, it gave them an incentive to stay for the whole duration of the spiel: they were only given out at the end.
Finally, design the poster to draw the attention of the audience, not to shoo them off. Too many graphs, too many letters, too many formulae... too much work. Too little, some mistery, what are those velcros for, hey, I can have a free origami (or a pizza, whatever) after the talk, it's worth the while to devote one of my 5-6 poster spots to this person. And always remember to smile and thank them after the talk.
Did it work? Oh boy did it work. People kept coming for the whole duration of the poster session, and you could see former customers brought their coworkers and friends, to have a look or to listen to you. Which brings me to the last bit of advice regarding liquids. Remember to empty your bladder right before the start of the session. And drink a bit of water (never coffee, never tea) after (never during each presentation). You'll have to stand there the whole time, delivering your presentation. You'll never have to leave your post.

I have just finished reading Super Sad True Love Story, and I found it quite good; one of the best, indeed, I've read lately. However, I understand that diehard sci-fi fans will find it quite unsatisfactory, mainly in the lack of detail of artifacts, like the aforementioned äppärät. This post is an attempt to clarify, or rather ask more questions, about it.
At first glance, they're basically a glorified Blackberry, a personal communication device you use to chat, email, look up stuff, and also transmit information via streaming. Noah, one of the Media character, and his girlfriend Amy, have a stream in which they transmit 24/7 their thoughts and what's happening in from of them. It's also a phone you can use to verbal (talk via voice) with your friends, synchronously.
It's clear, then, what they do, but not so clear how they do it; in one of the first chapters of the book, Lenny, the main character (although I think that the real main character is Eunice, his partner, but that's another story) receives a new one in the shape of a pendant. We don't know how big is that, but, well, it's hanging from the neck, so it shouldn't be too big. Hence the questions: what's used for input/output?
My first hunch is that it would be something similar to the Sixth Sense created by the Fluid Interfaces group at MIT. That is, something you wear, that uses any surface for projection, and gestures for input. However, that doesn't leave much privacy. Not that the characters in the novel care too much about privacy (except when they do), but nothing in it allows us to think that they are watching over what others are doing, or using a wall or a table for projecting.
What kind of network it uses is not clear either. It works everywhere, most of the time, and seems to be free; nobody is paying for the bandwidth, since at one particular moment refugees are given old äppärätti regardless of how much connection might cost. Roaming is not a concern, either: they work in Italy, in the USA, wherever. No problem.
So, no solution here, and the device remains as fuzzy as the author has wanted it to be. At the end of the day, an äppärät is just a plot device. You shouldn't delve too deep into it; if it's plausible, that's enough for the purposes of the plot. The name also serves that purpose: it sounds Finnish, that is, non-American, which showcases the technological dependence of America on the rest of the world which is one of the themes of the book.

Next week the deadline for the first (and hopefully not last) edition of the International Workshop on Distributed Evolutionary Computation on Informal Environments will arrive, and maybe we need a bit of explanation on what we consider informal or unconventional. And we will do it by way of a negative definition. What is not informal?
Well, mostly everything published in journal or conferences. Most algorithms take place in static, single node environments using a conventional procedural language by performing a sequence of steps; even parallel evolutionary computation mostly follows a conventional master-slave or island model, with each island performing a conventional (as above) evolutionary algorithm and advancing in lockstep, with all nodes being of exactly the same capabilities.
That is all good and well, and allows everybody to focus on the improvement of the algorithm such as it is, if you have got a good gamer computer or server and a cluster to perform the experiments. This is what would be called conventional.
However, it all looks very sixties; programming has changed incredibly and new languages, and even language paradigms, are being created every single day. Even old tried and true techniques such as databases, threads, map-reduce, AJAX, many techniques that are used everyday in applications haven't trickled down to changing the paradigm of evolutionary computation; these techniques are, besides, in cases much more biologically inspired than the single-thread, single-node that is the mainstream.
And all this is interesting for several reasons. First one, the scientific one: there is science in creating an evolutionary algorithm that goes with the grain of the implementation (hardware, language, operating system, everything). An evolutionary algorithm in Go (the language, not the game) is different in many subtle ways from other languages, the same as it might be in Erlang or in D.
And the second is performance; to take advantage of the full range of capabilities of a particular environment (language + OS + hardware) sometimes concessions must be made to these changes. Threads are needed to fully use modern CPUs; P2P networks are the most adequate for current dynamic networks, and Javascript might be the best option for programming a distributed evolutionary algorithm that will run on browser.
If you do that kind of thing, please consider sending a paper to IWDECIE. It will be a small workshop, single day, tightly scheduled, and we'll be able to discuss the issues related to this kind of thing. And in New Orleans, together with the Congress on Evolutionary Computation.

I have just uploaded the latest version of Algorithm::Evolutionary, a library I use all the time for doing stuff with evolutionary algorithms; latest one online being this poster accepted at the GECCO evolutionary computation conference.
However, it can be left alone for long stretches of time, which means that, when I come back to it, the language and upstream modules I use have drifted and it can be absolutely obsolete. This happens all the time: Perl and CPAN are living beings, and a module left to its own devices plainly stops working after some time, due to an API change or some borderline condition that is no longer accepted in current versions.
That's why you have to stop, every six months or so, to run tests all over again; or check CPAN testers to see if something's gone wrong and fix it. Of course, sometimes there can be documentation errors, problems you hadn't covered by your tests, and so on. And the plain fact that after six months, all code written by you looks alien. So my advice is to go back to whatever you did from time to time, see how it's doing, and nurture it. It can't hurt to do a maintenance release, either.