<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Posts on Pablo Seminario</title><link>https://seminar.io/posts/</link><description>Recent content in Posts on Pablo Seminario</description><generator>Hugo</generator><language>en</language><lastBuildDate>Mon, 31 Aug 2026 15:01:55 +0200</lastBuildDate><atom:link href="https://seminar.io/posts/index.xml" rel="self" type="application/rss+xml"/><item><title>Same me, new stack: a blog refresh</title><link>https://seminar.io/posts/same-me-new-stack-a-blog-refresh/</link><pubDate>Mon, 31 Aug 2026 15:01:55 +0200</pubDate><guid>https://seminar.io/posts/same-me-new-stack-a-blog-refresh/</guid><description>&lt;p&gt;Just a quick post to announce the refresh of my personal blog. This new version is built with Hugo and Tailwind, using a microblogging style.&lt;/p&gt;&#10;&lt;p&gt;The old one was built with a static site generator I&amp;rsquo;d written myself in Python more than 10 years ago.&lt;/p&gt;</description></item><item><title>Building a serverless Telegram bot</title><link>https://seminar.io/posts/building-serverless-telegram-bot/</link><pubDate>Mon, 03 Sep 2018 18:48:00 +0000</pubDate><guid>https://seminar.io/posts/building-serverless-telegram-bot/</guid><description>&lt;p&gt;With the arrival of &lt;a href="https://en.wikipedia.org/wiki/Function_as_a_service"&gt;FaaS&lt;/a&gt; and all the serverless infrastructure providers (AWS, Google Cloud, Azure, etc) now is easy to deploy our own Telegram bot.&lt;/p&gt;&#10;&lt;p&gt;A Webhook-based bot it&amp;rsquo;s the perfect use case for serverless computing, using for example Google Cloud Functions we&amp;rsquo;ll have all these advantages:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Our function will be associated to a public endpoint (IPv4 and IPv6) over HTTPS (using a valid certificate provided by Google)&lt;/li&gt;&#10;&lt;li&gt;Pay only for function invocations and its compute resources consumption, so it could be cheaper than paying for a server powered on all the time&lt;/li&gt;&#10;&lt;li&gt;No server management&lt;/li&gt;&#10;&lt;li&gt;Scales automatically&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="requirements"&gt;Requirements&lt;/h4&gt;&#10;&lt;p&gt;Before start building your bot you&amp;rsquo;ll need to:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Register a new bot following these instructions &lt;a href="https://core.telegram.org/bots#3-how-do-i-create-a-bot"&gt;core.telegram.org/bots&lt;/a&gt; in order to get an API token&lt;/li&gt;&#10;&lt;li&gt;Using a Google Cloud account, register a new project, enable the Cloud Functions API and install the Cloud SDK following &lt;a href="https://cloud.google.com/functions/docs/quickstart"&gt;the official quickstart&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="code"&gt;Code&lt;/h4&gt;&#10;&lt;p&gt;In a few lines of Python you can code a simple echo bot that will reply with the same message that it receives:&lt;/p&gt;&#10;&#10;&#10;&#10;&#10;&lt;div class="code-block"&gt;&#10; &lt;div class="code-block__bar"&gt;&#10; &lt;span&gt;text&lt;/span&gt;&#10; &lt;span&gt;text&lt;/span&gt;&#10; &lt;/div&gt;&#10; &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# main.py&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;import os&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;import telegram&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;def webhook(request):&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; bot = telegram.Bot(token=os.environ[&amp;#34;TELEGRAM_TOKEN&amp;#34;])&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; if request.method == &amp;#34;POST&amp;#34;:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; update = telegram.Update.de_json(request.get_json(force=True), bot)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; chat_id = update.message.chat.id&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; # Reply with the same message&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; bot.sendMessage(chat_id=chat_id, text=update.message.text)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; return &amp;#34;ok&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;The only dependency needed is the amazing &lt;a href="https://python-telegram-bot.org/"&gt;python-telegram-bot&lt;/a&gt; library:&lt;/p&gt;&#10;&#10;&#10;&#10;&#10;&lt;div class="code-block"&gt;&#10; &lt;div class="code-block__bar"&gt;&#10; &lt;span&gt;text&lt;/span&gt;&#10; &lt;span&gt;text&lt;/span&gt;&#10; &lt;/div&gt;&#10; &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# requirements.txt &#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;python-telegram-bot==11.1.0&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#10;&lt;/div&gt;</description></item><item><title>Notes about Android and IPsec on Linux</title><link>https://seminar.io/posts/notes-about-android-and-ipsec-on-linux/</link><pubDate>Sat, 23 Apr 2016 21:35:00 +0000</pubDate><guid>https://seminar.io/posts/notes-about-android-and-ipsec-on-linux/</guid><description>&lt;p&gt;Here&amp;rsquo;s some personal notes about the excellent Jeff Sharkey&amp;rsquo;s article &lt;a href="http://jsharkey.org/blog/2012/09/22/deploying-a-pure-ipsec-pki-vpn-server-for-android-devices/"&gt;Deploying a pure-IPsec PKI VPN server for Android devices&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;My setup is a little bit different to that of Jeff, I have a 1Gbps fiber plan, a Linux server natted behind my ISP&amp;rsquo;s router and my IPsec VPN server is running on a Linux container (LXC), so this container doesn&amp;rsquo;t have a public IP address. The OS used in all the servers is Ubuntu Trusty 14.04.&#10;On the VPN client side I&amp;rsquo;m using Android 6.0 Mashmallow.&lt;/p&gt;</description></item><item><title>DNS resolution for LXC in Ubuntu 14.04</title><link>https://seminar.io/posts/dns-resolution-for-lxc-in-ubuntu-trusty/</link><pubDate>Sun, 27 Jul 2014 15:28:00 +0000</pubDate><guid>https://seminar.io/posts/dns-resolution-for-lxc-in-ubuntu-trusty/</guid><description>&lt;p&gt;Working with &lt;a href="https://linuxcontainers.org/"&gt;LXC&lt;/a&gt; (Linux containers) in Ubuntu&#10;is very easy but by default you need to know the IP address of new containers&#10;to connect to services (ssh, database, webserver, etc.) running on them.&lt;/p&gt;&#10;&lt;p&gt;With some minor configuration you can connect to your containers using a domain&#10;name like that&lt;/p&gt;&#10;&#10;&#10;&#10;&#10;&lt;div class="code-block code-block--term"&gt;&#10; &lt;div class="code-block__bar"&gt;&#10; &lt;span&gt;terminal&lt;/span&gt;&#10; &lt;span&gt;bash&lt;/span&gt;&#10; &lt;/div&gt;&#10; &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ sudo lxc-create --name container1&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ sudo lxc-start --name container1 --daemon&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ ssh ubuntu@container1.lxc&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;In Ubuntu 14.04 Trusty Tahr, &lt;code&gt;lxc-create&lt;/code&gt; use by default the Ubuntu template&#10;and it will create a user called &lt;code&gt;ubuntu&lt;/code&gt;, to change it take a look at the&#10;template options with &lt;code&gt;lxc-create -t ubuntu -h&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Comment utiliser les photographies aériennes de Nantes avec Leaflet</title><link>https://seminar.io/posts/photographies-aeriennes-de-nantes-avec-leafletjs/</link><pubDate>Sat, 04 Jan 2014 01:15:00 +0000</pubDate><guid>https://seminar.io/posts/photographies-aeriennes-de-nantes-avec-leafletjs/</guid><description>&lt;img alt="Screenshot d'une carte interactive" src="photographies-aeriennes-de-nantes-avec-leafletjs.jpg" /&gt;&#10;Ce mini post explique comment on peut utiliser les [Photographies aériennes de la Loire-Atlantique](http://data.paysdelaloire.fr/donnees/detail/photographies-aeriennes-de-la-loire-atlantique/) pour créer des cartes interactives avec [Leafletjs](http://leafletjs.com/).&#10;&lt;p&gt;Les &lt;a href="http://data.paysdelaloire.fr/donnees/detail/photographies-aeriennes-de-la-loire-atlantique/"&gt;Photographies aériennes de la Loire-Atlantique&lt;/a&gt; font partie des jeux de données Open Data de la région des Pays de la Loire et pour utiliser et accéder aux données il faut acepter leur licence.&lt;/p&gt;&#10;&lt;p&gt;Pour accéder aux images le site &lt;a href="http://vuduciel.loire-atlantique.fr/"&gt;vuduciel.loire-atlantique.fr&lt;/a&gt; délivre un flux WMS (Web Map Service) qui peut être intégré facilement avec Leaflet en utilisant une &lt;code&gt;TileLayer.WMS&lt;/code&gt;.&#10;Par exemple avec quelques lignes de HTML on peut générer une carte et ajouter un marqueur :&lt;/p&gt;</description></item><item><title>Testing your REST client in Python</title><link>https://seminar.io/posts/testing-your-rest-client-in-python/</link><pubDate>Fri, 27 Sep 2013 12:38:00 +0000</pubDate><guid>https://seminar.io/posts/testing-your-rest-client-in-python/</guid><description>&lt;p&gt;When you start to write a client for a REST API in Python at beginning it&amp;rsquo;s easy to test it using a Python interactive session,&#10;but at some point you&amp;rsquo;ll have to write tests, at that moment you&amp;rsquo;ll see that it&amp;rsquo;s not easy to test your code against live data from the RESTful web API.&#10;You may encounter various problems, for example, you can have network problems when tests run, the web server may be temporarily down or tests become slow due to network latency.&lt;/p&gt;&#10;&lt;p&gt;A solution to this problem is to use Mock objects, they simulate the behavior of your real objects in a controlled way,&#10;so in this case a mock object may simulate the behavior of the &lt;code&gt;urlopen&lt;/code&gt; function (from the &lt;code&gt;urllib2&lt;/code&gt; module) and return &lt;em&gt;something&lt;/em&gt; like an HTTP response (a file-like object) without hit the real REST API. The file-like object returned may map a RESTful resource to a file which contains a pre-saved response from the real web server.&lt;/p&gt;&#10;&lt;p&gt;To show the idea I wrote a simple REST client for the &lt;a href="http://developer.github.com/v3/"&gt;Github API&lt;/a&gt;. Here&amp;rsquo;s what the directory structure looks like&lt;/p&gt;&#10;&#10;&#10;&#10;&#10;&lt;div class="code-block code-block--term"&gt;&#10; &lt;div class="code-block__bar"&gt;&#10; &lt;span&gt;terminal&lt;/span&gt;&#10; &lt;span&gt;bash&lt;/span&gt;&#10; &lt;/div&gt;&#10; &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ tree project&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;project&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── client.py&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;└── tests/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ├── test_client.py&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; └── resources/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; └── users/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; └── test_user&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="m"&gt;3&lt;/span&gt; directories, &lt;span class="m"&gt;3&lt;/span&gt; files&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;I use &lt;a href="https://nose.readthedocs.org/"&gt;nose&lt;/a&gt; as test runner and &lt;a href="http://www.voidspace.org.uk/python/mock/"&gt;Foord&amp;rsquo;s Mock&lt;/a&gt; library to create mock objects. You can install them into a virtualenv by typing&lt;/p&gt;&#10;&#10;&#10;&#10;&#10;&lt;div class="code-block code-block--term"&gt;&#10; &lt;div class="code-block__bar"&gt;&#10; &lt;span&gt;terminal&lt;/span&gt;&#10; &lt;span&gt;bash&lt;/span&gt;&#10; &lt;/div&gt;&#10; &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ pip install nose mock&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;Here&amp;rsquo;s the content of the &lt;code&gt;client.py&lt;/code&gt; file&lt;/p&gt;&#10;&#10;&#10;&#10;&#10;&lt;div class="code-block"&gt;&#10; &lt;div class="code-block__bar"&gt;&#10; &lt;span&gt;python&lt;/span&gt;&#10; &lt;span&gt;python&lt;/span&gt;&#10; &lt;/div&gt;&#10; &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;json&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;urllib2&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;urlopen&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&#10;&#10;&#10;&#10;&lt;div class="code-block"&gt;&#10; &lt;div class="code-block__bar"&gt;&#10; &lt;span&gt;text&lt;/span&gt;&#10; &lt;span&gt;text&lt;/span&gt;&#10; &lt;/div&gt;&#10; &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;class ClientAPI(object):&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; def request(self, user):&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; url = &amp;#34;https://api.github.com/users/%s&amp;#34; % user&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; response = urlopen(url)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; raw_data = response.read().decode(&amp;#39;utf-8&amp;#39;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; return json.loads(raw_data)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;As you can see, it calls &lt;code&gt;urlopen&lt;/code&gt;, parse the JSON data from the HTTP response and return a Python dictionary.&lt;/p&gt;</description></item><item><title>How to use the Percolate API with Python</title><link>https://seminar.io/posts/how-to-use-the-percolate-api-with-python/</link><pubDate>Fri, 19 Jul 2013 08:21:00 +0000</pubDate><guid>https://seminar.io/posts/how-to-use-the-percolate-api-with-python/</guid><description>&lt;p&gt;Recently, I&amp;rsquo;ve been working on migrate a Django project from &lt;a href="http://lucene.apache.org/solr/features.html"&gt;Solr&lt;/a&gt; to &lt;a href="http://www.elasticsearch.org/overview/"&gt;Elasticsearch&lt;/a&gt;, both of them are great search servers based on Apache Lucene, but Elasticsearch has an interesting feature called Percolate, that&amp;rsquo;s missing on Solr.&lt;/p&gt;&#10;&lt;p&gt;Percolate is the reverse operation of indexing and then searching. Instead of sending docs, indexing them, and then running queries. One sends queries, registers them, and then sends docs and finds out which queries match that doc.&lt;/p&gt;</description></item><item><title>Running Scrapy on Amazon EC2</title><link>https://seminar.io/posts/running-scrapy-on-amazon-ec2/</link><pubDate>Tue, 26 Mar 2013 16:21:00 +0000</pubDate><guid>https://seminar.io/posts/running-scrapy-on-amazon-ec2/</guid><description>&lt;p&gt;Sometimes can be useful to crawl sites with &lt;a href="http://scrapy.org/"&gt;Scrapy&lt;/a&gt; using temporary&#10;resources on the cloud, and Amazon EC2 is perfect for this task.&#10;You can launch an Ubuntu OS instance and schedule your spiders using the Scrapyd API.&#10;With &lt;a href="http://boto.readthedocs.org/"&gt;boto&lt;/a&gt;, a python interface to Amazon Web Services,&#10;you can launch instances and install the scrapy daemon using the user data feature to run a script on boot.&lt;/p&gt;&#10;&lt;p&gt;First, you need an AWS account with your access keys, a EC2 security group&#10;accepting TCP connections on port 6800 and a key pair for the selected region.&#10;After that you must choose an Ubuntu EC2 image, here you can find a list&#10;of &lt;a href="http://cloud-images.ubuntu.com/locator/ec2/"&gt;Ubuntu AMIs&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Ubatar and the Ubuntu App Showdown</title><link>https://seminar.io/posts/ubatar-and-the-ubuntu-app-showdown/</link><pubDate>Sun, 08 Jul 2012 20:11:00 +0000</pubDate><guid>https://seminar.io/posts/ubatar-and-the-ubuntu-app-showdown/</guid><description>&lt;p&gt;The last 3 weeks I was working on developing an application to participate in&#10;a contest called &lt;a href="http://developer.ubuntu.com/showdown/"&gt;Ubuntu App Showdown&lt;/a&gt;.&lt;/p&gt;&#10;&lt;p&gt;My application is called &lt;a href="https://launchpad.net/ubatar/"&gt;Ubatar&lt;/a&gt; and its main&#10;objective is to provide a solution to this &lt;a href="http://brainstorm.ubuntu.com/idea/25833/"&gt;idea&lt;/a&gt;.&#10;Here you can see some videos of the latest version of Ubatar fulfilling its purpose.&lt;/p&gt;&#10;&lt;iframe width="853" height="480" src="//www.youtube.com/embed/Kn05Isb7lwE?list=PL66E4F18CC99EB82C" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&#10;&lt;p&gt;During these 3 weeks I learned many things, reading a lot of source code, looking&#10;for &lt;a href="http://nullege.com/"&gt;examples&lt;/a&gt;&#10;and &lt;a href="http://askubuntu.com/questions/tagged/application-development"&gt;discussing&lt;/a&gt; with other developers.&#10;I can only say that I really enjoyed and was an incredible experience.&#10;Thanks to all the Ubuntu development team and the community at large.&lt;/p&gt;</description></item><item><title>World IPv6 day</title><link>https://seminar.io/posts/world-ipv6-day/</link><pubDate>Wed, 06 Jun 2012 21:53:00 +0000</pubDate><guid>https://seminar.io/posts/world-ipv6-day/</guid><description>&lt;p&gt;To celebrate the &lt;a href="http://www.worldipv6launch.org/"&gt;world IPv6 day&lt;/a&gt;&#10;I decided to activate IPv6 on this blog.&#10;Now you can visit my site with native IPv6 connectivity.&lt;/p&gt;&#10;&lt;p&gt;If you want to know more about IPv6 you can start reading this&#10;&lt;a href="http://www.google.com/intl/en/ipv6/"&gt;overview&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Installing Solr on Debian 6.0</title><link>https://seminar.io/posts/installing-solr-on-debian-6-0/</link><pubDate>Tue, 22 Feb 2011 19:29:00 +0000</pubDate><guid>https://seminar.io/posts/installing-solr-on-debian-6-0/</guid><description>&lt;blockquote&gt;&#10;&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt; this is an old blog post, Solr is now included in Debian since 7.0, it can be installed through apt-get by calling &lt;code&gt;apt-get install solr-tomcat&lt;/code&gt;.&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;p&gt;Recently I&amp;rsquo;ve been working on a Django project that uses the&#10;&lt;a href="http://haystacksearch.org/"&gt;Haystack&lt;/a&gt; search API and the&#10;&lt;a href="http://lucene.apache.org/solr/"&gt;Solr&lt;/a&gt; search engine to perform full text&#10;searching on indexed data.&lt;/p&gt;&#10;&lt;p&gt;This project was initially deployed on a Debian 5.0 (Lenny) server with some&#10;issues with Tomcat, but using the latest stable release of Debian (code named&#10;&lt;a href="http://www.debian.org/releases/squeeze/"&gt;Squeeze&lt;/a&gt;) install Tomcat 6 and Solr is&#10;very easy.&lt;/p&gt;</description></item><item><title>Screenkey 0.2 released!</title><link>https://seminar.io/posts/screenkey-0-2-released/</link><pubDate>Wed, 16 Jun 2010 11:02:00 +0000</pubDate><guid>https://seminar.io/posts/screenkey-0-2-released/</guid><description>&lt;p&gt;A few days ago I released the first version of &lt;a href="https://seminar.io/projects/screenkey/"&gt;Screenkey&lt;/a&gt;&#10;which was reviewed positively by &lt;a href="http://www.omgubuntu.co.uk/2010/06/screenkey-desktop-recording-tool.html"&gt;OMG! Ubuntu!&lt;/a&gt;,&#10;&lt;a href="http://www.korben.info/screenkey-le-logiciel-de-screencast-pour-ubuntu-qui-affiche-les-touches-tapees-au-clavier.html"&gt;Korben&lt;/a&gt;&#10;and &lt;a href="http://linuxundich.de/de/ubuntu/screenkey-eingaben-screencasts-visualisieren/"&gt;Linux und Ich&lt;/a&gt;.&lt;/p&gt;&#10;&lt;p&gt;Now, I&amp;rsquo;m happy to announce the release of Screenkey 0.2. This release includes&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;A preferences dialog to adjust size and position&lt;/li&gt;&#10;&lt;li&gt;Two keyboard modes (normal and raw)&lt;/li&gt;&#10;&lt;li&gt;Command line options (see &lt;code&gt;--help&lt;/code&gt;)&lt;/li&gt;&#10;&lt;li&gt;Some &lt;a href="https://bugs.launchpad.net/screenkey/&amp;#43;bugs?field.status:list=FIXRELEASED"&gt;bug fixes&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;The next release will include support for Launchpad translations, save session to file and more keyboard modes (specific vim and emacs key bindings).&lt;/p&gt;</description></item><item><title>Le greffon OpenSubtitles de Totem</title><link>https://seminar.io/posts/le-greffon-opensubtitles-de-totem/</link><pubDate>Tue, 25 May 2010 22:18:00 +0000</pubDate><guid>https://seminar.io/posts/le-greffon-opensubtitles-de-totem/</guid><description>&lt;p&gt;Si vous n&amp;rsquo;avez pas encore mis à jour votre système Ubuntu vers la dernière version 10.04 &lt;em&gt;Lucid Lynx&lt;/em&gt; et si vous utilisez le greffon de téléchargement de sous-titres du lecteur vidéo Totem, vous remarquerez que le greffon ne marche plus.&#10;Cela est dû à un changement de l&amp;rsquo;&lt;a href="http://trac.opensubtitles.org/projects/opensubtitles/wiki/XMLRPC"&gt;API XML-RPC&lt;/a&gt; du site &lt;a href="http://www.opensubtitles.org"&gt;opensubtitles.org&lt;/a&gt;.&lt;/p&gt;&#10;&lt;p&gt;Mais bon pour le corriger, sans mettre à jour votre système &lt;em&gt;Ubuntu 9.10&lt;/em&gt;, vous pouvez ouvrir un terminal et lancez la commande suivante&lt;/p&gt;</description></item><item><title>Another Counter... and J2ME</title><link>https://seminar.io/posts/another-counter-and-j2me/</link><pubDate>Thu, 08 Apr 2010 23:28:00 +0000</pubDate><guid>https://seminar.io/posts/another-counter-and-j2me/</guid><description>&lt;p&gt;Just to try Java Wireless Toolkit, also know as J2ME, on my Samsung C3050 mobile phone I wrote a silly and simple application called Another Counter, wich as its name says is used to count things, like a tally counter, then you can count people, events, measure traffic, etc.&lt;/p&gt;&#10;&lt;p&gt;A version of the toolkit for Linux can be downloaded from &lt;a href="http://java.sun.com/products/sjwtoolkit/download.html"&gt;here&lt;/a&gt;, it includes build tools, utilities, examples,  and a device emulator. With some knowledge of Java programming and reading the &lt;a href="http://java.sun.com/javame/reference/apis/jsr118/"&gt;API&lt;/a&gt; is easy to write small applications like this.&lt;/p&gt;</description></item><item><title>Metacity Window Buttons</title><link>https://seminar.io/posts/metacity-window-buttons/</link><pubDate>Wed, 10 Mar 2010 00:24:00 +0000</pubDate><guid>https://seminar.io/posts/metacity-window-buttons/</guid><description>&lt;p&gt;Una simple herramienta para configurar los botones de Metacity (el window manager del escritorio GNOME).&lt;/p&gt;&#10;&lt;p&gt;Si estas usando &lt;em&gt;Ubuntu Karmic Koala&lt;/em&gt; y querés configurar los botones para que se vean como en la nueva versión &lt;em&gt;Lucid Lynx&lt;/em&gt;. O sí usas &lt;em&gt;Lucid Lynx&lt;/em&gt; y querés volver la configuración al estilo de &lt;em&gt;Karmic Koala&lt;/em&gt;, lo podés hacer sin tener que usar el editor de configuraciones de GNOME (gconf-editor).&lt;/p&gt;&#10;&lt;p&gt;Me parece muy bueno el cambio en los botones de las ventanas para la nueva versión de Ubuntu, para hacerlo diferente, único. Costará un poco adaptarse pero es como todo, por eso yo ya cambié el estilo de los botones en mi Karmic :D. De todas formas si a alguien no le gusta lo puede cambiar a su gusto, incluso si lo preferís, podés sacar todos los botones de las ventanas ;)&lt;/p&gt;</description></item><item><title>Pimp your GNOME Desktop</title><link>https://seminar.io/posts/pimp-your-gnome-desktop/</link><pubDate>Tue, 19 Jan 2010 17:45:00 +0000</pubDate><guid>https://seminar.io/posts/pimp-your-gnome-desktop/</guid><description>&lt;p&gt;The real title of this post should have been Pimp your Metacity, but not everyone knows that Metacity is the official window manager of GNOME.&lt;/p&gt;&#10;&lt;p&gt;This is just a modified version of the default theme in Ubuntu Karmic Koala. The main difference is that the minimize, maximize and close window bottons has been removed. They are only activated by mouseover.&lt;/p&gt;&#10;&lt;p&gt;It is useful for users who already know the position of the window buttons in GNOME and all the time use keyboard shortcuts to manage the windows. And especially useful on small screens like netbooks where there is not enough space avaliable to display redundant things.&lt;/p&gt;</description></item><item><title>ext4 support in Ubuntu Intrepid 8.10</title><link>https://seminar.io/posts/ext4-support-in-ubuntu-intrepid-8-10/</link><pubDate>Wed, 01 Jul 2009 01:34:00 +0000</pubDate><guid>https://seminar.io/posts/ext4-support-in-ubuntu-intrepid-8-10/</guid><description>&lt;p&gt;This is just a simple tip to use ext4 filesystems in Ubuntu Intrepid Ibex 8.10.&#10;On Ubuntu Jaunty ext4 filesystems is fully supported but in Intrepid was on development.&#10;To use it we must load the module &lt;code&gt;ext4dev&lt;/code&gt;&lt;/p&gt;&#10;&#10;&#10;&#10;&#10;&lt;div class="code-block code-block--term"&gt;&#10; &lt;div class="code-block__bar"&gt;&#10; &lt;span&gt;terminal&lt;/span&gt;&#10; &lt;span&gt;bash&lt;/span&gt;&#10; &lt;/div&gt;&#10; &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo modprobe ext4dev&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;to check the filesystems supported by the kernel we can do&lt;/p&gt;&#10;&#10;&#10;&#10;&#10;&lt;div class="code-block code-block--term"&gt;&#10; &lt;div class="code-block__bar"&gt;&#10; &lt;span&gt;terminal&lt;/span&gt;&#10; &lt;span&gt;bash&lt;/span&gt;&#10; &lt;/div&gt;&#10; &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cat /proc/filesystems&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;there should be a line with &lt;code&gt;ext4dev&lt;/code&gt;.&#10;Now, if we try to mount a formatted partition as ext4, we will see that it&amp;rsquo;s not possible&lt;/p&gt;</description></item><item><title>Compilando php-gtk2 en Ubuntu 8.10</title><link>https://seminar.io/posts/compilando-php-gtk2-en-ubuntu-8-10/</link><pubDate>Sun, 11 Jan 2009 18:14:00 +0000</pubDate><guid>https://seminar.io/posts/compilando-php-gtk2-en-ubuntu-8-10/</guid><description>&lt;p&gt;&lt;em&gt;&lt;span style="color: #ff0000;"&gt;Update!&lt;/span&gt;&lt;/em&gt; you can read this post translated to English &lt;a href="https://seminar.io/howtos/php-gtk2/"&gt;here&lt;/a&gt;.&lt;/p&gt;&#10;&lt;p&gt;Escribo este post porque compilar &lt;a href="http://gtk.php.net"&gt;PHP-GTK 2&lt;/a&gt; en Ubuntu Intrepid no es tan obvio como debería ser, o al menos como dicen &lt;a href="http://gtk.php.net/manual/en/tutorials.installation.linux.php"&gt;acá&lt;/a&gt;.&#10;Descargué la última versión estable de PHP-GTK 2, la &lt;a href="http://gtk.php.net/download.php"&gt;2.0.1&lt;/a&gt; pero al intentar compilarlo tira algunos errores, en &lt;a href="https://bugs.launchpad.net/ubuntu/&amp;#43;source/php5/&amp;#43;bug/262251"&gt;Launchpad&lt;/a&gt; hay un reporte sobre este bug. El fix para esto es&lt;/p&gt;&#10;&#10;&#10;&#10;&#10;&lt;div class="code-block code-block--term"&gt;&#10; &lt;div class="code-block__bar"&gt;&#10; &lt;span&gt;terminal&lt;/span&gt;&#10; &lt;span&gt;bash&lt;/span&gt;&#10; &lt;/div&gt;&#10; &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ &lt;span class="nb"&gt;cd&lt;/span&gt; /usr/share/aclocal&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ cat lt~obsolete.m4 ltoptions.m4 ltsugar.m4 ltversion.m4 &amp;gt;&amp;gt; libtool.m4&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;por un problema con libtool.&#10;El tema es que después de hacer esto tampoco compiló. Se me ocurrió probar la versión del CVS de PHP-GTK pero pasaba el &lt;code&gt;configure&lt;/code&gt; pero al hacer &lt;code&gt;make&lt;/code&gt; tiraba otros errores.&#10;La solución fue descargar la versión anterior a la estable de PHP-GTK, la 2.0.0. Este es el link para descargarla &lt;a href="http://gtk.php.net/do_download.php?download_file=php-gtk-2.0.0.tar.gz"&gt;http://gtk.php.net/do_download.php?download_file=php-gtk-2.0.0.tar.gz&lt;/a&gt;&#10;Una vez descargado, solo hay que hacer&lt;/p&gt;</description></item><item><title>Castellanizando mi teclado!</title><link>https://seminar.io/posts/castellanizando-mi-teclado/</link><pubDate>Fri, 31 Oct 2008 01:45:00 +0000</pubDate><guid>https://seminar.io/posts/castellanizando-mi-teclado/</guid><description>&lt;p&gt;Mi &lt;a href="http://www.asus.com/products.aspx?l1=24&amp;amp;l2=164&amp;amp;l3=0&amp;amp;l4=0&amp;amp;model=2303&amp;amp;modelmenu=1" target="_blank"&gt;eeePC&lt;/a&gt; viene con teclado en inglés, lo que no es muy útil para escribir textos en español. Y existen muchas formas y &lt;span style="font-style: italic;"&gt;recetas&lt;/span&gt; para cambiar la configuración del teclado, entre&#10;algunas está la de ponerlo en español y adivinar de memoria donde esta cada tecla, otros sugieren cambiar las teclas usando &lt;span style="font-family: monospace;"&gt;xmodmap&lt;/span&gt; y creando un archivo &lt;span style="font-family: monospace;"&gt;.Xmodmap&lt;/span&gt; en el home, o editando &lt;span style="font-family: monospace;"&gt;xorg.conf&lt;/span&gt;. Pero la forma más fácil que encontré para hacerlo en &lt;span style="font-style: italic;"&gt;Ubuntu&lt;/span&gt; con &lt;span style="font-style: italic;"&gt;Gnome&lt;/span&gt; es ir a &lt;span style="font-style: italic;"&gt;Sistema-&amp;gt;Preferencias-&amp;gt;Teclado&lt;/span&gt; y ahí dentro de la solapa &lt;span style="font-style: italic;"&gt;Distribuciones&lt;/span&gt;, añadir la distribución &lt;span style="font-style: italic;"&gt;EEUU&lt;/span&gt; y seleccionar como variante &lt;span style="font-style: italic;"&gt;Internacional (AltGr dead keys)&lt;/span&gt; y voil&amp;amp;agrave! De esta forma ya se pueden agregar, usando la tecla &lt;span style="font-family: monospace;"&gt;ALT&lt;/span&gt; derecha, las vocales acentuadas, la ñ y algunas otras.&lt;/p&gt;</description></item><item><title>Mi clave GPG comprometida</title><link>https://seminar.io/posts/mi-clave-gpg-comprometida/</link><pubDate>Mon, 22 Sep 2008 14:53:00 +0000</pubDate><guid>https://seminar.io/posts/mi-clave-gpg-comprometida/</guid><description>&lt;p&gt;Con el robo de &lt;span style="font-style: italic;"&gt;amidala&lt;/span&gt; (mi laptop) mi clave GPG privada que iba dentro quedo comprometida. Pero con la copia de la clave privada y del certificado de revocación que tenía revoké mi clave en pks.lugmen.org.ar&lt;br /&gt;&lt;/p&gt;&#10;&lt;div class="code"&gt;&lt;pre&gt;&#10;gpg --import revoke-cert.asc&#10;gpg --keyserver pks.lugmen.org.ar --send-keys 555B6773&#10;&lt;/pre&gt;&lt;/div&gt;&#10;Con esto no se borra mi clave en el servidor pero ya aparece como revocada.</description></item><item><title>mv /home/pabluk</title><link>https://seminar.io/posts/mv-homepabluk/</link><pubDate>Sat, 21 Jun 2008 15:43:00 +0000</pubDate><guid>https://seminar.io/posts/mv-homepabluk/</guid><description>&lt;p&gt;Hace unos días que terminé de mudarme por décima vez en Mendoza!! Desde que estoy hace un par de años estos fueron los lugares por los que estuve&lt;/p&gt;&#10;&lt;ol&gt;&#10;```&#10;&lt;li&gt;&lt;strong&gt;Compartiendo departamento con Charly&lt;/strong&gt; sin palabras :|&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;El tio Resi&lt;/strong&gt; y su residencia de Sgto. Cabral, buenísimo! Conocí gente copada que todavía veo, Gabi, Dani, Nadia, Leandro y a otros a los que no veo tan seguido&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;En la casa del Sr. viejito &lt;/strong&gt; de Agustí Alvarez, ahí estuve viviendo con Marina en una parte de la casa que nos alquilaba. Después de un mes se puso insoportable el viejito&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;En la residencia cerca de la UNC&lt;/strong&gt; very dangerous! quedaba en un barrio copado lejos de todo pero cerca de un par de villas, por suerte solo estuve un mes ahí&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;El dpto de Paso de los Andes&lt;/strong&gt; donde estuve 2 años, al principio viviamos con Marina y después se sumó Amancay! que recuerdos&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;La residencia Olascoaga&lt;/strong&gt; the best! era como estar en un hostel y a la vez en la casa de Gran Hermano, solo faltaban las cámaras. Viviendo con 15 personas de todos lados, de España, Inglaterra, Chile, Bolivia, Francia, México, Ecuador, Alemanía, etc. Conocí mucha gente copada, loca, interesante, divertida e importante. Definitivamente las mejores fiestas estuvieron ahí&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;El depa de Leandro&lt;/strong&gt; buenísimo a unas cuadras de la facu&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Viviendo en un garage&lt;/strong&gt; pude saber como se sentía &lt;a href="http://es.wikipedia.org/wiki/ALF" target="_blank"&gt;Alf&lt;/a&gt;. Vivir un garage no es tan feo como suena&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;La casa de Granaderos&lt;/strong&gt; a metros de la pileta de natación del gimnasio municipal nro. 1, excelente para ir de &lt;a href="http://picasaweb.google.com/pabluk/EnLaPile" target="_blank"&gt;23:00 a 24:00&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;El departemento de Gral. Paz&lt;/strong&gt; con el Tute y familia&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Ahora viviendo en Lamadrid&lt;/strong&gt; de vuelta a la quinta, solo (al menos hasta que llegue Méli), cerca de la facu y de la Parra donde venden los mejores brownies.&lt;/li&gt;&#10;```&#10;&lt;/ol&gt;&#10;¿En que lugar de Mendoza será mi próxima mudanza?... quién sabe, pero espero que no sean muchas más! Después de tantas mudanzas puedo decir que todo lo que uno necesita para vivir puede entrar en una mochila normal y otra de 60 litros ;)</description></item><item><title>Another Twitter command-line client</title><link>https://seminar.io/posts/another-twitter-command-line-client/</link><pubDate>Fri, 13 Jun 2008 23:46:00 +0000</pubDate><guid>https://seminar.io/posts/another-twitter-command-line-client/</guid><description>&lt;p&gt;No sé hasta cuando me va a durar, pero por ahora sigo usando &lt;a href="http://twitter.com/pabluk" target="_blank"&gt;Twitter&lt;/a&gt;. El tema o la excusa para escribir este script, es que es un embole tener un browser corriendo solo para ver los updates. Y aprovechando que la &lt;a href="http://groups.google.com/group/twitter-development-talk/web/api-documentation" target="_blank"&gt;API&lt;/a&gt; esta por todos lados y no es nada complicado hacerse un cliente en cualquier lenguaje. En este caso lo hice con PHP, si si ya sé que podría haber usado hasta bash y tidy para esto. Pero esto fue lo más rápido que encontré para hacerlo, solo necesitaba PHP para parsear JSON y un poco de PEAR. &lt;a href="http://twitter.com" target="_blank"&gt;Twitter&lt;/a&gt; también soporta XML, RSS y ATOM.&lt;/p&gt;</description></item><item><title>Keysigning Party @LUGMen</title><link>https://seminar.io/posts/keysigning-party-lugmen/</link><pubDate>Fri, 13 Jun 2008 02:36:00 +0000</pubDate><guid>https://seminar.io/posts/keysigning-party-lugmen/</guid><description>&lt;p&gt;&lt;a href="http://picasaweb.google.com/pabluk/KeysigningPartyLUGMen" target="_blank"&gt;&lt;img alt="" src="http://lh6.ggpht.com/pabluk/SFHdHSeHjOI/AAAAAAAAELg/8ZOUshkAkko/s144/dscn5492.jpg" style="float: left; margin: 0 10px 0 0;" /&gt;&lt;/a&gt;&#10;Como algunos sabrán y para los que no también, en la reunión pasada de &lt;a href="http://www.lugmen.org.ar/" target="_blank"&gt;LUGMen&lt;/a&gt; se hizo una &lt;a href="http://www.cryptnet.net/fdp/crypto/keysigning_party/en/keysigning_party.html" target="_blank"&gt;keysigning party&lt;/a&gt;, hace casi una semana, pero por los efectos del alcohol olvidé mi cámara con las fotos de la reunión en la casa de unos amigos :P&#10;Pero acá están. Solo faltaron 2 de los 15 que confirmaron su presencia. Se habló sobre criptografía, nos reímos de los nombres reales y las fotos de los documentos de cada uno, y como siempre hubo tortitas y &lt;span style="font-style: italic;"&gt;Coca-Cola&lt;/span&gt;®.&#10;Así quedo actualmente mi anillo de confianza&lt;/p&gt;</description></item><item><title>Webcam shots and the Picasa Web Data API</title><link>https://seminar.io/posts/webcam-shots-and-the-picasa-web-data-api/</link><pubDate>Tue, 03 Jun 2008 13:20:00 +0000</pubDate><guid>https://seminar.io/posts/webcam-shots-and-the-picasa-web-data-api/</guid><description>&lt;p&gt;&lt;a href="http://picasaweb.google.com/pabluk/Webcam/photo#5196300634587782386" target="_blank"&gt;&lt;img alt="" src="http://lh3.ggpht.com/pabluk/SBz35V693PI/AAAAAAAAEFM/5eoiK7IuW-0/s144/Picture18.jpg" style="float: left; margin: 0 10px 0 0;" /&gt;&lt;/a&gt;&#10;Hace unos días estuve probando darle &lt;span style="text-decoration: line-through;"&gt;algún&lt;/span&gt; otro uso a la webcam de mi latop. Y terminé probando esto.&#10;Capturar imágenes con la webcam y enviarlas a un webserver, en este caso como no tengo un hosting ni tengo forma de llegar al puerto 80 de mi router desde internet, se me ocurrió usar la &lt;a href="http://code.google.com/apis/picasaweb/overview.html" target="_blank"&gt;API&lt;/a&gt; de Picasa Web para subir las fotos a un álbum desde un script.&#10;Para capturar las imágenes probé varios programas que están en los repos de Ubuntu, pero termine usando &lt;a href="http://www.firestorm.cx/fswebcam/" target="_blank"&gt;fswebcam&lt;/a&gt; que no está en los repos, más que nada porque soporta &lt;span style="font-family: monospace;"&gt;v4l2&lt;/span&gt;, que es el driver con el que funciona mi webcam.&#10;Con fswebcam tomo la foto, le seteo el tamaño, un titulo, etc. Y usando &lt;span style="font-family: monospace;"&gt;curl&lt;/span&gt; subo la imagen a un álbum público de Picasa Web. La &lt;a href="http://code.google.com/apis/picasaweb/overview.html" target="_blank"&gt;API&lt;/a&gt; de Picasa Web está bastante documentada así que no hubo muchos problemas para hacerlo.&#10;Acá están los scripts para capturar la imagen y para subirla a Picasa Web.&lt;/p&gt;</description></item><item><title>Se vienen las JRSL 2008</title><link>https://seminar.io/posts/se-vienen-las-jrsl-2008/</link><pubDate>Sun, 01 Jun 2008 02:17:00 +0000</pubDate><guid>https://seminar.io/posts/se-vienen-las-jrsl-2008/</guid><description>&lt;p&gt;Hace unos días que la gente de &lt;a href="http://www.cafelug.org.ar" target="_blank"&gt;CaFeLUG&lt;/a&gt; comenzó con la difusión de las Jornadas Regionales de Software Libre 2008 que se realizan el 20, 21, 22 de agosto en Buenos Aires.&#10;La lista de &lt;a href="http://jornadas.cafelug.org.ar/8/es/invitados/" target="_blank"&gt;invitados&lt;/a&gt; parece interesante y ya hay varios &lt;a href="http://jornadas.cafelug.org.ar/8/es/2008/05/27/keynote-speakers-confirmados/" target="_blank"&gt;confirmados&lt;/a&gt;, pero más allá de los invitados también esta bueno el ambiente que se genera en estos eventos, incluido &lt;a href="http://picasaweb.google.com/pabluk/JornadasDeSLEnCRodoba" target="_blank"&gt;el viaje y las salidas&lt;/a&gt; post-evento ;)&#10;Espero poder ir, aunque para esas fechas se me puede complicar, además cae entre semana Ouch!. Veremos que pasa.&#10;Más info sobre las JRSL &lt;a href="http://www.jornadasregionales.org/" target="_blank"&gt;acá&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Usando nautilus-scripts</title><link>https://seminar.io/posts/usando-nautilus-scripts/</link><pubDate>Wed, 28 May 2008 19:40:00 +0000</pubDate><guid>https://seminar.io/posts/usando-nautilus-scripts/</guid><description>&lt;p&gt;Me sucedió varias veces que necesito enviar por mail alguna foto que estoy viendo con Nautilus, y la mayoría de las veces son fotos de 2560x1920 píxeles, y es un perno tener que estar cambiandoles el tamaño, sobre todo si son muchas fotos.&#10;Así que arme este script pedorro para Nautilus, con el que selecciono los archivos desde Nautilus, me los convierte y me los copia al desktop.&lt;/p&gt;&#10;&lt;div class="code"&gt;&#10;&lt;pre&gt;#!/bin/bash&#10;&lt;p&gt;TO=&amp;quot;$HOME/Escritorio&amp;quot;&lt;/p&gt;</description></item><item><title>Cruzando el charco!</title><link>https://seminar.io/posts/cruzando-el-charco/</link><pubDate>Sat, 24 May 2008 19:37:00 +0000</pubDate><guid>https://seminar.io/posts/cruzando-el-charco/</guid><description>&lt;p&gt;Así es, hace unos días me confirmaron el vuelo a Francia! Así que buenísimo! voy a andar por allá en julio. Aunque todavía no tenemos bien definido el itinerario, hay un par de ciudades por las que andaremos seguro, Paris, Normandie, Strasbourg, Lyon y Grenoble. Y el resto del tiempo a donde pinte, ahí veremos.&lt;/p&gt;&#10;&lt;p&gt;Le compte à rebours a commencé&amp;hellip; à plus tard!&lt;/p&gt;</description></item><item><title>Un reality con geeks!</title><link>https://seminar.io/posts/un-reality-con-geeks/</link><pubDate>Tue, 20 May 2008 02:56:00 +0000</pubDate><guid>https://seminar.io/posts/un-reality-con-geeks/</guid><description>&lt;p&gt;Quizás algunos ya lo conozcan, yo gracias a joemac me entero del reality show &lt;a href="http://youtube.com/results?search_query=Beauty+and+the+Geek&amp;amp;search_type=" target="_blank"&gt;&lt;span style="font-style: italic;"&gt;Beauty and the Geek&lt;/span&gt;&lt;/a&gt;. Es estúpido como todo reality pero es muy gracioso ver a estos super freakis interactuando con minitas super huecas que en su vida escucharon la palabra &lt;span style="font-style: italic;"&gt;geek&lt;/span&gt;.&#10;Y como extra dejo otro video, de un reality de geeks noruego que por lejos es el mejor! Una minita que tiene que cambiar el procesador de una máquina! El episodio se llama &lt;a href="http://youtube.com/watch?v=aY_CidIS8YM" target="_blank"&gt;&lt;span style="font-style: italic;"&gt;The Princess and Professor, The CPU switch&lt;/span&gt;&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Freedesktop specs y mi patch para Conky</title><link>https://seminar.io/posts/freedesktop-specs-y-mi-patch-para-conky/</link><pubDate>Sat, 17 May 2008 18:59:00 +0000</pubDate><guid>https://seminar.io/posts/freedesktop-specs-y-mi-patch-para-conky/</guid><description>&lt;p&gt;Para los que no lo conocen se podría decir que &lt;a href="http://conky.sourceforge.net/" target="_blank"&gt;Conky&lt;/a&gt; es un monitor de sistema, como gkrellm, nada más que este es un fork de Torsmo. Se lo puede utilizar para monitorear casi cualquier cosa, uso de CPU, memoria, tráfico de red, sockets, disco, mpd, etc. En esta &lt;a href="http://4.bp.blogspot.com/_q0bemMki3uo/SBFpI16927I/AAAAAAAADj0/fO-KQNxc2N8/s1600-h/EmacsFirefox.jpg" target="_blank"&gt;imagen&lt;/a&gt; lo que está a la derecha es Conky.&#10;Hasta ahí todo muy bueno pero tengo el problema que si maximizo una aplicación me lo tapa o cuando el window manager mapea una ventana nueva a veces me lo tapa. Y es un perno, al menos para mí.&#10;Para solucionarlo probé cambiando el &lt;span style="font-style: italic;"&gt;placement mode&lt;/span&gt; de mi window manager a &lt;span style="font-style: italic;"&gt;Centered&lt;/span&gt;, &lt;span style="font-style: italic;"&gt;Random&lt;/span&gt;, &lt;span style="font-style: italic;"&gt;Smart&lt;/span&gt; y nada. Cambiar el tamaño del &lt;span style="font-style: italic;"&gt;output device&lt;/span&gt; en Compiz tampoco, busqué si había alguna opción para que las ventanas solo se maximizaran hasta un tamaño máximo pero ni ahí. Tampoco era una solución que aparezca siempre encima de todas las ventanas, porque tapa el contenido de la ventana que queda debajo. En internet, incluida la web de Conky, no encontré nada, parece que a nadie le molesta :P&#10;Después me dí cuenta de que el comportamiento que yo quería es como el de los panels de Gnome, así que fui a ver la fuentes de Conky y para entender un poco tuve que consultar algunas especificaciones de freedesktop.org, en especial &lt;a href="http://standards.freedesktop.org/wm-spec/wm-spec-1.4.html" target="_blank"&gt;esta&lt;/a&gt;.&#10;Para bajar las fuentes y poder compilar Conky en Ubuntu hay que poner&lt;/p&gt;</description></item><item><title>Usando Emacs con Firefox</title><link>https://seminar.io/posts/usando-emacs-con-firefox/</link><pubDate>Fri, 25 Apr 2008 04:42:00 +0000</pubDate><guid>https://seminar.io/posts/usando-emacs-con-firefox/</guid><description>&lt;p&gt;&lt;a href="http://4.bp.blogspot.com/_q0bemMki3uo/SBFpI16927I/AAAAAAAADj0/fO-KQNxc2N8/s1600-h/EmacsFirefox.jpg"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5193047445969165234" src="http://4.bp.blogspot.com/_q0bemMki3uo/SBFpI16927I/AAAAAAAADj0/fO-KQNxc2N8/s200/EmacsFirefox.jpg" style="float: left; margin: 0 10px 10px 0; cursor: pointer; cursor: hand;" /&gt;&lt;/a&gt;&#10;Antes que nada debo aclarar que después de usar casi intensivamente Vi, me&#10;decidí volver al viejo y bien ponderado Emacs. Que la verdad rulea, la última versión trae soporte para fuentes TrueType entre otras cosas.&#10;Además extrañaba lo cómoda que son las combinaciones de teclas, que hacen que&#10;uno no tenga que sacar los dedos del teclado.&#10;Entonces después de todas estas buenas razones uno no quiere escribir&#10;en nada que no sea Emacs. Y para eso existe una extensión para Firefox&#10;llamada &lt;a href="https://addons.mozilla.org/firefox/addon/4125"&gt;It&amp;rsquo;s all text!&lt;/a&gt;&#10;con la que podemos invocar nuestro editor de texto preferido para editar los&#10;textareas dentro de una página web. Por ejemplo, este post ;)&lt;/p&gt;</description></item><item><title>Vim para CakePHP</title><link>https://seminar.io/posts/vim-para-cakephp/</link><pubDate>Tue, 08 Apr 2008 23:59:00 +0000</pubDate><guid>https://seminar.io/posts/vim-para-cakephp/</guid><description>&lt;p&gt;Hace un tiempo que me decidí a usar algún framework para &lt;a href="http://www.php.net"&gt;PHP&lt;/a&gt;, cansado de tener que usar mis libs, que por supuesto estaban lejos de ser perfectas, pero que en su momento me fueron útiles. Terminé elegiendo, por ahora, &lt;a href="http://cakephp.org/"&gt;CakePHP&lt;/a&gt;. Es bastante fácil de entender, mucho mas que el framework de &lt;a href="http://framework.zend.com/"&gt;Zend&lt;/a&gt; y se ajusta a lo que necesito&amp;hellip; hacer mucho con poco esfuerzo ;)&#10;Lo único que me faltaba era decidirme por un &lt;a href="http://es.wikipedia.org/wiki/Entorno_de_desarrollo_integrado"&gt;IDE&lt;/a&gt; o un editor de código, a pesar de los grandes &lt;a href="http://es.wikipedia.org/wiki/Entorno_de_desarrollo_integrado"&gt;IDE&lt;/a&gt; como &lt;a href="http://www.eclipse.org/"&gt;Eclipse&lt;/a&gt; y otros. Me terminé decidiendo por Vim, ya sé que muchos me recordaran que siempre me incliné por Emacs (ping Pepe) pero a pesar de es el mejor editor de texto, creo que Vim gana por su sencillez.&lt;/p&gt;</description></item><item><title>Cedille Je T'aime!</title><link>https://seminar.io/posts/cedille-je-taime/</link><pubDate>Sun, 09 Dec 2007 01:30:00 +0000</pubDate><guid>https://seminar.io/posts/cedille-je-taime/</guid><description>&lt;p&gt;Hoy, cansado de tener que usar un applet de &lt;span style="font-style: italic;"&gt;Gnome&lt;/span&gt; llamado &lt;span style="font-style: italic;"&gt;Tabla de caracteres&lt;/span&gt; para poder escribir la famosa c cedilla de otros idiomas como portugués o francés, me decidí a buscar otra forma de configurarla en el teclado Latinoamericano de &lt;span style="font-style: italic;"&gt;amidala&lt;/span&gt; (mi re bautizada laptop).&lt;br /&gt;&#10;Al principio pensé que como estaba usando Gnome 2.20 iba tener una forma de mapear esta tecla sin muchos problemas pero no fue así. Lo lógico (para mí) es que si presiono &lt;span style="font-family: monospace;"&gt;&amp;lt;ALT GR&amp;gt; + c&lt;/span&gt; aparezca &lt;span style="font-style: italic;"&gt;ç&lt;/span&gt;, pero no es así, en su lugar me aparecia ¢.&lt;br /&gt;&#10;La solución fue agregar un archivo llamado &lt;span style="font-family: monospace;"&gt;.Xmodmap&lt;/span&gt; en mi home. Con el siguiente contenido&lt;/p&gt;</description></item><item><title>Wi-Fi en mi laptop</title><link>https://seminar.io/posts/wi-fi-en-mi-laptop/</link><pubDate>Thu, 17 May 2007 21:11:00 +0000</pubDate><guid>https://seminar.io/posts/wi-fi-en-mi-laptop/</guid><description>&lt;p&gt;Estos son los pasos que tuve que hacer para configurar la tarjeta de red inalambrica de mi laptop en &lt;span style="font-style: italic;"&gt;Ubuntu.&lt;/span&gt;&#10;Después de haber leído mucha info que hay dando vuelta por internet sin obtener los resultados que quería y llegando a pensar que mi tarjeta de red wi-fi ya no servia para nada, no me quedo otra que profundizar en el tema y ver que rayos era el problema.&#10;El problema principal que tuve fue el de encontrar el driver adecuado para mi chipset más alla de que en muchas guías y howtos dicen bajate este driver que es el que funciona.&#10;Probé muuuuchos drivers que encontré, pero para saber cual es que funciona hay que buscar el &lt;span style="font-family: monospace;"&gt;ID&lt;/span&gt; del dispositivo &lt;span style="font-family: monospace;"&gt;PCI&lt;/span&gt;, se puede ver con&lt;/p&gt;</description></item><item><title>Configurando Beryl en mi v2615</title><link>https://seminar.io/posts/configurando-beryl-en-mi-v2615/</link><pubDate>Wed, 16 May 2007 20:50:00 +0000</pubDate><guid>https://seminar.io/posts/configurando-beryl-en-mi-v2615/</guid><description>&lt;p&gt;Esta es la configuración mínima con la que me funciona la aceleración en mi laptop.&#10;Tengo instalado el paquete &lt;span style="font-family: courier new;"&gt;xorg-driver-fglrx&lt;/span&gt; que proporciona el driver para la aceleración de la ATI Radeon XPRESS 200M. Con&lt;/p&gt;&#10;&lt;div class="code"&gt;&#10;&lt;pre&gt;sudo apt-get install xorg-driver-fglrx&lt;/pre&gt;&#10;&lt;/div&gt;&#10;Para configurar la aceleración primero se puede ejecutar el comando&#10;&lt;div class="code"&gt;&#10;&lt;pre&gt;sudo dpkg-reconfigure xserver-xorg&lt;/pre&gt;&#10;&lt;/div&gt;&#10;Seleccionando como driver fglrx y dejando las otras opciones como estan por defecto. Luego hay que hacer algunos cambios al archivo &lt;span style="font-family: courier new;"&gt;/etc/X11/xorg.conf&lt;/span&gt;&#10;En la sección de los módulos lo dejé así&#10;&lt;div class="code"&gt;&#10;&lt;pre&gt;Section "Module"&#10; Load "i2c"&#10; Load "bitmap"&#10; Load "ddc"&#10; Load "dri"&#10; Load "extmod"&#10; Load "freetype"&#10; Load "glx"&#10; Load "int10"&#10; Load "type1"&#10; Load "vbe"&#10;EndSection&lt;/pre&gt;&#10;&lt;/div&gt;&#10;La sección Device se ve así&#10;&lt;div class="code"&gt;&#10;&lt;pre&gt;Section "Device"&#10; Identifier "aticonfig-Device[0]"&#10; Driver "fglrx"&#10; Option "VideoOverlay" "on"&#10; Option "OpenGLOverlay" "off"&#10;EndSection&lt;/pre&gt;&#10;&lt;/div&gt;&#10;Y por último agregué una sección como esta al final del archivo&#10;&lt;div class="code"&gt;&#10;&lt;pre&gt;Section "Extensions"&#10; Option "Composite" "Off"&#10;EndSection&lt;/pre&gt;&#10;&lt;/div&gt;&#10;Y ahora reiniciando gdm con&#10;&lt;div class="code"&gt;&#10;&lt;pre&gt;sudo /etc/init.d/gdm restart&lt;/pre&gt;&#10;&lt;/div&gt;&#10;Deberiamos poder iniciar nuestra sesión en modo gráfico con aceleración. Para probarlo desde una terminal en modo gráfico escribimos&#10;&lt;div class="code"&gt;&#10;&lt;pre&gt;glxinfo | grep rendering&lt;/pre&gt;&#10;&lt;/div&gt;&#10;y veremos una línea como la siguiente&#10;&lt;div class="code"&gt;&#10;&lt;pre&gt; direct rendering: Yes&lt;/pre&gt;&#10;&lt;/div&gt;&#10;Bueno con esto ya tenemos la aceleración habilitada.</description></item><item><title>Como setear el número de columnas en Emacs</title><link>https://seminar.io/posts/como-setear-el-numero-de-columnas-en-emacs/</link><pubDate>Mon, 11 Dec 2006 14:28:00 +0000</pubDate><guid>https://seminar.io/posts/como-setear-el-numero-de-columnas-en-emacs/</guid><description>&lt;p&gt;Algo que siempre olvido, al menos por ahora que estoy comenzando a usar &lt;span style="font-style: italic;"&gt;Emacs&lt;/span&gt;, es como setear la cantidad de columnas a 72. Por lo general lo uso así cuando quiero editar documentos o notas en texto plano, solo para que se vean un poco más prolijas.&lt;br /&gt;&#10;Buscando un poco en &lt;a href="http://www.google.com/"&gt;Google&lt;/a&gt; encontré la esta &lt;a href="http://homepages.inf.ed.ac.uk/s0243221/emacs/"&gt;página&lt;/a&gt; que mas o menos decía lo que estaba buscando.&lt;br /&gt;&#10;Resumiendo, las opciones son&lt;/p&gt;&#10;&lt;ul&gt;&lt;li&gt;column-number-mode para ver el número de columna.&lt;/li&gt;&lt;li&gt;set-fill-column para establecer la cantidad de columnas. En este caso es necesario pasarle como argumento el número de columnas. Lo podemos hacer con 'C-u 3 Alt-x' o 'ESC 3 Alt-x' 'Alt-3 Alt-x'.&#10;&lt;/li&gt;&lt;li&gt;auto-fill-mode para que corte automáticamente las líneas al ancho de las columnas.&lt;/li&gt;&lt;/ul&gt;Con esto me es sufiente por ahora para mejorar mi entorno &lt;span style="font-style: italic;"&gt;Emacs&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;br /&gt;</description></item><item><title>Ubuntu y mi V2615</title><link>https://seminar.io/posts/ubuntu-y-mi-v2615/</link><pubDate>Tue, 05 Dec 2006 11:52:00 +0000</pubDate><guid>https://seminar.io/posts/ubuntu-y-mi-v2615/</guid><description>&lt;p&gt;Acabo de adquirir una Compaq v2615, que es una notebook bastante modesta a comparación de las que hay en el mercado actualmente, pero para mis necesidades es suficiente, al menos por ahora. La laptop viene con un Sempron 3000, con 256MB de RAM, disco de 40Gb(4200RPM).&#10;La idea principal es probar un Arch en esta máquina, pero como por estas fechas tengo muchas cosas por hacer de la facultad necesitaba una distribución que pudiera instalar y que saliera todo andando. Buscando en mi casa, el CD de Ubuntu mas actualizado que encontré para instalar fue un 6.06.&#10;A la hora de instalarlo no fue tan fácil, por los limitados 256MB de RAM, lo primero que le pienso actualizar es la RAM a 512MB. La primera vez que intenté instalarlo desde el LiveCD no funcionó, cuando ejecutaba el instalador, despues de unos muchos minutos se terminaba colgando, aparentemente por falta de RAM.&#10;La solución fue, arrancar desde el LiveCD, y con fdisk eliminar todas las particiones que tenía, una NTFS y una FAT32, y crear una EXT3 y una SWAP. Luego reiniciar nuevamente desde el LiveCD para que utilize la partición SWAP, esto acelero bastante el proceso de instalación y no se colgó.&#10;Luego de este pequeño percance tuve mi flamante Ubuntu 6.06 andando!&lt;/p&gt;</description></item><item><title>Instalando una TDM400P sobre Etch</title><link>https://seminar.io/posts/instalando-una-tdm400p-sobre-etch/</link><pubDate>Wed, 22 Nov 2006 12:23:00 +0000</pubDate><guid>https://seminar.io/posts/instalando-una-tdm400p-sobre-etch/</guid><description>&lt;h3 id="introducción"&gt;Introducción&lt;/h3&gt;&#10;&lt;p&gt;Para que &lt;a href="http://www.asterisk.org/"&gt;Asterisk&lt;/a&gt; pueda hacer uso de la red telefónica conmutada (PSTN) es necesario contar con una interfaz, la misma la proveen los módulos de hardware FXS o FXO, que permiten la interconexión directamente a teléfonos o a las líneas telefónicas. En mi caso tengo una TDM400P que tiene integrados dos módulos FXO y dos módulos FXS. Todo esto lo haremos funcionar sobre un Debian GNU/Linux Etch con kernel 2.6.17.&lt;/p&gt;</description></item></channel></rss>