<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-1647655709615025819</id><updated>2012-01-04T13:55:36.408-08:00</updated><category term='arm'/><category term='custom session type'/><category term='adodb'/><category term='raid5'/><category term='development'/><category term='hidden files'/><category term='Windows'/><category term='upgrade'/><category term='debate'/><category term='process handling'/><category term='scientology'/><category term='carta abierta'/><category term='digital life'/><category term='server market share'/><category term='ppp'/><category term='Bogota'/><category term='git'/><category term='session type'/><category term='crazy thoughts'/><category term='dan lyons'/><category term='reliability'/><category term='anger'/><category term='jaunty'/><category term='pseudotheory'/><category term='hg'/><category term='c++'/><category term='píracy'/><category term='Proprietary'/><category term='chiste'/><category term='opera'/><category term='VCM'/><category term='rant'/><category term='while'/><category term='raid recovery'/><category term='packages'/><category term='repetitive'/><category term='java'/><category term='apt'/><category term='DVCM'/><category term='diff'/><category term='chroot'/><category term='django'/><category term='bsa'/><category term='networking'/><category term='mass market'/><category term='letter'/><category term='ssh-server'/><category term='anniversary'/><category term='Conficker'/><category term='opinion'/><category term='pollution'/><category term='linux. ubuntu'/><category term='payment'/><category term='network'/><category term='dhcp'/><category term='Steve Ballmer'/><category term='Macs'/><category term='statistics'/><category term='ubuntu'/><category term='unity'/><category term='garbage'/><category term='Microsoft'/><category term='airplane'/><category term='PYTHONPATH'/><category term='dist-upgrade'/><category term='idc'/><category term='red hat'/><category term='import'/><category term='wayland'/><category term='hacking'/><category term='benchmarks'/><category term='deal'/><category term='wireless problems'/><category term='linux for the masses'/><category term='qbzr'/><category term='. shuttleworth'/><category term='licensing'/><category term='umount'/><category term='mbr'/><category term='tuning'/><category term='nena'/><category term='new year'/><category term='virtual machine'/><category term='3CRWER101U-75'/><category term='p410i'/><category term='multiple network connections'/><category term='Health'/><category term='comments'/><category term='update'/><category term='open letter'/><category term='driver'/><category term='multiple dbs'/><category term='hack'/><category term='recovery'/><category term='sarcasm'/><category term='router'/><category term='tricks'/><category term='masquerade'/><category term='flisol'/><category term='neelie kroes'/><category term='usb'/><category term='wvdial'/><category term='non-administrator'/><category term='administrator'/><category term='3com'/><category term='novell'/><category term='thanks'/><category term='ssh'/><category term='crazy world'/><category term='ie'/><category term='kde'/><category term='raid4'/><category term='copyright'/><category term='blackberry'/><category term='wireless'/><category term='servers'/><category term='unix'/><category term='adsense'/><category term='kernel'/><category term='routing'/><category term='gcc'/><category term='pythogoras'/><category term='flisys'/><category term='ipv6'/><category term='market share'/><category term='block'/><category term='installation'/><category term='detecting space consumption'/><category term='ipv4'/><category term='european commission'/><category term='multipath'/><category term='lina salgado'/><category term='comcel'/><category term='double nat'/><category term='presentation'/><category term='OT'/><category term='bazaar'/><category term='firefox'/><category term='space handling'/><category term='js'/><category term='sales'/><category term='sun'/><category term='dpkg'/><category term='.net'/><category term='performance'/><category term='eclipse'/><category term='raid'/><category term='minibd'/><category term='humor'/><category term='broken'/><category term='socialism'/><category term='netfilter'/><category term='virtualbox'/><category term='floss'/><category term='gdm'/><category term='mysql'/><category term='logic'/><category term='bzr'/><category term='security'/><category term='gsm'/><category term='sco'/><category term='bash'/><category term='natty'/><category term='intrepid'/><category term='oracle'/><category term='windows intergration'/><category term='kde4'/><category term='disappointment'/><category term='hp controller'/><category term='isp'/><category term='wishes'/><category term='chroot cage'/><category term='Bill Gates'/><category term='custom'/><category term='software'/><category term='IE8'/><category term='session'/><category term='failsafe'/><category term='principe de asturias'/><category term='xdm'/><category term='hp'/><category term='lina marcela salgado'/><category term='raspberry'/><category term='GNU/Linux linux'/><category term='get the facts'/><category term='setup'/><category term='dhcp-lb'/><category term='tunnels'/><category term='grub'/><category term='javascript'/><category term='irony'/><category term='musical tuning'/><category term='partitions'/><category term='environment'/><category term='gnu'/><category term='export'/><category term='colombia'/><category term='browsers'/><category term='gnome'/><category term='gpl'/><category term='xming'/><category term='find'/><category term='secure boot'/><category term='ibm'/><category term='python'/><category term='sbull.c'/><category term='raidpycovery'/><category term='debian'/><category term='sbull'/><category term='pipes'/><category term='linux'/><category term='device.map'/><category term='smartarray'/><category term='named pipes'/><category term='liberalism'/><category term='opensuse'/><category term='law'/><category term='being broke'/><category term='internet explorer'/><category term='kubuntu'/><category term='php'/><category term='GNU/Linux'/><category term='ff'/><category term='programming'/><category term='politics'/><category term='dvcs'/><category term='mount'/><category term='modem'/><category term='jsp'/><category term='4.7'/><category term='programmiing'/><category term='/etc/hosts'/><category term='unt'/><category term='x server'/><category term='route'/><category term='xorg'/><category term='nat'/><category term='little room'/><category term='md'/><category term='free software'/><category term='iproute2'/><category term='quickfix'/><category term='antivirus'/><category term='RMS'/><category term='uefi'/><category term='charla'/><category term='hacks'/><category term='nena salgado'/><category term='Panama'/><category term='religion'/><category term='mount points'/><category term='kdm'/><category term='mono'/><category term='cpp'/><category term='error 21'/><category term='mercurial'/><category term='merida'/><title type='text'>Technology FLOSS</title><subtitle type='html'>Keeping technology teeth shiny and clean</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://maratux.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://maratux.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Edmundo Carmona</name><uri>http://www.blogger.com/profile/12584230508687563031</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_aeaDXhkMgRg/S_nW9OXlluI/AAAAAAAAACQ/UpHhxQ3kO88/S220/Yo_la_vasca.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>88</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1647655709615025819.post-3484576062346042464</id><published>2012-01-04T13:55:00.000-08:00</published><updated>2012-01-04T13:55:36.419-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rant'/><category scheme='http://www.blogger.com/atom/ns#' term='payment'/><category scheme='http://www.blogger.com/atom/ns#' term='hack'/><title type='text'>Dude, i'm not the usual PC technician!</title><content type='html'>So, you are in the middle of a crisis, you have tons of data stuck in a broken RAID5, shall I say it's critical data,&amp;nbsp; and you need it back.&lt;br /&gt;&lt;br /&gt;So you look around the internet and find &lt;b&gt;me&lt;/b&gt;, none other, with some articles published on the internet about some successful recoveries, a tool to do the recovery which, by the way, is completely Free (with capital F) to use.... and yet you want to ask for my help.&lt;br /&gt;&lt;br /&gt;Well.... if you think this is the kind of job the PC-guy-you-call-when-your-home-PC-gets-busted-with-viruses can do and are willing to pay accordingly then don't bother to ask for my help. This is veeeery hackish stuff which takes some time to get done, a great deal of attention to details and yet another great deal of tricks and experience to solve so be ready to pay through your nose.&lt;br /&gt;&lt;br /&gt;You still wanna call me? You have been warned.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1647655709615025819-3484576062346042464?l=maratux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maratux.blogspot.com/feeds/3484576062346042464/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://maratux.blogspot.com/2012/01/dude-im-not-usual-pc-technician.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/3484576062346042464'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/3484576062346042464'/><link rel='alternate' type='text/html' href='http://maratux.blogspot.com/2012/01/dude-im-not-usual-pc-technician.html' title='Dude, i&apos;m not the usual PC technician!'/><author><name>Edmundo Carmona</name><uri>http://www.blogger.com/profile/12584230508687563031</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_aeaDXhkMgRg/S_nW9OXlluI/AAAAAAAAACQ/UpHhxQ3kO88/S220/Yo_la_vasca.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1647655709615025819.post-8683657564108205855</id><published>2011-11-22T15:28:00.001-08:00</published><updated>2011-11-22T15:41:52.012-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='being broke'/><category scheme='http://www.blogger.com/atom/ns#' term='router'/><category scheme='http://www.blogger.com/atom/ns#' term='isp'/><category scheme='http://www.blogger.com/atom/ns#' term='wireless'/><category scheme='http://www.blogger.com/atom/ns#' term='networking'/><category scheme='http://www.blogger.com/atom/ns#' term='nat'/><category scheme='http://www.blogger.com/atom/ns#' term='gnu'/><category scheme='http://www.blogger.com/atom/ns#' term='blackberry'/><category scheme='http://www.blogger.com/atom/ns#' term='route'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='masquerade'/><category scheme='http://www.blogger.com/atom/ns#' term='GNU/Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='hack'/><title type='text'>How to connect your smartphone through your GNU/Linux box. Part I: With a spare wireless router</title><content type='html'>Hi! &lt;br /&gt;&lt;br /&gt;So, you forgot to pay your phone bill? Or you are just in the middle of a financial crisis? Whatever the reason, you lost connection of the most important item of communication in your daily life: &lt;b&gt;your smartphone&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;But you have a computer that does connect to internet. Well, I got my &lt;b&gt;BlackBerry&lt;/b&gt; to connect to internet (and regain simple communication to a very dear group of friends) by connecting through the computer.&lt;br /&gt;&lt;br /&gt;You see, as I've always said, &lt;b&gt;GNU/Linux is about fun and flexibility&lt;/b&gt;. This is no exception. I connect to my ISP through a USB dongle (GSM connection). This box has a wireless interface but, in this chapter, I will use a spare wireless router I have at home. I'll hack on to connect through the wireless interface directly on a following chapter (if the interface allows me to).&lt;br /&gt;&lt;br /&gt;So, first, I set up my wireless router and my box to use static IPs (so that my computer and the router will be able to "see" each other). To make things simple, I used this set up:&lt;br /&gt;&lt;b&gt;My Box: 192.168.2.1/24&lt;br /&gt;Router: 192.168.2.2/24&lt;br /&gt;Router's GW: 192.168.2.1 (your box)&lt;br /&gt;Router's DNS: Whatever my ISP's DNSs are (&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;cat /etc/resolv.conf&lt;/span&gt;)&lt;/b&gt;&lt;br /&gt;Now, in order for the traffic comming from the router to go through your box, you have to make sure two things are set up.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;There not be any rule/policy in netfilter's FORWARD chain keeping the traffic from going through&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;# iptables -L FORWARD -nv&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Chain FORWARD (policy &lt;b&gt;&lt;i&gt;ACCEPT&lt;/i&gt;&lt;/b&gt; 1756 packets, 917K bytes)&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;pkts bytes target&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; prot opt in&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; out&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; source&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; destination&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br /&gt;You have a &lt;b&gt;DROP&lt;/b&gt; policy? Don't want to get rid of it? Add rules to allow traffic going from the router to internet to pass through, and also the traffic that comes back. That's a whole topic in and of itself so I won't go into it. I have an &lt;b&gt;ACCEPT&lt;/b&gt; policy on &lt;b&gt;FORWARD&lt;/b&gt;, so I have no problem with that.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;The kernel be enabled to forward ipv4 traffic&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;# sysctl net.ipv4.ip_forward&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;net.ipv4.ip_forward = 1&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br /&gt;It says 0? You have to enable it:&lt;br /&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;# sysctl -w net.ipv4.ip_forward=1&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;That should be it.... or almost. The thing is that the kernel is now letting traffic comimg from the router to get to internet &lt;b&gt;but&lt;/b&gt; it's not doing any network address translation on that traffic so it's coimg out not with your network interface's IP address but with the &lt;b&gt;wireless router's&lt;/b&gt; (which is probably doing nat on the traffic from its clientes) and that won't hold water so next step is to &lt;b&gt;masquerade&lt;/b&gt; all traffic that is going out to internet. Something like this should be enough:&lt;br /&gt;&lt;br /&gt;&lt;b style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;# iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;I'm using &lt;b&gt;ppp0&lt;/b&gt; for my example (as I said, USB dongle) but it has to be the interface you use to connect to internet. Now, your smartphone (if it's already using the wireless network from the router) should be able to get to internet.&lt;br /&gt;&lt;br /&gt;I hope it does the trick for you.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1647655709615025819-8683657564108205855?l=maratux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maratux.blogspot.com/feeds/8683657564108205855/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://maratux.blogspot.com/2011/11/how-to-connect-your-smartphone-through.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/8683657564108205855'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/8683657564108205855'/><link rel='alternate' type='text/html' href='http://maratux.blogspot.com/2011/11/how-to-connect-your-smartphone-through.html' title='How to connect your smartphone through your GNU/Linux box. Part I: With a spare wireless router'/><author><name>Edmundo Carmona</name><uri>http://www.blogger.com/profile/12584230508687563031</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_aeaDXhkMgRg/S_nW9OXlluI/AAAAAAAAACQ/UpHhxQ3kO88/S220/Yo_la_vasca.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1647655709615025819.post-165381765441158083</id><published>2011-11-08T08:29:00.000-08:00</published><updated>2011-11-08T08:29:24.187-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='raidpycovery'/><category scheme='http://www.blogger.com/atom/ns#' term='raid'/><category scheme='http://www.blogger.com/atom/ns#' term='raid5'/><category scheme='http://www.blogger.com/atom/ns#' term='raid4'/><category scheme='http://www.blogger.com/atom/ns#' term='raid recovery'/><title type='text'>raidpycovery supports raid4 and repetitions</title><content type='html'>Hi!&lt;br /&gt;&lt;br /&gt;Just wanted to announce that I just tagged/pushed version 2.01 of &lt;b&gt;raidpycovery&lt;/b&gt; which now supports &lt;b&gt;raid4&lt;/b&gt; and also &lt;b&gt;repetitions&lt;/b&gt; (like the one an HP SmartArray P410i displayed).&lt;br /&gt;&lt;br /&gt;Repetitions works this way.On a normal RAID5 (left async) you would see something like this:&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;A0 B0 C0 D0 &lt;b&gt;X0&lt;/b&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;A1 B1 C1 &lt;b&gt;X1&lt;/b&gt; D0&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;A2 B2 &lt;b&gt;X2&lt;/b&gt; C2 D2&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;A3 &lt;b&gt;X3&lt;/b&gt; B3 C3 D3&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;b&gt;X4&lt;/b&gt; A4 B4 C4 D4&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;A5 B5 C5 D5 &lt;b&gt;X5&lt;/b&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;.&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;.&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;.&lt;/div&gt;&lt;br /&gt;On a raid with 2 "repetitions" you would see:&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;A0 B0 C0 D0 &lt;b&gt;X0&lt;/b&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;A1 B1 C1 D1 &lt;b&gt;X1&lt;/b&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;A2 B2 C2 &lt;b&gt;X2&lt;/b&gt; D2&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;A3 B3 C3 &lt;b&gt;X3&lt;/b&gt; D3&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;A4 B4 &lt;b&gt;X4&lt;/b&gt; C4 D4&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;A5 B5 &lt;b&gt;X5&lt;/b&gt; C5 D5&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;.&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;.&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;.&lt;/div&gt;&lt;br /&gt;You get the idea, right? On &lt;a href="http://maratux.blogspot.com/2011/11/edmundo-750-gbs-hp-0-gbs.html" target="_blank"&gt;the raid5 I &lt;i&gt;broke&lt;/i&gt; last weekend&lt;/a&gt; the controller did 16 repetitions.&lt;br /&gt;&lt;br /&gt;Repository for the project is &lt;a href="https://code.launchpad.net/%7Eeantoranz/+junk/raidpycovery" target="_blank"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1647655709615025819-165381765441158083?l=maratux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maratux.blogspot.com/feeds/165381765441158083/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://maratux.blogspot.com/2011/11/raidpycovery-supports-raid4-and.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/165381765441158083'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/165381765441158083'/><link rel='alternate' type='text/html' href='http://maratux.blogspot.com/2011/11/raidpycovery-supports-raid4-and.html' title='raidpycovery supports raid4 and repetitions'/><author><name>Edmundo Carmona</name><uri>http://www.blogger.com/profile/12584230508687563031</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_aeaDXhkMgRg/S_nW9OXlluI/AAAAAAAAACQ/UpHhxQ3kO88/S220/Yo_la_vasca.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1647655709615025819.post-439065541833520756</id><published>2011-11-06T16:31:00.000-08:00</published><updated>2011-11-06T16:32:00.302-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='raidpycovery'/><category scheme='http://www.blogger.com/atom/ns#' term='raid'/><category scheme='http://www.blogger.com/atom/ns#' term='hp controller'/><category scheme='http://www.blogger.com/atom/ns#' term='hp'/><category scheme='http://www.blogger.com/atom/ns#' term='raid5'/><category scheme='http://www.blogger.com/atom/ns#' term='raid recovery'/><category scheme='http://www.blogger.com/atom/ns#' term='smartarray'/><category scheme='http://www.blogger.com/atom/ns#' term='p410i'/><title type='text'>Edmundo 750 GBs - HP 0 Gbs</title><content type='html'>Hi!&lt;br /&gt;&lt;br /&gt;Just today I finished one almost perfect data recovery from another RAID5 that its controller spitted onto (another HP controller, &lt;a href="http://www.freesoftwaremagazine.com/articles/recovery_raid"&gt;yet again&lt;/a&gt;).This time around, it was a 6-disk RAID5 (some 130 GBs each).&lt;br /&gt;&lt;br /&gt;I knew beforehand that my python library (which I had translated from java about one year ago) was too slow and this task was going to take days if I hadn't done something about it. So, first I took the task of translating it to C++, which &lt;a href="http://maratux.blogspot.com/2011/11/remember-times-with-i-used-python-for.html" target="_blank"&gt;I finished some days ago&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;When faced with the disks, the HP controller reported that 1 of them was physically dead, one of them had been hotswapped and another was to fail soon (public administration, don't ask about the details... gruesome). Fact of the matter is that the controller didn't want to make it visible so the server would not start. HP support asked me to dip the array in holy whater and forget about it. But that was not to happen, was it?&lt;br /&gt;&lt;br /&gt;The disks were mounted on a separate computer one by one (well, not one by one but on a separate computer), and images were made from each one of them (only one of the drives didn't allow itself to be copied). Tips: &lt;b&gt;LiveUSB&lt;/b&gt;, &lt;b&gt;ddrescue&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;After getting my hands on the images, I started analyzing how it was built to figure out the order of the drives, the chunk size and the algorithm used. Normally for this job the first MBs from each image help to do it.... after taking a long cold look at the images, I had figured out the chunk size (64ks) by looking at some numbered markers present on the ext2 partition that was at the begining of the disks... however, as this was a linux server with no FAT of NTFS stuff on it, there was no data (specially text) to be able to figure out the order... and specially, not crammed at the begining of the disk (does NTFS still work like this? You gotta be kiding me).&lt;br /&gt;&lt;br /&gt;After thinking about it (and working on it) for a while I ended up finding whole stripes that would be made out of text (except, most probably) for a single chunk for every stripe. Finding these stripes and their sequence took its time, but eventually I was able to break it. The only thing that bothered me was that for many stripes (one after the other) the checksum chunk was always on the same disk (which I didn't expect) and the sequence remained the same on those stripes. At first I thought that perhaps it had been built as a RAID4 instead of a RAID5, but after checking many stripes the whole thing made itself clear: It's a RAID5 in which row configurations repeat themselves a number of times (in this case, 16 times). All in all, left async 64Ks with 16 repetitions. This took me to make an adjustment to my C++ utility just for this task and on a single shot I was able to rebuild the RAID5 from its pieces. Rebuilding took some 14 hours (probably not because of the utility but because of the bottleneck of having all 5 images on a single drive).&lt;br /&gt;&lt;br /&gt;After rebuilding, I was able to do fdisk -lu on the disk image, do the losetup trick, and mount the server's / partition and get data out of it. There were some IO errors (not that many, fortunately.... given that the controller had already reported more than one disk as broken, maybe some pieces of the images were broken or the controller had stopped using one of the drives as a whole some time before crashing). Some other people will take of getting the stuff working but my task is definitely over.&lt;br /&gt;&lt;br /&gt;So, next time you have a RAID5 crash , always remember it can take some time/thought breaking it... but in the end, it can pay off.&lt;br /&gt;&lt;br /&gt;I'm starting to feel like the &lt;b&gt;Messi&lt;/b&gt; of data recovery. Anybody needs a data recovery hacker around there? I'm willing to travel anywhere!&lt;br /&gt;&lt;br /&gt;&lt;b&gt;PS&lt;/b&gt; And before you ask, it's 750 GBs (or close) for this array plus the one I had recovered in 2005.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1647655709615025819-439065541833520756?l=maratux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maratux.blogspot.com/feeds/439065541833520756/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://maratux.blogspot.com/2011/11/edmundo-750-gbs-hp-0-gbs.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/439065541833520756'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/439065541833520756'/><link rel='alternate' type='text/html' href='http://maratux.blogspot.com/2011/11/edmundo-750-gbs-hp-0-gbs.html' title='Edmundo 750 GBs - HP 0 Gbs'/><author><name>Edmundo Carmona</name><uri>http://www.blogger.com/profile/12584230508687563031</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_aeaDXhkMgRg/S_nW9OXlluI/AAAAAAAAACQ/UpHhxQ3kO88/S220/Yo_la_vasca.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1647655709615025819.post-4931260106781450541</id><published>2011-11-03T23:43:00.000-07:00</published><updated>2011-11-04T09:50:00.718-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='c++'/><category scheme='http://www.blogger.com/atom/ns#' term='raidpycovery'/><category scheme='http://www.blogger.com/atom/ns#' term='raid'/><category scheme='http://www.blogger.com/atom/ns#' term='gcc'/><category scheme='http://www.blogger.com/atom/ns#' term='lina marcela salgado'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='nena salgado'/><category scheme='http://www.blogger.com/atom/ns#' term='nena'/><category scheme='http://www.blogger.com/atom/ns#' term='raid5'/><category scheme='http://www.blogger.com/atom/ns#' term='cpp'/><category scheme='http://www.blogger.com/atom/ns#' term='raid recovery'/><title type='text'>Remember the times when I used python for RAID5 Recovery? Not anymore</title><content type='html'>Hi!&lt;br /&gt;&lt;br /&gt;Remember the times when I translated the raid5 recovery utility from java to python? Well, let me tell you something. It was horrendously SLOW. For example, I used to help a guy who had a problem with his array and the operation to rebuild the array took literally days (and the data wasn't recovered in the end, so...). While doing my tests, a (virtual) 300 MBs RAID5 with a missing disk took about 450 secs to be rebuilt on python (on my netbook, anyway).&lt;br /&gt;&lt;br /&gt;Right now I'm facing the recovery from a RAID that has 6 disks 150 GBs each. That is going to take _a lot_ of time to recover. So, just in case we do have to go on with the operation, I decided I was goint to translate it to C++, which I started doing a little more than 24 hours ago (not fully employed on the task so don't complains about me being slow in the process).&lt;br /&gt;&lt;br /&gt;So, I'm happy to announce that the translation has worked and after making some tests I can attest that it absolutely kicks ass (at least time-wise :-)). Remember the 300 MBs RAID5 I talked about a couple of paragraphs ago? It's rebuilt in roughly 8 seconds. 8!!!!&lt;br /&gt;&lt;br /&gt;The way you call it is the same (same arguments) only that, instead of calling &lt;b&gt;Raid5Recovery.py&lt;/b&gt;, you will just write &lt;b&gt;Raid5Recovery&lt;/b&gt; (with the accompanying &lt;b&gt;./&lt;/b&gt;, you know the drill).&lt;br /&gt;&lt;br /&gt;I don't intend to change its name at the time so it will remain &lt;b&gt;Raidpycovery&lt;/b&gt;.  &lt;br /&gt;&lt;br /&gt;As usual, I have made some tests on it but they were not exhaustive so feel free to use it at your own risk.&lt;br /&gt;&lt;br /&gt;The project is hosted on launchpad (no release) here:&lt;br /&gt;&lt;br /&gt;https://code.launchpad.net/~eantoranz/+junk/raidpycovery&lt;br /&gt;&lt;br /&gt;Last but by no means least, I dedicate this project to the memory of my wife, &lt;b&gt;Lina Marcela "Nena" Salgado&lt;/b&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1647655709615025819-4931260106781450541?l=maratux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maratux.blogspot.com/feeds/4931260106781450541/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://maratux.blogspot.com/2011/11/remember-times-with-i-used-python-for.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/4931260106781450541'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/4931260106781450541'/><link rel='alternate' type='text/html' href='http://maratux.blogspot.com/2011/11/remember-times-with-i-used-python-for.html' title='Remember the times when I used python for RAID5 Recovery? Not anymore'/><author><name>Edmundo Carmona</name><uri>http://www.blogger.com/profile/12584230508687563031</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_aeaDXhkMgRg/S_nW9OXlluI/AAAAAAAAACQ/UpHhxQ3kO88/S220/Yo_la_vasca.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1647655709615025819.post-5776772741299758467</id><published>2011-09-24T10:19:00.000-07:00</published><updated>2011-10-27T07:35:31.299-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='uefi'/><category scheme='http://www.blogger.com/atom/ns#' term='letter'/><category scheme='http://www.blogger.com/atom/ns#' term='open letter'/><category scheme='http://www.blogger.com/atom/ns#' term='secure boot'/><category scheme='http://www.blogger.com/atom/ns#' term='neelie kroes'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><category scheme='http://www.blogger.com/atom/ns#' term='european commission'/><title type='text'>Open Letter to Neelie Kroes</title><content type='html'>Hi, Ms. Kroes.&lt;br /&gt;&lt;br /&gt;First, I'd like to say that I'm not an european citizen. I'm&lt;br /&gt;venezuelan and I'm living in Colombia at the time. If that's all it&lt;br /&gt;takes to get this email dropped from your inbox, so be it. If you (or&lt;br /&gt;someone from your staff) is still reeading it, I thank you.&lt;br /&gt;&lt;br /&gt;During the last few days it has hit the IT mainstream media that&lt;br /&gt;Microsoft, as part of their "Windows 8 Logo" program, will request&lt;br /&gt;computer manufacturers to support UEFI's "secure boot". Manufacturers&lt;br /&gt;that don't support it, won't get the privilege of putting a "WIndows&lt;br /&gt;8" logo stamp on their computers. It has also been published that&lt;br /&gt;manufacturers are willing to implement this _without_ giving the users&lt;br /&gt;the possibility to disable this option.&lt;br /&gt;&lt;br /&gt;In order for "secure boot" to be used, it requires using certification&lt;br /&gt;keys to allow any operating system to boot the computer and that&lt;br /&gt;provides Microsoft with a double advantage:&lt;br /&gt;- Users wouldn't be able to use an older version of Windows&lt;br /&gt;- Users won't be able to use a "non certified" operating system, like&lt;br /&gt;say, GNU/Linux.&lt;br /&gt;&lt;br /&gt;Given their strong position on computer manufacturers, whatever&lt;br /&gt;Microsoft comes up with, manufacturers will follow. Unfortunately,&lt;br /&gt;that power, as we can see here, is being used to hinder Microsoft's&lt;br /&gt;competition and force the user to use Microsoft's latest OS instead of&lt;br /&gt;any other OS they so choose to use (even older versions of Microsoft&lt;br /&gt;Windows).&lt;br /&gt;&lt;br /&gt;Thank you very much.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Update:&lt;/b&gt; The mail has been forwarded to Mr Almunia, on the &lt;i&gt;Competition&lt;/i&gt; front.&amp;nbsp; Email Address: &lt;b&gt;&lt;i&gt;CAB-ALMUNIA-COURRIER at ec.europa.eu&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Update II:&lt;/b&gt; I got a response this morning (oct. 27th) from staff:&lt;br /&gt;&lt;b&gt;&lt;i&gt; &lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;div align="JUSTIFY"&gt;&lt;span style="font-family: Arial; font-size: x-small;"&gt;Dear Mr. Carmona,&lt;/span&gt;&lt;/div&gt;&lt;div align="JUSTIFY"&gt;&lt;span style="font-family: Arial; font-size: x-small;"&gt;Thank you very much for your messages of 24 and 26 September 2011 expressing concerns regarding the new Microsoft's Windows 8 security requirements. According to these requirements, the computer manufacturers ("OEMs") conforming to the Windows 8 logo program are obliged to use Unified Extensible Firmware Interface ("UEFI") secure boot. This might allegedly lead to anti-competitive effects in the market. &lt;/span&gt;&lt;/div&gt;&lt;div align="JUSTIFY"&gt;&lt;span style="font-family: Arial; font-size: x-small;"&gt;As you are probably aware,&amp;nbsp;Windows 8 is&amp;nbsp;currently under development and&amp;nbsp;therefore not final. We will, however,&amp;nbsp;monitor&amp;nbsp;the further&amp;nbsp;developments in order to&amp;nbsp;ensure&amp;nbsp;the full respect of European competition rules. Whether or not there is a violation of EU&amp;nbsp;competition&amp;nbsp;law, however, depends on a range of factual, legal and economic considerations.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family: Arial; font-size: x-small;"&gt;For more information about the competition-related activities of the European Commission we invite you to consult our website: &lt;/span&gt;&lt;a href="http://europa.eu.int/comm/competition/index_en.html" target="_blank"&gt;&lt;u&gt;&lt;span style="color: blue; font-family: Arial; font-size: x-small;"&gt;http://europa.eu.int/comm/&lt;wbr&gt;&lt;/wbr&gt;competition/index_en.html&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;span style="font-family: Arial; font-size: x-small;"&gt; .&lt;/span&gt;&lt;br /&gt;&lt;div align="JUSTIFY"&gt;&lt;span style="font-family: Arial; font-size: x-small;"&gt;Feedback from interested citizens, such as yours, is a very valuable source of information for us which we take seriously, and for which we would like to thank you.&lt;/span&gt;&lt;/div&gt;&lt;div align="JUSTIFY"&gt;&lt;span style="font-family: Arial; font-size: x-small;"&gt;Yours sincerely,&lt;/span&gt;&lt;/div&gt;&lt;div align="JUSTIFY"&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="color: black; font-family: Arial; font-size: x-small;"&gt;Per Hellström&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue; font-family: Arial; font-size: x-small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black; font-family: Arial; font-size: x-small;"&gt;Head of Unit&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue; font-family: Arial; font-size: x-small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black; font-family: Arial; font-size: x-small;"&gt;European Commission&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue; font-family: Arial; font-size: x-small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black; font-family: Arial; font-size: x-small;"&gt;DG Competition&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue; font-family: Arial; font-size: x-small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black; font-family: Arial; font-size: x-small;"&gt;Markets and cases II: Information, Communication and Media&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue; font-family: Arial; font-size: x-small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black; font-family: Arial; font-size: x-small;"&gt;Antitrust: IT, Internet and Consumer electronics&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;b&gt;&lt;i&gt; &lt;/i&gt;&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1647655709615025819-5776772741299758467?l=maratux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maratux.blogspot.com/feeds/5776772741299758467/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://maratux.blogspot.com/2011/09/open-letter-to-neelie-kroes.html#comment-form' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/5776772741299758467'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/5776772741299758467'/><link rel='alternate' type='text/html' href='http://maratux.blogspot.com/2011/09/open-letter-to-neelie-kroes.html' title='Open Letter to Neelie Kroes'/><author><name>Edmundo Carmona</name><uri>http://www.blogger.com/profile/12584230508687563031</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_aeaDXhkMgRg/S_nW9OXlluI/AAAAAAAAACQ/UpHhxQ3kO88/S220/Yo_la_vasca.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1647655709615025819.post-5208743131472542088</id><published>2011-08-28T20:46:00.000-07:00</published><updated>2011-08-28T20:46:57.748-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='arm'/><category scheme='http://www.blogger.com/atom/ns#' term='raspberry'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='GNU/Linux'/><title type='text'>Will ARM get to sweep X86 (and take WIndows to hell along with it)?</title><content type='html'>Hi!&lt;br /&gt;&lt;br /&gt;I've been very interested in &lt;b&gt;ARM&lt;/b&gt; developments since a couple of years ago when it looked like ARM netbooks were just about to be released and kick x86 out of the market (at least on netbooks). A lot of things &lt;b&gt;didn't&lt;/b&gt; happen since then, don't you agree? A lot of speculation about how Microsoft got to influence potential manufacturers has been thrown around... but anyway, fact of the matter is that they were never released.&lt;br /&gt;&lt;br /&gt;During the last month a couple of things have happened that are making me think that ARM is going to become a major headache for the (already kind of broken) &lt;i&gt;Wintel&lt;/i&gt; monopoly (duopoly? whatever!).&lt;br /&gt;&lt;br /&gt;First, I helped solve a printing problem involving three cheap printers. First we tried to solve the problem connecting all 3 printers to a single computer (some PC) and almost got to get the whole thing working... the only problem was that only one of the printers would print reliably and the other 2 would refuse to make it all of the times. Workaround? Bought 3 dreamplug servers, connected a single printer to each one of the servers, ran a couple of commands&lt;b&gt;*&lt;/b&gt; and, voilà!, problem solved.&lt;br /&gt;&lt;br /&gt;Here's a picture of the whole set up (will upload a higher resolution pic when I get it):&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-6eQTW403Hms/TlsB4atzgrI/AAAAAAAAAFA/fTusFVbe1h8/s1600/11+-+5.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://2.bp.blogspot.com/-6eQTW403Hms/TlsB4atzgrI/AAAAAAAAAFA/fTusFVbe1h8/s320/11+-+5.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;On the left of the desk you can see all 3 printers and each printer's dreamplug &lt;i&gt;master&lt;/i&gt; right on top of each one, see?&lt;br /&gt;&lt;br /&gt;Now.... this was a rather simple fix, each server is kind of cheap (specially compared with a fully fledged computer) and, on top of that, these beauties will keep the electricity bill low (as they all put together eat a lot less than a computer). To me, this spells trouble ahead for Intel (and Windows, though they are at the top on servers will see a ferocious battle with GNU/Linux on the not-so-short term) as it means that people will have yet another simple comoditized option different from a PC to solve problems.&lt;br /&gt;&lt;br /&gt;And if that was not enough, then I see this today:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;object width="320" height="266" class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://2.gvt0.com/vi/e_mDuJuvZjI/0.jpg"&gt;&lt;param name="movie" value="http://www.youtube.com/v/e_mDuJuvZjI&amp;fs=1&amp;source=uds" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;embed width="320" height="266"  src="http://www.youtube.com/v/e_mDuJuvZjI&amp;fs=1&amp;source=uds" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;br /&gt;Full article where I got it from &lt;a href="http://www.raspberrypi.org/?p=106"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Now, this is not a PC. This is an ARM-based platform that is expected to start selling by the end of the year... and at US$ 25 &lt;b&gt;a pop&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;About 2 years ago I thought ARM was about to kick butt (back then)... boy, was I wrong.... but given these two events I told you about, I don't think it's too crazy to believe that this is going to make a major dent on Intel and Microsoft (given that Microsoft is years from releasing/stabilizing their ARM port of Windows... and I'm not talking about WP7 or Windows CE, of course) in the not-so-distant future. Only time will tell.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;PS&lt;/b&gt; Oh, and did I say that apparently Canonical is throwing a lot of its weight on ARM too? Interesting times ahead of us.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;*&lt;/b&gt; As a matter of fact, getting the printer to work took a little work. The splix drivers (they are cheap samsung printers) were not available for the model of the printers we were using (on updated debian) but we knew ubuntu did have it available so, after a little trying and trying we ended up compiling the ubuntu splix driver's source on the dreamplugs to get them running (the source of the drivers I got from a normal netbook running kubuntu natty and placed them on the dreamplug for compilation).&amp;nbsp; A little scripting here and there and they were finally printing the way we wanted them to.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1647655709615025819-5208743131472542088?l=maratux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maratux.blogspot.com/feeds/5208743131472542088/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://maratux.blogspot.com/2011/08/will-arm-get-to-sweep-x86-and-take.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/5208743131472542088'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/5208743131472542088'/><link rel='alternate' type='text/html' href='http://maratux.blogspot.com/2011/08/will-arm-get-to-sweep-x86-and-take.html' title='Will ARM get to sweep X86 (and take WIndows to hell along with it)?'/><author><name>Edmundo Carmona</name><uri>http://www.blogger.com/profile/12584230508687563031</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_aeaDXhkMgRg/S_nW9OXlluI/AAAAAAAAACQ/UpHhxQ3kO88/S220/Yo_la_vasca.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-6eQTW403Hms/TlsB4atzgrI/AAAAAAAAAFA/fTusFVbe1h8/s72-c/11+-+5.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1647655709615025819.post-5890776019006329951</id><published>2011-08-26T13:23:00.000-07:00</published><updated>2011-08-26T13:27:56.400-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='sales'/><category scheme='http://www.blogger.com/atom/ns#' term='GNU/Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='idc'/><category scheme='http://www.blogger.com/atom/ns#' term='servers'/><title type='text'>Sales of GNU/Linux servers explode on Q2 2011 with an increase of 47%</title><content type='html'>Hi!&lt;br /&gt;&lt;br /&gt;According to numbers released by IDC, income from server sales for Q2 2011 saw an increase of 47.5% compared to the same quarter 2010 to reach US$ 2.7 billon. This represented 20.5% of all income for the quarter. In comparison, income for Windows servers increased a healthy 12.4% to reach US$ 5.9 billion with represents 45.5% of all income for the quarter. These numbers in a very healthy quarter for all server segments.&lt;br /&gt;&lt;br /&gt;If you get the calculater out of your pockets you will notice that GNU/Linux income increased by some US$ 870 million while Windows servers' incresed by some US$ 650 million.&lt;br /&gt;&lt;br /&gt;In case you want to see the whole report, check &lt;a href="http://www.idc.com/getdoc.jsp?containerId=prUS22998411"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1647655709615025819-5890776019006329951?l=maratux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maratux.blogspot.com/feeds/5890776019006329951/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://maratux.blogspot.com/2011/08/sales-of-gnulinux-servers-explode-on-q2.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/5890776019006329951'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/5890776019006329951'/><link rel='alternate' type='text/html' href='http://maratux.blogspot.com/2011/08/sales-of-gnulinux-servers-explode-on-q2.html' title='Sales of GNU/Linux servers explode on Q2 2011 with an increase of 47%'/><author><name>Edmundo Carmona</name><uri>http://www.blogger.com/profile/12584230508687563031</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_aeaDXhkMgRg/S_nW9OXlluI/AAAAAAAAACQ/UpHhxQ3kO88/S220/Yo_la_vasca.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1647655709615025819.post-5398042476802413761</id><published>2011-08-23T21:19:00.000-07:00</published><updated>2011-08-23T21:23:56.875-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='custom'/><category scheme='http://www.blogger.com/atom/ns#' term='session type'/><category scheme='http://www.blogger.com/atom/ns#' term='xdm'/><category scheme='http://www.blogger.com/atom/ns#' term='gdm'/><category scheme='http://www.blogger.com/atom/ns#' term='custom session type'/><category scheme='http://www.blogger.com/atom/ns#' term='kdm'/><category scheme='http://www.blogger.com/atom/ns#' term='failsafe'/><category scheme='http://www.blogger.com/atom/ns#' term='session'/><title type='text'>How to add a custom session type to kdm</title><content type='html'>Hi!&lt;br /&gt;&lt;br /&gt;I was trying to start my "failsafe" session from kdm. Back in the old days, what I would get with that would be a plain session with a terminal on top and nothing else. Unfortunately, when I tried it I would always get back to kdm. Not what I expected.&lt;br /&gt;&lt;br /&gt;I figured out that there must be a simple way to create my own custom session... say, where I would only call rxvt for example... and there certainly is a simple way to do it. All you have to do is create a simple file like this under &lt;b&gt;/usr/share/xsessions&lt;/b&gt;. Mine is called &lt;b&gt;rxvt.desktop&lt;/b&gt; with this content:&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;b&gt;[Desktop Entry]&lt;br /&gt;Encoding=UTF-8&lt;br /&gt;Type=XSession&lt;br /&gt;Exec=/usr/bin/rxvt&lt;br /&gt;TryExec=/usr/bin/rxvt&lt;br /&gt;Name=Just RXVT Session&lt;br /&gt;Name[es]=Solo RXVT&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;After the file is set up, just restart kdm and your new session type will be on the menu.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-3-vdfa0U0Ew/TlR8x6Ud5yI/AAAAAAAAAE8/hF9Kq4MNpCo/s1600/rxvt.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="187" src="http://1.bp.blogspot.com/-3-vdfa0U0Ew/TlR8x6Ud5yI/AAAAAAAAAE8/hF9Kq4MNpCo/s320/rxvt.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Given that the location looks pretty neutral and not tied to a desktop environment, I would expect the same trick to work for gdm and xdm as well.&lt;br /&gt;&lt;br /&gt;Also, I would recommend people to take a close look at &lt;b&gt;/etc/kde4/kdm/kdmrc&lt;/b&gt; as there's a lot of interesting stuff in that file.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1647655709615025819-5398042476802413761?l=maratux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maratux.blogspot.com/feeds/5398042476802413761/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://maratux.blogspot.com/2011/08/how-to-add-custom-session-type-to-kdm.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/5398042476802413761'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/5398042476802413761'/><link rel='alternate' type='text/html' href='http://maratux.blogspot.com/2011/08/how-to-add-custom-session-type-to-kdm.html' title='How to add a custom session type to kdm'/><author><name>Edmundo Carmona</name><uri>http://www.blogger.com/profile/12584230508687563031</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_aeaDXhkMgRg/S_nW9OXlluI/AAAAAAAAACQ/UpHhxQ3kO88/S220/Yo_la_vasca.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-3-vdfa0U0Ew/TlR8x6Ud5yI/AAAAAAAAAE8/hF9Kq4MNpCo/s72-c/rxvt.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1647655709615025819.post-8988732499137827363</id><published>2011-08-23T10:11:00.000-07:00</published><updated>2011-08-23T10:16:22.951-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='colombia'/><category scheme='http://www.blogger.com/atom/ns#' term='law'/><category scheme='http://www.blogger.com/atom/ns#' term='copyright'/><title type='text'>Help us defend colombian's digital rights from entertainment lobbies</title><content type='html'>Hi!&lt;br /&gt;&lt;br /&gt;Colombia has become one of the places where the entertainment industry is trying to overtake things as basic as the right to access internet from people in order to protect their money (as if the law is going to keep big-buck copyright infringers from doing it). You can help us try to stop them from pulling the strings to get some crazy laws (&lt;b&gt;two-strikes???&lt;/b&gt; Not even three? That's because baseball is not a popular sport here, otherwise...) passed here in Colombia by signing &lt;a href="https://www.accessnow.org/page/s/derechos-antes-que-permisos"&gt;this petition online&lt;/a&gt; (petition in english is &lt;a href="https://www.accessnow.org/page/s/rights-not-copyrights"&gt;here&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;Thanks in advance for your help and support.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1647655709615025819-8988732499137827363?l=maratux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maratux.blogspot.com/feeds/8988732499137827363/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://maratux.blogspot.com/2011/08/help-us-defend-colombians-digital.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/8988732499137827363'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/8988732499137827363'/><link rel='alternate' type='text/html' href='http://maratux.blogspot.com/2011/08/help-us-defend-colombians-digital.html' title='Help us defend colombian&apos;s digital rights from entertainment lobbies'/><author><name>Edmundo Carmona</name><uri>http://www.blogger.com/profile/12584230508687563031</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_aeaDXhkMgRg/S_nW9OXlluI/AAAAAAAAACQ/UpHhxQ3kO88/S220/Yo_la_vasca.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1647655709615025819.post-1417931036297290628</id><published>2011-08-03T11:04:00.000-07:00</published><updated>2011-08-03T11:04:24.115-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lina marcela salgado'/><category scheme='http://www.blogger.com/atom/ns#' term='nena salgado'/><category scheme='http://www.blogger.com/atom/ns#' term='nena'/><category scheme='http://www.blogger.com/atom/ns#' term='lina salgado'/><title type='text'>My wife has died</title><content type='html'>I'm sorry to announce that &lt;b&gt;Lina Marcela &lt;i&gt;"La Nena"&lt;/i&gt; Salgado&lt;/b&gt;, my wife, died on July 8th. She fought cancer corageously but ultimately the disease defeated her.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-6qxcFSxwi7c/Tjb5B4zpbII/AAAAAAAAAEQ/GPplqzf7kvI/s1600/007.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://4.bp.blogspot.com/-6qxcFSxwi7c/Tjb5B4zpbII/AAAAAAAAAEQ/GPplqzf7kvI/s320/007.JPG" width="240" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Nena: siempre tendrás un lugar muy especial en mi corazón y siempre te recordaré. Te amo!&lt;/b&gt;&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1647655709615025819-1417931036297290628?l=maratux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maratux.blogspot.com/feeds/1417931036297290628/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://maratux.blogspot.com/2011/08/my-wife-has-died.html#comment-form' title='3 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/1417931036297290628'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/1417931036297290628'/><link rel='alternate' type='text/html' href='http://maratux.blogspot.com/2011/08/my-wife-has-died.html' title='My wife has died'/><author><name>Edmundo Carmona</name><uri>http://www.blogger.com/profile/12584230508687563031</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_aeaDXhkMgRg/S_nW9OXlluI/AAAAAAAAACQ/UpHhxQ3kO88/S220/Yo_la_vasca.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-6qxcFSxwi7c/Tjb5B4zpbII/AAAAAAAAAEQ/GPplqzf7kvI/s72-c/007.JPG' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1647655709615025819.post-645356032828762514</id><published>2011-08-01T12:11:00.000-07:00</published><updated>2011-08-03T11:03:15.530-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rant'/><category scheme='http://www.blogger.com/atom/ns#' term='4.7'/><category scheme='http://www.blogger.com/atom/ns#' term='natty'/><category scheme='http://www.blogger.com/atom/ns#' term='kde'/><category scheme='http://www.blogger.com/atom/ns#' term='kubuntu'/><title type='text'>Kubuntu 11.04: After updating to kde 4.7, things are back to normal</title><content type='html'>Hi!&lt;br /&gt;&lt;br /&gt;You might remember &lt;a href="http://maratux.blogspot.com/2011/05/will-kubuntu-natty-stabilize-ever.html"&gt;I wrote quite a rant&lt;/a&gt; a few months back about the sorry state of kubuntu 11.04 when it was released. There were so many complains I had.&lt;br /&gt;&lt;br /&gt;Well, after I &lt;a href="http://www.kubuntu.org/news/kde-4.7"&gt;updated to kde 4.7&lt;/a&gt; yesterday things have mostly fallen into place. No more kded4 going crazy when I mess around with my usb dongle, my desktop starts with 3d effects enabled and everything looks fine and dandy. If I notice other things, I'll let you know.&lt;br /&gt;&lt;br /&gt;There's something I haven't tested yet but it's not related to kde or kubuntu per se. The driver of my wireless card crashes my netbook (apparently, it's a driver bug... I haven't used the wireless card in a couple of months so I don't know if it's solved... launchpad bug report is &lt;a href="https://bugs.launchpad.net/ubuntu/+source/bcmwl/+bug/790054"&gt;here&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Update: &lt;/b&gt;&lt;/i&gt;Thanks to Sam for advicing me to remove the comment about my wife. I created another blog entry for her.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1647655709615025819-645356032828762514?l=maratux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maratux.blogspot.com/feeds/645356032828762514/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://maratux.blogspot.com/2011/08/kubuntu-1104-after-updating-to-kde-47.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/645356032828762514'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/645356032828762514'/><link rel='alternate' type='text/html' href='http://maratux.blogspot.com/2011/08/kubuntu-1104-after-updating-to-kde-47.html' title='Kubuntu 11.04: After updating to kde 4.7, things are back to normal'/><author><name>Edmundo Carmona</name><uri>http://www.blogger.com/profile/12584230508687563031</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_aeaDXhkMgRg/S_nW9OXlluI/AAAAAAAAACQ/UpHhxQ3kO88/S220/Yo_la_vasca.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1647655709615025819.post-6971084599431050172</id><published>2011-05-22T09:17:00.000-07:00</published><updated>2011-05-22T09:17:42.938-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ppp'/><category scheme='http://www.blogger.com/atom/ns#' term='network'/><category scheme='http://www.blogger.com/atom/ns#' term='wvdial'/><category scheme='http://www.blogger.com/atom/ns#' term='hack'/><category scheme='http://www.blogger.com/atom/ns#' term='networking'/><title type='text'>How to perform automatic actions after a connection is established with wvdial/ppp</title><content type='html'>Hi!&lt;br /&gt;&lt;br /&gt;I'm on kubuntu Natty and I'm pretty glad with the distro overall. However, there are a couple&amp;nbsp; of bugs that bug me more often than I'd like them to. One of them is that, for whatever reason, when I establish an internet connection with wvdial/ppp, squid doesn't go through it. I have to restart he service once the connection is set up so that traffic starts pouring from squid. What I realized was that it is possible to do this action automatically.&lt;br /&gt;&lt;br /&gt;There is one directory where you can put scripts to be run when a new connection is established and when a connection is dropped. I wanted to do something when the connection was established, so had to upt the script in /etc/ppp/ip-up.d:&lt;br /&gt;&lt;br /&gt;&lt;b style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;$ cat /etc/ppp/ip-up.d/9999squid&lt;/b&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;#!/bin/bash&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;/etc/init.d/squid3 restart&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br /&gt;Pretty straightforward, right? Make sure the script has the executable flag set up and you are done.&lt;br /&gt;&lt;br /&gt;Additionally, the script get the following information as parameters (in the order they are received):&lt;br /&gt;&lt;b&gt;Network Interface&lt;/b&gt;&lt;br /&gt;&lt;b&gt;TTY&lt;/b&gt;&lt;br /&gt;&lt;b&gt;Speed&lt;/b&gt;&lt;br /&gt;&lt;b&gt;Local IP address&lt;/b&gt;&lt;br /&gt;&lt;b&gt;Peer IP address&lt;/b&gt;&lt;br /&gt;&lt;b&gt;Additiona Parameter&lt;/b&gt; (as received by pppd).&lt;br /&gt;&lt;br /&gt;There are some environment variables that I think are available for the script, but I haven't tested them: &lt;b&gt;PPP_IFACE&lt;/b&gt;, &lt;b&gt;PPP_TTY&lt;/b&gt;, &lt;b&gt;PPP_SPEED&lt;/b&gt;, &lt;b&gt;PPP_LOCAL&lt;/b&gt;, &lt;b&gt;PPP_REMOTE&lt;/b&gt; y &lt;b&gt;PPP_IPPARAM&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Note&lt;/b&gt;: Given that the hack is implemented on ppp, this should probably work with network connections set up on NetworkManager that use ppp (like broadband).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1647655709615025819-6971084599431050172?l=maratux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maratux.blogspot.com/feeds/6971084599431050172/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://maratux.blogspot.com/2011/05/how-to-perform-automatic-actions-after.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/6971084599431050172'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/6971084599431050172'/><link rel='alternate' type='text/html' href='http://maratux.blogspot.com/2011/05/how-to-perform-automatic-actions-after.html' title='How to perform automatic actions after a connection is established with wvdial/ppp'/><author><name>Edmundo Carmona</name><uri>http://www.blogger.com/profile/12584230508687563031</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_aeaDXhkMgRg/S_nW9OXlluI/AAAAAAAAACQ/UpHhxQ3kO88/S220/Yo_la_vasca.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1647655709615025819.post-8096827391661287924</id><published>2011-05-09T10:45:00.000-07:00</published><updated>2011-05-09T10:51:04.093-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='administrator'/><category scheme='http://www.blogger.com/atom/ns#' term='django'/><category scheme='http://www.blogger.com/atom/ns#' term='installation'/><category scheme='http://www.blogger.com/atom/ns#' term='non-administrator'/><category scheme='http://www.blogger.com/atom/ns#' term='export'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='setup'/><category scheme='http://www.blogger.com/atom/ns#' term='environment'/><category scheme='http://www.blogger.com/atom/ns#' term='PYTHONPATH'/><title type='text'>How to install django (or run it without installing it at all) without administrative permissions</title><content type='html'>Hi!&lt;br /&gt;&lt;br /&gt;I'm giving my first baby steps at learning &lt;b&gt;Django&lt;/b&gt;. Right up front I saw the installation procedure and it talked about requiring an administrator to do the installation or copy the django directory inside the Djando tar ball to site-packages.... I personally don't like doing these kind of things so I sat down for a while to see how it could be done without requiring running setup.py at all. It's like this.&lt;br /&gt;&lt;br /&gt;In my environment, I unpackaged the Django tarball that created this directory:&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;b&gt;$ ls -l /home/antoranz/Downloads/Django/Django-1.3&lt;/b&gt;&lt;br /&gt;total 72&lt;br /&gt;-rw-r--r--&amp;nbsp; 1 antoranz antoranz 19166 2011-03-21 20:38 AUTHORS&lt;br /&gt;drwxr-xr-x 17 antoranz antoranz&amp;nbsp; 4096 2011-05-09 09:16 django&lt;br /&gt;drwxr-xr-x 14 antoranz antoranz&amp;nbsp; 4096 2011-03-23 00:08 docs&lt;br /&gt;drwxr-xr-x&amp;nbsp; 2 antoranz antoranz&amp;nbsp; 4096 2011-03-23 00:08 extras&lt;br /&gt;-rw-r--r--&amp;nbsp; 1 antoranz antoranz&amp;nbsp;&amp;nbsp; 592 2009-10-30 03:24 INSTALL&lt;br /&gt;-rw-r--r--&amp;nbsp; 1 antoranz antoranz&amp;nbsp; 1558 2008-08-09 09:40 LICENSE&lt;br /&gt;-rw-r--r--&amp;nbsp; 1 antoranz antoranz&amp;nbsp; 1494 2011-03-16 14:02 MANIFEST.in&lt;br /&gt;-rw-r--r--&amp;nbsp; 1 antoranz antoranz&amp;nbsp; 1228 2011-03-23 00:08 PKG-INFO&lt;br /&gt;-rw-r--r--&amp;nbsp; 1 antoranz antoranz&amp;nbsp; 1786 2011-01-28 17:07 README&lt;br /&gt;drwxr-xr-x&amp;nbsp; 2 antoranz antoranz&amp;nbsp; 4096 2011-03-23 00:08 scripts&lt;br /&gt;-rw-r--r--&amp;nbsp; 1 antoranz antoranz&amp;nbsp;&amp;nbsp; 108 2010-08-05 08:00 setup.cfg&lt;br /&gt;-rw-r--r--&amp;nbsp; 1 antoranz antoranz&amp;nbsp; 4325 2011-03-23 00:06 setup.py&lt;br /&gt;drwxr-xr-x&amp;nbsp; 5 antoranz antoranz&amp;nbsp; 4096 2011-03-23 00:08 tests&lt;/div&gt;&lt;br /&gt;This is the place you should run setup.py from to do django's installation, right?.... you can just skip it completely.&lt;br /&gt;&lt;br /&gt;Now, without doing anything but just extracting the tarball, you won't be able to do much with it. From a small project I'm working on (following the tutorial):&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;b&gt;$ python manage.py runserver&lt;/b&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Traceback (most recent call last):&lt;br /&gt;&amp;nbsp; File "manage.py", line 2, in &lt;module&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; from django.core.management import execute_manager&lt;br /&gt;ImportError: No module named django.core.management&lt;/module&gt;&lt;/div&gt;&lt;br /&gt;Too bad. But if you just export the PYTHONPATH to include the django directory you are done:&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;b&gt;$ export PYTHONPATH=/home/antoranz/Downloads/Django/Django-1.3/&lt;br /&gt;$ python manage.py runserver&lt;/b&gt;&lt;br /&gt;Validating models...&lt;br /&gt;&lt;br /&gt;0 errors found&lt;br /&gt;Django version 1.3, using settings 'django1.settings'&lt;br /&gt;Development server is running at http://127.0.0.1:8000/&lt;br /&gt;Quit the server with CONTROL-C.&lt;/div&gt;&lt;br /&gt;And that's it. If you need to call django's binaries (django-admin.py and so on), use the full path to reach them or add the required path to PATH environment variable so that it's available.&lt;br /&gt;&lt;br /&gt;I staill haven't tried to run django from apache without doing the instalation..... but will be publishing it (if possible) once I reach that part of the tutorial.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1647655709615025819-8096827391661287924?l=maratux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maratux.blogspot.com/feeds/8096827391661287924/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://maratux.blogspot.com/2011/05/how-to-install-django-or-run-it-without.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/8096827391661287924'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/8096827391661287924'/><link rel='alternate' type='text/html' href='http://maratux.blogspot.com/2011/05/how-to-install-django-or-run-it-without.html' title='How to install django (or run it without installing it at all) without administrative permissions'/><author><name>Edmundo Carmona</name><uri>http://www.blogger.com/profile/12584230508687563031</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_aeaDXhkMgRg/S_nW9OXlluI/AAAAAAAAACQ/UpHhxQ3kO88/S220/Yo_la_vasca.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1647655709615025819.post-3908220875486500205</id><published>2011-05-04T13:19:00.000-07:00</published><updated>2011-05-04T13:19:42.568-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rant'/><category scheme='http://www.blogger.com/atom/ns#' term='natty'/><category scheme='http://www.blogger.com/atom/ns#' term='kde'/><category scheme='http://www.blogger.com/atom/ns#' term='kubuntu'/><title type='text'>Will kubuntu natty stabilize? Ever?</title><content type='html'>Hi!&lt;br /&gt;&lt;br /&gt;First off, let me tell you something before I start my rant on kubuntu: I've been a kubuntu user for 6 years now... and I don't intend to switch to gnome (ubuntu) or xfce (xubuntu) or any other of the other variants anytime soon. I like KDE and I'm willing to put up with the nag that I have to go through in order to continue using it&lt;br /&gt;&lt;br /&gt;Back when I installed natty 'bout a couple of weeks ago I had a few complaints but we were in beta, right?... but it's been a few days since release time and things feel worse and worse. At first I didn't use gl-based screensavers because they made the graphics go completely crazy (it's a samsung netbook with intel chipset) so I used a simple screensaver instead (though I had desktops effects turned on and they tend to work pretty well)... then updates started to come in. gl screensavers started to be stable some days ago and I could start/stop it at will... only sometimes it crashed KWin.... but yesterday there was another update and things have gone to hell. Every single time I start the screensaver it crashes KWin... now gkrellm doesn't remember it's on desktop 6 when KDE starts.... When KDE starts it always turns off my desktop effects (which I think didn't happen when I updated to natty), hell... this is just too much for my taste. Are we experimenting here? I haven't tested if &lt;a href="https://bugs.kde.org/show_bug.cgi?id=217364#c17"&gt;kded4 goes crazy when I come back from sleeping/hibernating yet&lt;/a&gt;... but something tells me it's not going to be pretty.&lt;br /&gt;&lt;br /&gt;Guys, could you please stabilize this whole thing and not make us kde users feel like third class citizens in the ubuntu world and keep us in second class at least?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1647655709615025819-3908220875486500205?l=maratux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maratux.blogspot.com/feeds/3908220875486500205/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://maratux.blogspot.com/2011/05/will-kubuntu-natty-stabilize-ever.html#comment-form' title='15 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/3908220875486500205'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/3908220875486500205'/><link rel='alternate' type='text/html' href='http://maratux.blogspot.com/2011/05/will-kubuntu-natty-stabilize-ever.html' title='Will kubuntu natty stabilize? Ever?'/><author><name>Edmundo Carmona</name><uri>http://www.blogger.com/profile/12584230508687563031</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_aeaDXhkMgRg/S_nW9OXlluI/AAAAAAAAACQ/UpHhxQ3kO88/S220/Yo_la_vasca.jpg'/></author><thr:total>15</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1647655709615025819.post-3004618553363878848</id><published>2011-04-19T22:16:00.000-07:00</published><updated>2011-04-19T22:18:53.489-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='minibd'/><category scheme='http://www.blogger.com/atom/ns#' term='sbull.c'/><category scheme='http://www.blogger.com/atom/ns#' term='block'/><category scheme='http://www.blogger.com/atom/ns#' term='GNU/Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='sbull'/><category scheme='http://www.blogger.com/atom/ns#' term='driver'/><title type='text'>Updated minibd driver for linux (sbull.c)</title><content type='html'>Hi!&lt;br /&gt;&lt;br /&gt;I'm embarking myself in a journey to write a block driver for linux (raid5 recovery stuff, anyone? Doesn't ring a bell? Look around this blog).&lt;br /&gt;&lt;br /&gt;My firsts steps have involved trying to figure out how linux's block layer api works... so I looked for the simplest example I could find.... and it was in the sbull.c of the minibd drive. It's a dull ram-based block driver where the basics for the API are set in place for people to see how a driver is created.&lt;br /&gt;&lt;br /&gt;I started working with it but it was written for older versions of the kernel and the block layer API has received an overhaul that made the sbull.c driver as I got it unusable so I sat down to modify the driver to make it work while trying to figure out how things work... I hopefully did both... but even if I didn't get to understand how the API works, I did make the driver work. How well am I getting the API? Guess will have to wait for my real driver to come out to know for sure.&lt;br /&gt;&lt;br /&gt;Here it goes. First, the Makefile so you don't have to reinvent the wheel:&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;b&gt;&lt;span style="font-size: x-small;"&gt;obj-m := sbull.o&lt;br /&gt;&lt;br /&gt;PWD := $(shell pwd)&lt;br /&gt;KDIR := /lib/modules/$(shell uname -r)/build&lt;br /&gt;&lt;br /&gt;all:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; make -C $(KDIR) M=$(PWD) modules&lt;br /&gt;clean:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; make -C $(KDIR) M=$(PWD) clean&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;That's it... and now the driver (sbull.c):&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: xx-small;"&gt;/*&lt;br /&gt;* Mini-block driver.&lt;br /&gt;*&lt;br /&gt;* this code is based on one example from LWN.NET: http://lwn.net/Articles/31513/&lt;br /&gt;*&lt;br /&gt;* Copyright 2003 Eklektix, Inc.&amp;nbsp; Redistributable under the terms&lt;br /&gt;* of the GNU GPL.&lt;br /&gt;* &lt;br /&gt;* Update to new block layer api by Edmundo Carmona &lt;eantoranz at="" com="" dot="" gmail=""&gt;&lt;br /&gt;* works on linux 2.6.38.3 tested on UML.&lt;br /&gt;*/&lt;br /&gt;#include &lt;linux module.h=""&gt;&lt;br /&gt;#include &lt;linux moduleparam.h=""&gt;&lt;br /&gt;#include &lt;linux init.h=""&gt;&lt;br /&gt;#include &lt;linux kernel.h=""&gt;&lt;br /&gt;#include &lt;linux fs.h=""&gt;&lt;br /&gt;#include &lt;linux errno.h=""&gt;&lt;br /&gt;#include &lt;linux types.h=""&gt;&lt;br /&gt;#include &lt;linux vmalloc.h=""&gt;&lt;br /&gt;#include &lt;linux slab.h=""&gt;&lt;br /&gt;#include &lt;linux genhd.h=""&gt;&lt;br /&gt;#include &lt;linux blkdev.h=""&gt;&lt;br /&gt;#include &lt;linux hdreg.h=""&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;MODULE_LICENSE("Dual BSD/GPL");&lt;br /&gt;&lt;br /&gt;/*&lt;br /&gt;* some values that could have been configurable... but aren't (at least, &lt;br /&gt;* not in the revision of the driver).&lt;br /&gt;*/&lt;br /&gt;#define KERNEL_SECTOR_SIZE 512&lt;br /&gt;#define MAJOR_NUM 240 /* a free major number, according to devices.txt */&lt;br /&gt;#define MINIBD_MINORS 16 /* number of possible partitions */&lt;br /&gt;#define N_SECTORS 1024 /* number of sectors in our block device */&lt;br /&gt;#define MINIBLOCK_SECTOR_SIZE 512 /* sector size */&lt;br /&gt;&lt;br /&gt;/*&lt;br /&gt;* request queue of our mini-block device.&lt;br /&gt;*/&lt;br /&gt;static struct request_queue *miniblock_queue;&lt;br /&gt;&lt;br /&gt;/*&lt;br /&gt;* Internal representation of our device.&lt;br /&gt;*/&lt;br /&gt;static struct miniblock_device {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; unsigned long size;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; spinlock_t lock;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; u8 *data;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; struct gendisk *gd;&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;static struct miniblock_device *Miniblock = NULL;&lt;br /&gt;&lt;br /&gt;/*&lt;br /&gt;* Real handling in our device of IO Requests.&lt;br /&gt;*/&lt;br /&gt;static void miniblock_transfer(struct miniblock_device *dev, struct request * req)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; unsigned long offset = blk_rq_pos(req) * MINIBLOCK_SECTOR_SIZE;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; unsigned long nbytes = blk_rq_cur_bytes(req);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ((offset + nbytes) &amp;gt; dev-&amp;gt;size) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; printk (KERN_NOTICE "minibd: working past the end of the block device (%ld %ld)\n", offset, nbytes);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (rq_data_dir(req) == WRITE) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; memcpy(dev-&amp;gt;data + offset, req-&amp;gt;buffer, nbytes);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; memcpy(req-&amp;gt;buffer, dev-&amp;gt;data + offset, nbytes);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/*&lt;br /&gt;* driver handler of requests.&lt;br /&gt;*/&lt;br /&gt;static void miniblock_request(struct request_queue *q)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; struct request *req;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; req = blk_fetch_request(q);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; while (req != NULL) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (req-&amp;gt;cmd_type != REQ_TYPE_FS) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; printk (KERN_NOTICE "Skip non-CMD request\n");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; blk_end_request_all(req, -EIO);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; continue;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; miniblock_transfer(Miniblock, req);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // if there are no more requests, _do not call_ blk_fetch_request&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!blk_end_request_cur(req, 0)) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; req = blk_fetch_request(q);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/*&lt;br /&gt;* custom Ioctls for our device.&lt;br /&gt;*/&lt;br /&gt;int miniblock_ioctl (struct inode *inode, struct file *filp,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; unsigned int cmd, unsigned long arg)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; long size;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; struct hd_geometry geo;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; switch(cmd) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case HDIO_GETGEO:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; size = Miniblock-&amp;gt;size*(MINIBLOCK_SECTOR_SIZE/KERNEL_SECTOR_SIZE);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; geo.cylinders = (size &amp;amp; ~0x3f) &amp;gt;&amp;gt; 6;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; geo.heads = 4;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; geo.sectors = 16;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; geo.start = 4;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (copy_to_user((void *) arg, &amp;amp;geo, sizeof(geo)))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return -EFAULT;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return -ENOTTY;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/*&lt;br /&gt;* operations associated for our device.&lt;br /&gt;*/&lt;br /&gt;static struct block_device_operations miniblock_ops = {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .owner&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = THIS_MODULE,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .ioctl&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = miniblock_ioctl&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;/*&lt;br /&gt;* Module init.&lt;br /&gt;*/&lt;br /&gt;static int __init miniblock_init(void)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; static int ret;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ret = register_blkdev(MAJOR_NUM, "minibd");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (ret &amp;lt; 0) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; printk(KERN_WARNING "minibd: error assigning major number\n");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return -EBUSY;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; printk(KERN_DEBUG "minibd: Successfully registeres driver\n");&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Miniblock = kmalloc(sizeof(struct miniblock_device), GFP_KERNEL);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (Miniblock == NULL) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; printk(KERN_WARNING "minidb: error assigning memory with kmalloc\n");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; goto out_unregister;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * Initializing our device.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; memset(Miniblock, 0, sizeof(struct miniblock_device));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Miniblock-&amp;gt;size = N_SECTORS*MINIBLOCK_SECTOR_SIZE;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Miniblock-&amp;gt;data = vmalloc(Miniblock-&amp;gt;size);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (Miniblock-&amp;gt;data == NULL) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; printk(KERN_WARNING "minidb: error assigning memory with vmalloc\n");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; kfree(Miniblock);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; goto out_unregister;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; spin_lock_init(&amp;amp;Miniblock-&amp;gt;lock);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * Create our request queue (one block per device).&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; miniblock_queue = blk_init_queue(miniblock_request, &amp;amp;Miniblock-&amp;gt;lock);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (miniblock_queue == NULL) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; printk(KERN_WARNING "minibd: error on blk_init_queue\n");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; goto out_free;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; blk_queue_logical_block_size(miniblock_queue, MINIBLOCK_SECTOR_SIZE);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * Fill out our gendisk structure&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Miniblock-&amp;gt;gd = alloc_disk(MINIBD_MINORS);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!Miniblock-&amp;gt;gd) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; printk(KERN_WARNING "minibd: error on alloc_disk\n");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; goto out_free;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Miniblock-&amp;gt;gd-&amp;gt;major = MAJOR_NUM;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Miniblock-&amp;gt;gd-&amp;gt;first_minor = 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Miniblock-&amp;gt;gd-&amp;gt;fops = &amp;amp;miniblock_ops;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Miniblock-&amp;gt;gd-&amp;gt;private_data = Miniblock;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; snprintf(Miniblock-&amp;gt;gd-&amp;gt;disk_name, 10, "%s", "minibd0");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; set_capacity(Miniblock-&amp;gt;gd, N_SECTORS*(MINIBLOCK_SECTOR_SIZE/KERNEL_SECTOR_SIZE));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Miniblock-&amp;gt;gd-&amp;gt;queue = miniblock_queue;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; add_disk(Miniblock-&amp;gt;gd);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return 0;&lt;br /&gt;&lt;br /&gt;out_free:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; vfree(Miniblock-&amp;gt;data);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; kfree(Miniblock);&lt;br /&gt;out_unregister:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; unregister_blkdev(MAJOR_NUM, "minibd");&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return -ENOMEM;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/*&lt;br /&gt;* module removal&lt;br /&gt;*/&lt;br /&gt;static void __exit miniblock_exit(void)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; del_gendisk(Miniblock-&amp;gt;gd);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; put_disk(Miniblock-&amp;gt;gd);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; unregister_blkdev(MAJOR_NUM, "minibd");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; blk_cleanup_queue(miniblock_queue);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; vfree(Miniblock-&amp;gt;data);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; kfree(Miniblock);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; printk(KERN_DEBUG "minibd: driver removed successfully\n");&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;module_init(miniblock_init);&lt;br /&gt;module_exit(miniblock_exit);&lt;/linux&gt;&lt;/linux&gt;&lt;/linux&gt;&lt;/linux&gt;&lt;/linux&gt;&lt;/linux&gt;&lt;/linux&gt;&lt;/linux&gt;&lt;/linux&gt;&lt;/linux&gt;&lt;/linux&gt;&lt;/linux&gt;&lt;/eantoranz&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1647655709615025819-3004618553363878848?l=maratux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maratux.blogspot.com/feeds/3004618553363878848/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://maratux.blogspot.com/2011/04/updated-minibd-driver-for-linux-sbullc.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/3004618553363878848'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/3004618553363878848'/><link rel='alternate' type='text/html' href='http://maratux.blogspot.com/2011/04/updated-minibd-driver-for-linux-sbullc.html' title='Updated minibd driver for linux (sbull.c)'/><author><name>Edmundo Carmona</name><uri>http://www.blogger.com/profile/12584230508687563031</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_aeaDXhkMgRg/S_nW9OXlluI/AAAAAAAAACQ/UpHhxQ3kO88/S220/Yo_la_vasca.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1647655709615025819.post-4960623457247676876</id><published>2011-04-18T22:25:00.000-07:00</published><updated>2011-04-18T22:27:57.145-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='update'/><category scheme='http://www.blogger.com/atom/ns#' term='natty'/><category scheme='http://www.blogger.com/atom/ns#' term='kubuntu'/><category scheme='http://www.blogger.com/atom/ns#' term='GNU/Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>My journey updating to natty</title><content type='html'>Updating to a new version of ubuntu always has its glitches.... I hate doing clean installs (this is not Windows after all, right? So we should be able to do updates while working on the box) so I always do dist-upgrades in order to move to a new release of ubuntu (and don't try to change my mind... I'm stubborn and won't do it).&lt;br /&gt;&lt;br /&gt;In my case, I wanted to update because I was having a small glitch with my intel graphics related to refreshing of the screen on my Samsung N150P plus netbook. Sometimes I had to switch to a different virtual desktop and come back in order to force the refresh of the whole screen to see things right... and I was tired of it.&lt;br /&gt;&lt;br /&gt;I'm using kubuntu, anyway... so here's the journey so far.&lt;br /&gt;&lt;br /&gt;First, going to &lt;b style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;/etc/apt/&lt;/b&gt; and edit &lt;b style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;sources.lis&lt;/b&gt;t in order to change all "maverick"s in the file for "natty" (as a matter of fact, this is not what I do but the results are exactly that).&lt;br /&gt;&lt;br /&gt;Then, performing the actual upgrade (you are on your own if you choose to do it this way, so no whining is accepted if something breaks):&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;b&gt;sudo apt-get update&lt;/b&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;b&gt;sudo apt-get dist-upgrade -y --force-yes -f&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;Give it time to download the stuff it has to download (about 800+ MBs for me), then answer a few question for a few packages, then the upgrade is finished (by the way... I normally had to run the dist-upgade a couple of times in order to get all packages installed... there was always a glitch... but not this time... it was flawless).&lt;br /&gt;&lt;br /&gt;And here is where things get tricky. I reboot my computer and it fails to boot with the natty kernel with a kernel panic. Damn... it's never going to give itself away easily, is it? Aparently it doesn't understand where the root partition is. So I start booting with the maverick kernel that's still installed. Fortunately it does boot and I'm able to start kde normally..... except that graphics are a MESS (in order to keep the article PG-13). I had to disable desktop effects in order to have something usable. Ugh! And I thought natty would get rid of the refresh problem.&lt;br /&gt;&lt;br /&gt;So I file &lt;a href="https://bugs.launchpad.net/bugs/765478"&gt;a bug&lt;/a&gt; to complain about it (come on, guys! Natty is almost out there and the graphics on my netbook are awful!)... and when I'm about to finish the submission process, it hits me like a truck: &lt;b&gt;old kernel&lt;/b&gt;. :-S I better start the new kernel to see if the graphics are better there. I file the bug anywhere with a comment at the end. &lt;br /&gt;&lt;br /&gt;And then a new chapter of education begings. After a few attempts of trying to solve the problem by hand, I end up running update-grub to see what happens... and then I see that there's an error when trying to generate a new grub.cfg file:&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;b&gt;$ sudo update-grub&lt;/b&gt;&lt;br /&gt;Generating grub.cfg ...&lt;br /&gt;Found linux image: /boot/vmlinuz-2.6.38-8-generic&lt;br /&gt;Found initrd image: /boot/initrd.img-2.6.38-8-generic&lt;br /&gt;Found linux image: /boot/vmlinuz-2.6.35-28-generic&lt;br /&gt;Found initrd image: /boot/initrd.img-2.6.35-28-generic&lt;br /&gt;Found memtest86+ image: /boot/memtest86+.bin&lt;br /&gt;error: syntax error.&lt;br /&gt;error: Incorrect command.&lt;br /&gt;error: syntax error.&lt;br /&gt;error: line no: 143&lt;br /&gt;Syntax errors are detected in generated GRUB config file.&lt;br /&gt;Ensure that there are no errors in /etc/default/grub&lt;br /&gt;and /etc/grub.d/* files or please file a bug report with&lt;br /&gt;/boot/grub/grub.cfg.new file attached.&lt;br /&gt;done&lt;/div&gt;&lt;br /&gt;What do we have in the new broken grub.cfg file (grub.cfg.new) around line 143?&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;submenu "Xen 3.3" {&lt;br /&gt;}&lt;/div&gt;&lt;br /&gt;Well, well.... who knows why this is... but this xen stuff is going out. So I &lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;chmod -x /etc/grub.d/20_linux_xen&lt;/span&gt;&lt;/b&gt; and try again:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;$ sudo update-grub&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Generating grub.cfg ...&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Found linux image: /boot/vmlinuz-2.6.38-8-generic&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Found initrd image: /boot/initrd.img-2.6.38-8-generic&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Found linux image: /boot/vmlinuz-2.6.35-28-generic&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Found initrd image: /boot/initrd.img-2.6.35-28-generic&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Found memtest86+ image: /boot/memtest86+.bin&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;done&lt;/span&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;br /&gt;&lt;/div&gt;Much better now.... Now I'm able to reboot with the natty kernel and we are fine. And let me tell you that graphics are much better now... I have noticed a couple of things so far (I have to restart squid3 after I reboot in order to make it work, when the screensaver starts, sometimes it kills the whole kde session) but I'll look around to see if updates arrive that solve this problems or if there are easy fixes for them (besides not using them, of course).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1647655709615025819-4960623457247676876?l=maratux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maratux.blogspot.com/feeds/4960623457247676876/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://maratux.blogspot.com/2011/04/my-journey-updating-to-natty.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/4960623457247676876'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/4960623457247676876'/><link rel='alternate' type='text/html' href='http://maratux.blogspot.com/2011/04/my-journey-updating-to-natty.html' title='My journey updating to natty'/><author><name>Edmundo Carmona</name><uri>http://www.blogger.com/profile/12584230508687563031</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_aeaDXhkMgRg/S_nW9OXlluI/AAAAAAAAACQ/UpHhxQ3kO88/S220/Yo_la_vasca.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1647655709615025819.post-5380773340484407546</id><published>2011-04-14T20:09:00.000-07:00</published><updated>2011-04-14T20:20:41.832-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gsm'/><category scheme='http://www.blogger.com/atom/ns#' term='linux. ubuntu'/><category scheme='http://www.blogger.com/atom/ns#' term='modem'/><category scheme='http://www.blogger.com/atom/ns#' term='wvdial'/><category scheme='http://www.blogger.com/atom/ns#' term='usb'/><category scheme='http://www.blogger.com/atom/ns#' term='comcel'/><title type='text'>Internet connection through (GSM) USB Modem with wvdial</title><content type='html'>Hi!&lt;br /&gt;&lt;br /&gt;Just tonight I'm having problems to start my internet connection with the NetworkManager on kubuntu maverick. The connection has been working like a charm these days so I'd think it's some kind of hiccups.&lt;br /&gt;&lt;br /&gt;I had taken the time to install wvdial on my box hoping I wasn't going to need it... normally console based applications are much more verbose on the kind of problems they are facing to do things so they are a very good fallback method when you have problems and so given the current situation, I'll give wvdial a shot.&lt;br /&gt;&lt;br /&gt;So, here's the recipe for it. First, set up a simple text file with the configuration you will be using.. it depends on the carrier you are using. I have COMCEL (in colombia) and so this is the content of the file:&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;b&gt;[Dialer Defaults]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Modem = /dev/ttyUSB0&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Phone = *99#&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Username = COMCELWEB&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Password = COMCELWEB&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;Phone, username and password depend on your carrier but it's fairly simple, right? Say the file is called comcel.txt, then call wvdial supplying this file name as the config file:&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;b&gt;$ wvdial -C comcel.txt&lt;/b&gt;&lt;/div&gt;A while later, you will be connected.... this is the output for me:&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;b&gt;--&amp;gt; WvDial: Internet dialer version 1.60&lt;br /&gt;--&amp;gt; Cannot get information for serial port.&lt;br /&gt;--&amp;gt; Initializing modem.&lt;br /&gt;--&amp;gt; Sending: ATZ&lt;br /&gt;OK&lt;br /&gt;--&amp;gt; Modem initialized.&lt;br /&gt;--&amp;gt; Sending: ATDT*99#&lt;br /&gt;--&amp;gt; Waiting for carrier.&lt;br /&gt;ATDT*99#&lt;br /&gt;CONNECT&lt;br /&gt;--&amp;gt; Carrier detected.&amp;nbsp; Waiting for prompt.&lt;br /&gt;--&amp;gt; Don't know what to do!&amp;nbsp; Starting pppd and hoping for the best.&lt;br /&gt;--&amp;gt; Starting pppd at Thu Apr 14 21:46:29 2011&lt;br /&gt;--&amp;gt; Pid of pppd: 2594&lt;br /&gt;--&amp;gt; Using interface ppp0&lt;br /&gt;--&amp;gt; local&amp;nbsp; IP address x.x.x.x&lt;br /&gt;--&amp;gt; remote IP address y.y.y.y&lt;br /&gt;--&amp;gt; primary&amp;nbsp;&amp;nbsp; DNS address z.z.z.z&lt;br /&gt;--&amp;gt; secondary DNS address w.w.w.w&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;And that's how I made this post. Perhaps I could set up a little DB with the configuration in different carriers. Do you use wvdial to set up internet connection through a usb modem (through GSM)? Want to give it up? I'll update this post.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1647655709615025819-5380773340484407546?l=maratux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maratux.blogspot.com/feeds/5380773340484407546/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://maratux.blogspot.com/2011/04/internet-connection-through-gsm-usb.html#comment-form' title='3 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/5380773340484407546'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/5380773340484407546'/><link rel='alternate' type='text/html' href='http://maratux.blogspot.com/2011/04/internet-connection-through-gsm-usb.html' title='Internet connection through (GSM) USB Modem with wvdial'/><author><name>Edmundo Carmona</name><uri>http://www.blogger.com/profile/12584230508687563031</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_aeaDXhkMgRg/S_nW9OXlluI/AAAAAAAAACQ/UpHhxQ3kO88/S220/Yo_la_vasca.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1647655709615025819.post-8367899004818649941</id><published>2011-03-26T07:00:00.000-07:00</published><updated>2011-03-26T07:00:09.772-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='píracy'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><category scheme='http://www.blogger.com/atom/ns#' term='free software'/><title type='text'>Is Microsoft trying to equate selling computers without Windows to software piracy as a new world policy?</title><content type='html'>Hi!&lt;br /&gt;&lt;br /&gt;Very recently (as recently as 23rd of March) &lt;a href="http://www.correolibre.net/archivos/juntaavenencia.pdf"&gt;there was a small event in Mexico&lt;/a&gt;. An independent computer builder and a Microsoff legal representative had a meeting at the Legal Direction of Mexico's &lt;b&gt;National Institute of Author's Rights&lt;/b&gt;. Apparently Microsoft wanted to make a statement specifying that they could take any legal action Microsoft considered pertinent given the builder's lack of a Microsoft certificate of authenticity or original license included along with a computer built/sold by the independent builder. The builder states that given that they sell their computers with &lt;b&gt;Free Software&lt;/b&gt; instead of Windows, the software has licenses and that Microsoft doesn't have anything to complain about given that they don't own copyrights for said software.&lt;br /&gt;&lt;br /&gt;If it had been an isolated event, I'd have been tepted to consider this as just a case of a legal/marketing staff messing up but given Microsoft's attempts to equate selling computers without operating system to piracy in other parts of the world, I'm starting to wonder if this is a deliverate attempt to try to equate both in the public mind to spread a little FUD around Free Software?&lt;br /&gt;&lt;br /&gt;I'll try to get in touch with the independent builder to see what they have to say. Mary-Jo Foley, is it possible that you take care of Microsoft to see what they have to say about it?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1647655709615025819-8367899004818649941?l=maratux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maratux.blogspot.com/feeds/8367899004818649941/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://maratux.blogspot.com/2011/03/is-microsoft-trying-to-equate-selling.html#comment-form' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/8367899004818649941'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/8367899004818649941'/><link rel='alternate' type='text/html' href='http://maratux.blogspot.com/2011/03/is-microsoft-trying-to-equate-selling.html' title='Is Microsoft trying to equate selling computers without Windows to software piracy as a new world policy?'/><author><name>Edmundo Carmona</name><uri>http://www.blogger.com/profile/12584230508687563031</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_aeaDXhkMgRg/S_nW9OXlluI/AAAAAAAAACQ/UpHhxQ3kO88/S220/Yo_la_vasca.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1647655709615025819.post-656147080520903188</id><published>2011-03-12T16:16:00.000-08:00</published><updated>2011-03-12T16:50:39.459-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='anniversary'/><category scheme='http://www.blogger.com/atom/ns#' term='licensing'/><category scheme='http://www.blogger.com/atom/ns#' term='bsa'/><category scheme='http://www.blogger.com/atom/ns#' term='GNU/Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='merida'/><title type='text'>My (first) 10 years of linux usage</title><content type='html'>Hi!&lt;br /&gt;&lt;br /&gt;Just about these days it's my 10th anniversary as a GNU/Linux user and it all started, irony of ironies, as a consequence of &lt;a href="http://en.wikipedia.org/wiki/Business_Software_Alliance#Criticism"&gt;BSA's activities&lt;/a&gt; (or so the gossip said at the time). I was doing my internship at a small Java development company in Mérida, Venezuela, a rather small city but with a promising future (at the time) in the technology field. Those days BSA was pretty active arriving at businesses and asking for licenses of which, in what is pretty normal in Latinamerica, businesses didn't have any. Material raided plus fines, etc etc. You know the story.&lt;br /&gt;&lt;br /&gt;Given that this small office had licensing problems of their own, it was decided that some of the computers at the office had to be switched to GNU/Linux.... so a few days later I arrived at the office and my computer had been switched to &lt;a href="http://en.wikipedia.org/wiki/Mandriva"&gt;Mandrake&lt;/a&gt;. And let me tell you something: it was &lt;span style="font-weight: bold;"&gt;hard&lt;/span&gt;! Fortunately I was working with &lt;span style="font-style: italic;"&gt;Francisco Andrades&lt;/span&gt;, who we used to call JGuru and not only was he good at java but on GNU/Linux as well. So I bothered him as much as I could to try to learn what I could. A few months went by and I headed back to my beloved Maracaibo to finish my engineering degree stuff.&lt;br /&gt;&lt;br /&gt;I didn't install GNU/Linux on my computer for a few months... but I certainly had the will to do it. So when I wasn't doing anything important on my personal computer I installed Mandrake on it (about 6 months later) to try to get used to it. First months I had to force myself into using it... really. When there was something I couldn't do on GNU/Linux, I went to Windows and when I finished it, I headed back to Mandrake. In the beginning, I switched often but as months went by, it was less frequent... eventually I just didn't do it anymore.&lt;br /&gt;&lt;br /&gt;From my first experience on GNU/Linux in Mérida, I remember very clearly the sensation of not being &lt;span style="font-weight: bold;"&gt;under&lt;/span&gt; control of the computer (unlike another popular OS for end users were one is at the mercy of it). I felt the power was there, at my fingertips and I just didn't know how to take advantage of it... but exploring the power would take time... and eventually I did learn how to use it.&lt;br /&gt;&lt;br /&gt;In these ten years I have learned many many things, hacked a broken RAID to get back from it plus a lot more.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Bottomline&lt;/span&gt;: BSA, I want to thank you for putting me on this track... I'm sure that's not the desired outcome you have in mind when you go after license violators everywhere. I just hope more people follow suit.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1647655709615025819-656147080520903188?l=maratux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maratux.blogspot.com/feeds/656147080520903188/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://maratux.blogspot.com/2011/03/my-first-10-years-of-linux-usage.html#comment-form' title='5 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/656147080520903188'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/656147080520903188'/><link rel='alternate' type='text/html' href='http://maratux.blogspot.com/2011/03/my-first-10-years-of-linux-usage.html' title='My (first) 10 years of linux usage'/><author><name>Edmundo Carmona</name><uri>http://www.blogger.com/profile/12584230508687563031</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_aeaDXhkMgRg/S_nW9OXlluI/AAAAAAAAACQ/UpHhxQ3kO88/S220/Yo_la_vasca.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1647655709615025819.post-3075959126466635027</id><published>2011-02-18T11:45:00.000-08:00</published><updated>2011-02-18T12:10:05.922-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='principe de asturias'/><category scheme='http://www.blogger.com/atom/ns#' term='free software'/><title type='text'>International Free Software Community has been proposed for Príncipe de Asturias Prize</title><content type='html'>Hi!&lt;br /&gt;&lt;br /&gt;I just learned that &lt;a href="http://www.cenatic.es/"&gt;CENATIC&lt;/a&gt; has proposed the International Free Software Community as a whole as candidates for the &lt;a href="http://en.wikipedia.org/wiki/Prince_of_Asturias_Awards"&gt;Príncipe de Asturias Prize&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.cenatic.es/swlppa"&gt;There's a web page&lt;/a&gt; where people can support this proposal. In it, it can be read (my personal translation) that:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;"The International Free Software Community is the group of people and organizations from around the world that contribute to free software through a collaborative and open model based on freedom, sharing of knowledge, collaboration, meritocracy and respect for authors' rights with actions like development, disclosure, promotion, documentation, testing, organization, support and marketing of free software. Free Software has allowed generalization of knowledge and access to technology worldwide getting rid of economical, social, cultural, and language barriers".&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;It'd be nice if you provided your support for this proposal. On the left side of the page, there's a blue square bellow a text that says "&lt;span style="font-weight: bold;"&gt;Apoya la candidatura&lt;/span&gt;". The boxes are:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;- Name&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;- Lastname&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;- ID Card (???)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;- Entity (organization, I suppose)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;- Country&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;- email (required)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;- Brief comment&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;- Then a checkbox specifying that you have read the legal warning.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;- Submission button.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Hope you find it worthy of your support. Remember, it's &lt;a href="http://www.cenatic.es/swlppa"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1647655709615025819-3075959126466635027?l=maratux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maratux.blogspot.com/feeds/3075959126466635027/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://maratux.blogspot.com/2011/02/international-free-software-community.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/3075959126466635027'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/3075959126466635027'/><link rel='alternate' type='text/html' href='http://maratux.blogspot.com/2011/02/international-free-software-community.html' title='International Free Software Community has been proposed for Príncipe de Asturias Prize'/><author><name>Edmundo Carmona</name><uri>http://www.blogger.com/profile/12584230508687563031</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_aeaDXhkMgRg/S_nW9OXlluI/AAAAAAAAACQ/UpHhxQ3kO88/S220/Yo_la_vasca.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1647655709615025819.post-7509495704318604111</id><published>2011-01-24T10:30:00.000-08:00</published><updated>2011-01-24T10:48:04.335-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='dan lyons'/><category scheme='http://www.blogger.com/atom/ns#' term='deal'/><category scheme='http://www.blogger.com/atom/ns#' term='red hat'/><category scheme='http://www.blogger.com/atom/ns#' term='novell'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'>It took a little more than a year.... but Novell crumbled nevertheless</title><content type='html'>Do you remember when you opened your browser to get the latest news on Nov 3rd 2006? I do. I just couldn't believed my eyes when I learned that &lt;a href="http://www.google.com.co/url?sa=t&amp;amp;source=web&amp;amp;cd=2&amp;amp;ved=0CCAQFjAB&amp;amp;url=http%3A%2F%2Fwww.zdnet.co.uk%2Fnews%2Fapplication-development%2F2006%2F11%2F03%2Fmicrosoft-signs-linux-pact-with-novell-39284527%2F&amp;amp;ei=scg9TeDxFIeSgQfe-LTaCA&amp;amp;usg=AFQjCNGDqUZxrJgFsUyiCOvICFfW0RYdkQ"&gt;Novell had signed this deal with Microsoft&lt;/a&gt;..... and if that's not enough, how about bad mouth developers of FLOSS everywhere (the same guys who largely develop the product Novell was trying to get money from) saying that if you (we... I still do a little FLOSS development as personal side projects) didn't want to get into trouble &lt;span style="font-weight: bold;"&gt;you better do your work for free&lt;/span&gt;? Ain't that lovely? As a summary, it was a very deceptive turn of events.&lt;br /&gt;&lt;br /&gt;I remember back then that someone from Red Hat made a comment somewhere (it's not a press release, I think.... I checked on their site for the press releases around the time) that they felt comfortable with the move. That within a year Novell would have been zapped into oblivion as each and everyone of the previous partners Microsoft had gone to bed with had.&lt;br /&gt;&lt;br /&gt;I found &lt;a href="http://www.forbes.com/2006/11/03/linux-microsoft-novell-tech-cz_dl_1103linux.html"&gt;this article&lt;/a&gt; (from Dan Lyon's) while trying to find the quote I'm telling you about and it's basically the same thing. Well... it took a little more that one year but Novell &lt;span style="font-weight: bold;"&gt;did&lt;/span&gt; crumble after all.&lt;br /&gt;&lt;br /&gt;I wonder if there are other companies out there that are still willing to change their luck with a Microsoft partnership.&lt;br /&gt;&lt;br /&gt;PS In the Dan Lyon's article, there's a note for Red Hat: &lt;span style="font-style: italic;"&gt;When companies start talking about Microsoft "validating" their market,  they're usually about to be validated out of existence.&lt;/span&gt; I say, it sounds like it's going to take a little more than RH talking about Microsoft validating their market in order to throw the company down.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1647655709615025819-7509495704318604111?l=maratux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maratux.blogspot.com/feeds/7509495704318604111/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://maratux.blogspot.com/2011/01/it-took-little-more-than-year-but.html#comment-form' title='4 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/7509495704318604111'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/7509495704318604111'/><link rel='alternate' type='text/html' href='http://maratux.blogspot.com/2011/01/it-took-little-more-than-year-but.html' title='It took a little more than a year.... but Novell crumbled nevertheless'/><author><name>Edmundo Carmona</name><uri>http://www.blogger.com/profile/12584230508687563031</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_aeaDXhkMgRg/S_nW9OXlluI/AAAAAAAAACQ/UpHhxQ3kO88/S220/Yo_la_vasca.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1647655709615025819.post-7363564310563308829</id><published>2011-01-04T13:49:00.000-08:00</published><updated>2011-01-04T14:13:52.110-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='unity'/><category scheme='http://www.blogger.com/atom/ns#' term='linux. ubuntu'/><category scheme='http://www.blogger.com/atom/ns#' term='. shuttleworth'/><category scheme='http://www.blogger.com/atom/ns#' term='kde'/><category scheme='http://www.blogger.com/atom/ns#' term='gnome'/><title type='text'>Stop complaining about Unity and suck it up!</title><content type='html'>It's been a couple of months since Mark Shuttleworth dropped the bomb that Canonical intends to use Unity instead of the GNOME shell as the default shell in Ubuntu.... and I'm still reading about how the GNOME community could be torn apart by this decision.&lt;br /&gt;&lt;br /&gt;Have these same people sat down to think how the people involved with KDE feel about Canonical's push for GNOME instead of KDE in Ubuntu? It's no secret that Kubuntu is not the best KDE-based distribution out there (I'll give you up that I'm a Kubuntu user myself, I use the PPA for KDE for Kubuntu and I don't use GNOME that much). Then why so much hair pulling because of Canonical's push for Unity instead of the GNOME shell? These people might just as well suck it up, get off the ground, remove the dust from their shoulders and continue working on their beloved environment.... you know, the way the developers of KDE do.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1647655709615025819-7363564310563308829?l=maratux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maratux.blogspot.com/feeds/7363564310563308829/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://maratux.blogspot.com/2011/01/stop-complaining-about-unity-and-suck.html#comment-form' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/7363564310563308829'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/7363564310563308829'/><link rel='alternate' type='text/html' href='http://maratux.blogspot.com/2011/01/stop-complaining-about-unity-and-suck.html' title='Stop complaining about Unity and suck it up!'/><author><name>Edmundo Carmona</name><uri>http://www.blogger.com/profile/12584230508687563031</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_aeaDXhkMgRg/S_nW9OXlluI/AAAAAAAAACQ/UpHhxQ3kO88/S220/Yo_la_vasca.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1647655709615025819.post-3458632443392404501</id><published>2010-11-27T13:52:00.000-08:00</published><updated>2010-11-27T15:31:58.527-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='raid'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='recovery'/><category scheme='http://www.blogger.com/atom/ns#' term='md'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='raid5'/><title type='text'>Testing raidpycovery through mdadm</title><content type='html'>Hi!&lt;br /&gt;&lt;br /&gt;I'm still working on polishing &lt;a href="https://code.launchpad.net/%7Eeantoranz/+junk/raidpycovery"&gt;raidpycovery&lt;/a&gt;. I started doing real experiments today to recover data from broken RAID5s. In order to do it, I used linux' md. It allowed me to study md a little bit while testing raidpycovery.&lt;br /&gt;&lt;br /&gt;So, let's get our hands dirty.&lt;br /&gt;&lt;br /&gt;First, let's create a directory where we will work, for example:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;$ mkdir raid5&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;$ cd raid5&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Now let's create the separate images where we will create our RAID5. I will use 4 disks 10 MBs each:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;$ for i in 0 1 2 3; do dd if=/dev/zero of=disk$i bs=1M count=10; done&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;10+0 records in&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;10+0 records out&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;10485760 bytes (10 MB) copied, 0.0584047 s, 180 MB/s&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;10+0 records in&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;10+0 records out&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;10485760 bytes (10 MB) copied, 0.100258 s, 105 MB/s&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;10+0 records in&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;10+0 records out&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;10485760 bytes (10 MB) copied, 0.0691083 s, 152 MB/s&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;10+0 records in&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;10+0 records out&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;10485760 bytes (10 MB) copied, 0.0508324 s, 206 MB/s&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;$&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Now we have four empty files that we will feed into md to create our RAID to do our tests.&lt;br /&gt;&lt;br /&gt;First, we will "loop" them so that we can use then with md (I don't know if this is really needed, but I'll do it just in case). As I'm working on a live USB, I'll have to link from /dev/loop2 and on. Check the used loop devices with losetup -a (as root... or with sudo):&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;$ sudo losetup -a&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;/dev/loop0: [0811]:31 (/cdrom/casper/filesystem.squashfs)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;/dev/loop1: [0811]:38 (/casper-rw-backing/casper-rw)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;$&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Now, I loop the files:&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;$ sudo losetup /dev/loop2 disk0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;$ sudo losetup /dev/loop3 disk1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;$ sudo losetup /dev/loop4 disk2&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;$ sudo losetup /dev/loop5 disk3&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;$ sudo losetup -a&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;/dev/loop0: [0811]:31 (/cdrom/casper/filesystem.squashfs)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;/dev/loop1: [0811]:38 (/casper-rw-backing/casper-rw)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;/dev/loop2: [000f]:27898 (/home/ubuntu/raid5/raidpycovery/bin/raid5/disk0)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;/dev/loop3: [000f]:27899 (/home/ubuntu/raid5/raidpycovery/bin/raid5/disk1)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;/dev/loop4: [000f]:27900 (/home/ubuntu/raid5/raidpycovery/bin/raid5/disk2)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;/dev/loop5: [000f]:27901 (/home/ubuntu/raid5/raidpycovery/bin/raid5/disk3)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;$&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Great. Now we can use the loop devices to create our RAID device:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;$sudo mdadm --create /dev/md0 -l 5 -p ls -n 4 /dev/loop2 /dev/loop3 /dev/loop4 /dev/loop5&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;mdadm: array /dev/md0 started.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;$&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;If you read the man page of mdadm you will see that by default the algorithm for the RAID will be left sync and a default stripe/chunk size of 64k. We will need that data later on.&lt;br /&gt;&lt;br /&gt;Now, let's format it so we can use it as a normal partition:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;$ sudo mkfs.ext3 /dev/md0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;mke2fs 1.41.11 (14-Mar-2010)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Filesystem label=&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;OS type: Linux&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Block size=1024 (log=0)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Fragment size=1024 (log=0)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Stride=64 blocks, Stripe width=192 blocks&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;7648 inodes, 30528 blocks&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;1526 blocks (5.00%) reserved for the super user&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;First data block=1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Maximum filesystem blocks=31457280&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;4 block groups&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;8192 blocks per group, 8192 fragments per group&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;1912 inodes per group&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Superblock backups stored on blocks:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        8193, 24577&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Writing inode tables: done                           &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Creating journal (1024 blocks): done&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Writing superblocks and filesystem accounting information: done&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;This filesystem will be automatically checked every 23 mounts or&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;180 days, whichever comes first.  Use tune2fs -c or -i to override.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;$&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Now, we can mount our just formated RAID device:&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;$ sudo mount /dev/md0 /mnt/tmp&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;$ sudo mount&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;/dev/md0 on /mnt/tmp type ext3 (rw)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;$ df&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Filesystem           1K-blocks      Used Available Use% Mounted on&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;/dev/md0                 29557      1400     26631   5% /mnt/tmp&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;$&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;There you go. A new partition with around 25 MBs of data available for &lt;span style="font-weight: bold;"&gt;mortal&lt;/span&gt; users. Now, let's copy some files into that partition:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:arial;" &gt;$ sudo cp blah blah blah /mnt/tmp/&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I'm using sudo to do the copy because right now that directory is owned by root.&lt;br /&gt;&lt;br /&gt;After I copy the files I wanted, let's check their MD5s:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;$ md5sum /mnt/tmp/*&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;a27ebcacc64644dba00936abc758486e  /mnt/tmp/IMSLP32718-PMLP01458-Beethoven_Sonaten_Piano_Band1_Peters_9452_14_Op27_No2_1200dpi.pdf&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;e68fabdcda296ef4a76d834a11a6f1df  /mnt/tmp/IMSLP44764-PMLP48640-Mahler-Sym9.TimpPerc.pdf&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;md5sum: /mnt/tmp/lost+found: Permission denied&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;d7bfe06473430aad5ca0025598111556  /mnt/tmp/putty.log&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;670536c55ae9c77b04c85f98459c0cd8  /mnt/tmp/Resume Edmundo Carmona.pdf&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;8727e8ff88739feca15eb82b4d9cb09b  /mnt/tmp/Titulo Ingenieria.png&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Now, let's umount our RAID and stop it:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;$ sudo umount /mnt/tmp&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;$ sudo mdadm --stop /dev/md0$ sudo umount /mnt/tmp/&lt;/span&gt;&lt;br /&gt;mdadm: stopped /dev/md0&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;$&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Great... now, let's test try to rebuild the RAID with the raidpycovery tools. I don't have the tools at the same directory, so I'll have to move and use relative names for the disks, keep that in mind:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;$ ./Raid5Recovery.py 4 left async 65536 raid5/disk0 raid5/disk1 raid5/disk2 raid5/disk3 &gt; wholedisk&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Number of disks: 4&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Algorithm: Left Asynchronous&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Chunk size: 65536 bytes&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Skip 0 bytes from the begining of the files&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Finished! Output size: 31457280 bytes&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;$&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Now, let's mount it and see if we can get any data from the recovered RAID:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;$ sudo mount -o loop,ro wholedisk /mnt/tmp&lt;/span&gt;&lt;br /&gt;mount: unknown filesystem type 'linux_raid_member'&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;$&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Not good. From my tests, that's because there's md garbage at the end of the disks that the mount is seeing. I'll force the partition type then:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;$ sudo mount -t ext3 -o loop,ro wholedisk /mnt/tmp&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;mount: wrong fs type, bad option, bad superblock on /dev/loop6,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;       missing codepage or helper program, or other error&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;       In some cases useful info is found in syslog - try&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;       dmesg | tail  or so&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;$&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Gotcha!&lt;/span&gt; Did you notice that I resembled the RAID using &lt;span style="font-weight: bold;"&gt;left &lt;/span&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;async&lt;/span&gt;? It has to be &lt;span style="font-weight: bold;"&gt;left sync&lt;/span&gt;, remember? Let's try again:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;$ ./Raid5Recovery.py 4 left sync 65536 raid5/disk0 raid5/disk1 raid5/disk2 raid5/disk3 &gt; wholedisk&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Number of disks: 4&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Algorithm: Left Synchronous&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Chunk size: 65536 bytes&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Skip 0 bytes from the begining of the files&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Finished! Output size: 31457280 bytes&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;$ sudo mount -t ext3 -o loop,ro wholedisk /mnt/tmp&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;No complains. Great! Now let's see if we can see the data in the recovered RAID:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;$ md5sum /mnt/tmp/*&lt;/span&gt;&lt;br /&gt;a27ebcacc64644dba00936abc758486e  /mnt/tmp/IMSLP32718-PMLP01458-Beethoven_Sonaten_Piano_Band1_Peters_9452_14_Op27_No2_1200dpi.pdf&lt;br /&gt;e68fabdcda296ef4a76d834a11a6f1df  /mnt/tmp/IMSLP44764-PMLP48640-Mahler-Sym9.TimpPerc.pdf&lt;br /&gt;md5sum: /mnt/tmp/lost+found: Permission denied&lt;br /&gt;d7bfe06473430aad5ca0025598111556  /mnt/tmp/putty.log&lt;br /&gt;670536c55ae9c77b04c85f98459c0cd8  /mnt/tmp/Resume Edmundo Carmona.pdf&lt;br /&gt;8727e8ff88739feca15eb82b4d9cb09b  /mnt/tmp/Titulo Ingenieria.png&lt;br /&gt;&lt;br /&gt;And there you are. Everything is right there. Using this method today I discovered I was not rebuilding chunks from missing images correctly and that one of the right-handed algorithms has to be corrected. Let's see what I find.&lt;br /&gt;&lt;br /&gt;As homework, try running the recovery script providing a missing disk (write &lt;span style="font-weight: bold;"&gt;none&lt;/span&gt; for it) and see if it works.&lt;br /&gt;&lt;br /&gt;Hope you liked the read or find it useful.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Update&lt;/span&gt;: Have corrected the right algorithm issue. Make sure you get the latest stable release if you are gonna use it:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-family: courier new;"&gt;bzr branch -r tag:2.00.02 lp:~eantoranz/+junk/raidpycovery&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1647655709615025819-3458632443392404501?l=maratux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maratux.blogspot.com/feeds/3458632443392404501/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://maratux.blogspot.com/2010/11/testing-raidpycovery-through-mdadm.html#comment-form' title='10 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/3458632443392404501'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/3458632443392404501'/><link rel='alternate' type='text/html' href='http://maratux.blogspot.com/2010/11/testing-raidpycovery-through-mdadm.html' title='Testing raidpycovery through mdadm'/><author><name>Edmundo Carmona</name><uri>http://www.blogger.com/profile/12584230508687563031</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_aeaDXhkMgRg/S_nW9OXlluI/AAAAAAAAACQ/UpHhxQ3kO88/S220/Yo_la_vasca.jpg'/></author><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1647655709615025819.post-7784972523197428328</id><published>2010-11-21T05:39:00.000-08:00</published><updated>2010-11-21T06:30:00.181-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='gnu'/><category scheme='http://www.blogger.com/atom/ns#' term='raid'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='broken'/><category scheme='http://www.blogger.com/atom/ns#' term='recovery'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='raid5'/><title type='text'>Broken RAID5 you said? Don't use Java anymore. Go with python instead!</title><content type='html'>So, you have a broken RAID5 and found &lt;a href="http://www.freesoftwaremagazine.com/articles/recovery_raid"&gt;the article I wrote&lt;/a&gt; for the &lt;a href="http://www.freesoftwaremagazine.com/"&gt;Free Software Magazine&lt;/a&gt; 5 years ago about it and would like to give it a shot.&lt;br /&gt;&lt;br /&gt;First off: &lt;span style="font-weight: bold;"&gt;Good luck!&lt;/span&gt; You are gonna need it.&lt;br /&gt;&lt;br /&gt;Second: When I solved that problem I didn't have any experience in python whatsoever plus Oracle hadn't bought Sun, sued Google, etc.&lt;br /&gt;&lt;br /&gt;During the course of these 5 years I have received some requests to help people out with their situation and it's been a very nice experience to hack on those devices here or there to get the data back. I have received a little money by paypal and even once got a box of whine bottle from Italy (thanks, Marco!) as payments.&lt;br /&gt;&lt;br /&gt;Every single time I've had to help someone with it, I always get the question of how to run the .java classes I made. And I even took the task of compiling the .class files to then send them to the person in need.&lt;br /&gt;&lt;br /&gt;Given the gripes over oracle/java recently I have decided to translate the library to python for people who want to use it so they don't have to go around trying to learn how to compile/run things in Java (at least in GNU/Linux).&lt;br /&gt;&lt;br /&gt;The project is here:&lt;br /&gt;&lt;br /&gt;&lt;a href="https://code.launchpad.net/%7Eeantoranz/+junk/raidpycovery"&gt;https://code.launchpad.net/~eantoranz/+junk/raidpycovery&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;You can get it very easily by using bazaar:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;bzr branch -r tag:2.00.00 &lt;/span&gt;&lt;span class="branch-url"&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;lp:~eantoranz/+junk/raidpycovery&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Or you can just download the files from that same version and use them:&lt;br /&gt;&lt;a href="http://bazaar.launchpad.net/%7Eeantoranz/%2Bjunk/raidpycovery/annotate/head%3A/bin/Chunk.py"&gt;Chunk.py&lt;/a&gt;&lt;br /&gt;&lt;a href="http://bazaar.launchpad.net/%7Eeantoranz/%2Bjunk/raidpycovery/annotate/head%3A/bin/Raid5Recovery.py"&gt;Raid5Recovery.py&lt;/a&gt;&lt;br /&gt;&lt;a href="http://bazaar.launchpad.net/%7Eeantoranz/%2Bjunk/raidpycovery/annotate/head%3A/bin/RaidImageRecovery.py"&gt;RaidImageRecovery.py&lt;/a&gt;&lt;br /&gt;Let's not forget the readme where you get to see how to use it:&lt;br /&gt;&lt;a href="http://bazaar.launchpad.net/%7Eeantoranz/%2Bjunk/raidpycovery/annotate/head%3A/doc/readme.txt"&gt;readme.txt&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;There's more stuff in the project (some chunks from the RAID I recovered at the Hospital, mostly... but you never know!)  so I'd suggest to use bazaar but....&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Warning/disclaimer/whatever&lt;/span&gt;: I haven't tested it on a real environment so there might be some glitches (but I did a translation mostly so it &lt;span style="font-weight: bold;"&gt;should&lt;/span&gt; be correct overall).&lt;br /&gt;&lt;br /&gt;In case you want to get the original java code:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold; font-family: courier new;"&gt;bzr branch -r tag:1.00.00 &lt;/span&gt;&lt;span style="font-weight: bold; font-family: courier new;" class="branch-url"&gt;lp:~eantoranz/+junk/raidpycovery&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Or start browsing &lt;a href="http://bazaar.launchpad.net/%7Eeantoranz/%2Bjunk/raidpycovery/files/1?start_revid=1"&gt;here&lt;/a&gt; to get the files.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;PS&lt;/span&gt; Sorry, Larry.... it just had to be done. A little weight off my jumping-off-java shoulders. :-)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;PS2: Donations, donations!&lt;/span&gt; You found the project useful? How about giving a little contribution? 0,10 US$ / Gb recovered? Sounds like fair to me. Specially considering how fast HDs sizes are growing compared against the inflation.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1647655709615025819-7784972523197428328?l=maratux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maratux.blogspot.com/feeds/7784972523197428328/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://maratux.blogspot.com/2010/11/broken-raid5-you-said-dont-use-java.html#comment-form' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/7784972523197428328'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/7784972523197428328'/><link rel='alternate' type='text/html' href='http://maratux.blogspot.com/2010/11/broken-raid5-you-said-dont-use-java.html' title='Broken RAID5 you said? Don&apos;t use Java anymore. Go with python instead!'/><author><name>Edmundo Carmona</name><uri>http://www.blogger.com/profile/12584230508687563031</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_aeaDXhkMgRg/S_nW9OXlluI/AAAAAAAAACQ/UpHhxQ3kO88/S220/Yo_la_vasca.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1647655709615025819.post-615227862809666137</id><published>2010-11-15T12:27:00.000-08:00</published><updated>2010-11-15T13:18:51.460-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='opinion'/><category scheme='http://www.blogger.com/atom/ns#' term='gnu'/><category scheme='http://www.blogger.com/atom/ns#' term='x server'/><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><category scheme='http://www.blogger.com/atom/ns#' term='xorg'/><category scheme='http://www.blogger.com/atom/ns#' term='GNU/Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='wayland'/><category scheme='http://www.blogger.com/atom/ns#' term='GNU/Linux linux'/><title type='text'>My thoughts on the switch to wayland</title><content type='html'>Like anybody cares for what I think, right? Anyway... I made a comment in &lt;a href="http://www.linuxtoday.com/news_story.php3?ltsn=2010-11-15-005-35-OP-DT-RH"&gt;one of these wayland-related news at linuxtoday&lt;/a&gt; and Carla Shroder took the time to ask me:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.linuxtoday.com/news_story.php3?ltsn=2010-11-15-005-35-OP-DT-RH-0005"&gt;&lt;span style="font-weight: bold;"&gt;"...why all that extra complexity to go back to where we were in the first  place?"&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;That's a fair question. By the way, my love to  you, Carla. You haven't sent me a comment about &lt;a href="https://code.launchpad.net/%7Eeantoranz/+junk/pythogoras"&gt;pythogoras &lt;/a&gt;that I asked you for but I still love you and care for you. :-D&lt;br /&gt;&lt;br /&gt;Anyways... the thing is this:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.linuxtoday.com/infrastructure/2010111500535OPDTRH"&gt;Wayland is going to replace X in Ubuntu and Fedora&lt;/a&gt;. That's quite a remarkable statement to make. We are talking about X, the same X that has been there since I started using GNU/Linux about 9 years ago and even many years before that cosmic event, if you will.&lt;br /&gt;&lt;br /&gt;But all the GUI applications for UNIX at the time use X, so that means it's going to be a really troublesome change, isn't it? Also, there are really cool and extremely useful features in X like Network Transparency (think of &lt;span style="font-weight: bold;"&gt;export DISPLAY=blablah:0.0&lt;/span&gt; or &lt;span style="font-weight: bold;"&gt;ssh -X,&lt;/span&gt;  pleople) that would disappear from the face of the earth (I'm wondering what I would show my Windows-loving friends now when I start showing them the wonders of GNU/Linux if I don't have network transparency. I'll have to think about that).&lt;br /&gt;&lt;br /&gt;As I was saying, I'll (try to) tackle those two questions.&lt;br /&gt;&lt;br /&gt;First off, this means a major reworking to get all applications to render on wayland, isn't it? I think it can be solved by hacking the lower layer APIs like Qt or GTK or even at a lower level like wrapping the Wayland API for clients around the X API (&lt;span style="font-weight: bold;"&gt;update&lt;/span&gt;: I think it's viceversa... but you get the concept, don't you?). Then not much work would have to be done on the higher layers (or so the fairy tale theories of software development say). That means applications won't be hurt that much. I'm not implying that it's going to be easy but not much work will have to be required from us mere mortals in that case. Also it means that the switch could be done &lt;span style="font-weight: bold;"&gt;overnight&lt;/span&gt; to start using Wayland.&lt;br /&gt;&lt;br /&gt;Then there are things built inside X that would be gone once Wayland makes its debut, right (to be read as "&lt;span style="font-weight: bold;"&gt;Network Transparency&lt;/span&gt;")? What I've read around (won't provide any links but it's very logical) is that X could still use Wayland as just another graphics interface and then you will have X running on top of Wayland and (tadaaaaaaaaaaaaaaaaa) you would get Network Transparency back faster than you can say &lt;span style="font-weight: bold; font-style: italic;"&gt;"mi moto alpina derrapante"&lt;/span&gt; (that's a nice joke in spanish... people who are learning spanish should give me a call so that I tell you about it and have a laugh).&lt;br /&gt;&lt;br /&gt;But then Carla makes the final killing point: &lt;span style="font-weight: bold;"&gt;Is all this hassle really worth it?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In all honesty, I don't know. It's still too early in the game to make up my mind weather it will be worth it or not. But if X's complexity/overhead can be cut down and get a faster/lighter/snappier/sexier/whatever-you-consider-important-er environment to spend your time onto, then it could be worth it in the end... specially if (as I said) it won't require much work &lt;span style="font-weight: bold;"&gt;but&lt;/span&gt; on the lower layer APIs.&lt;br /&gt;&lt;br /&gt;Now I don't know if switching to Wayland will be really worth it, but was it reading this article worth it after all? I truly hope so.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1647655709615025819-615227862809666137?l=maratux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maratux.blogspot.com/feeds/615227862809666137/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://maratux.blogspot.com/2010/11/my-thoughts-on-switch-to-wayland.html#comment-form' title='7 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/615227862809666137'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/615227862809666137'/><link rel='alternate' type='text/html' href='http://maratux.blogspot.com/2010/11/my-thoughts-on-switch-to-wayland.html' title='My thoughts on the switch to wayland'/><author><name>Edmundo Carmona</name><uri>http://www.blogger.com/profile/12584230508687563031</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_aeaDXhkMgRg/S_nW9OXlluI/AAAAAAAAACQ/UpHhxQ3kO88/S220/Yo_la_vasca.jpg'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1647655709615025819.post-1875690489636495637</id><published>2010-11-10T00:46:00.001-08:00</published><updated>2010-11-10T01:11:32.752-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='crazy thoughts'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'>Why don't manufactures get together and get Microsoft out of the loop?</title><content type='html'>Here comes a crazy thought:&lt;br /&gt;&lt;br /&gt;Why don't computer manufactures get in cahoots and get Microsoft out of the demi-god loop? I mean, computer manufactures are struggling because their profit out of every sell are very small... in the meantime, Microsoft is laughing its ass off while making millions upon millions over &lt;a href="http://www.zdnet.com/blog/microsoft/microsoft-240-million-licenses-of-windows-7-sold-in-its-first-year/7778"&gt;their sells of Windows 7 (or so they say)&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;If any of the manufacturers dared getting out of the Microsoft way (you know, let's push Linux a bit harder, let's not say we recommend Windows 7, etc, etc), Microsoft would just need to get the price of Windows 7 licenses a little higher to force the manufacturer into red numbers (if it isn't already, of course) and teach the bully a lesson, right? We have all seen the &lt;a href="http://en.wikipedia.org/wiki/Halloween_Documents"&gt;Halloween Documents&lt;/a&gt; and know of Microsoft's business practices, so no surprises there. Microsoft would still have all the other manufactures lined up with lower prices to pay for Windows 7, the rebel manufacturer would have to get their prices a little higher because of the increase in the price of Windows 7 it has to pay now making it more difficult for them to compete against the other manufacturers and Microsoft gets to keep the upper hand in the end. Sounds like a subtle kind of trust, doesn't it? By the way, am I the only one who has the phrase &lt;span style="font-weight: bold; font-style: italic;"&gt;"Divide and conquer" &lt;/span&gt;pounding in his head?&lt;br /&gt;&lt;br /&gt;But what would happen if the biggest manufactures would get together (say, in a secret deal) and fight Microsoft all at the same time? Is that possible? Is that legal? Would that be enough to get Microsoft out of its ways and start really competing instead of been shoved down everybody's throat? If it is legal (I honestly don't know), then why don't they do it and let Microsoft laugh (very loudly, by the way) at them (and the rest of us)?&lt;br /&gt;&lt;br /&gt;Now... where did that smart-ass laugh I'm hearing in surround sound come from? Seattle?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1647655709615025819-1875690489636495637?l=maratux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maratux.blogspot.com/feeds/1875690489636495637/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://maratux.blogspot.com/2010/11/why-dont-manufactures-get-together-and.html#comment-form' title='8 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/1875690489636495637'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/1875690489636495637'/><link rel='alternate' type='text/html' href='http://maratux.blogspot.com/2010/11/why-dont-manufactures-get-together-and.html' title='Why don&apos;t manufactures get together and get Microsoft out of the loop?'/><author><name>Edmundo Carmona</name><uri>http://www.blogger.com/profile/12584230508687563031</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_aeaDXhkMgRg/S_nW9OXlluI/AAAAAAAAACQ/UpHhxQ3kO88/S220/Yo_la_vasca.jpg'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1647655709615025819.post-433490406045748692</id><published>2010-10-02T15:48:00.000-07:00</published><updated>2010-10-24T21:15:06.918-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tuning'/><category scheme='http://www.blogger.com/atom/ns#' term='pythogoras'/><category scheme='http://www.blogger.com/atom/ns#' term='musical tuning'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Introducing Pythogoras.... or what is musical tuning?</title><content type='html'>Music is everywhere.&lt;br /&gt;&lt;br /&gt;A major part of culture is driven by it. Dancing without music? Movies without music? Going to a restaurant and having no background music? You get the idea, right? It's, just like John Milton said in "The Devil's Advocate", &lt;span style="font-weight: bold;"&gt;EVERYWHERE&lt;/span&gt;!&lt;br /&gt;&lt;br /&gt;In terms of western music (and that's what I intend to talk about in the article, keep that in mind), a loooot of music theory has been created and published for many centuries. Yet much of it based on experience.&lt;br /&gt;&lt;br /&gt;And there's a major part of it where I believe a lot of research is yet to be made: &lt;span style="font-weight: bold;"&gt;Tuning&lt;/span&gt;. Have you ever heard someone play with an instrument that's "out of tune"? But then, this begs the question: What is "Tuning"? Well... the answer can be anything but simple. Go take a look at &lt;a href="http://en.wikipedia.org/wiki/Musical_tuning"&gt;wikipedia&lt;/a&gt; to make yourself an idea.&lt;br /&gt;&lt;br /&gt;The fact is that for us humans, or rather, our human ears, being in tune will mean using the simplest ratios possible for notes/chords. But that is in direct contrast with tuning instruments... specially keyboards..... let me explain myself a little bit better:&lt;br /&gt;&lt;br /&gt;I play the flute and it's very simple to assume that whenever you play, say, an A, you will always get the same frequency that you used to tune the flute (be it 440, 441, whatever)... but it's not like that. The tuning of the flute can be adjusted a little bit "on the fly" by readjusting the angle of the wind that is coming out of your mouth towards the flute or by _turning_ the flute either forward or backward (backward makes the pitch a little bit lower). Even more, the flute will play the forte sounds &lt;span style="font-style: italic;"&gt;sharper&lt;/span&gt; than piano ones and just in case this is not enough, higher notes will also produce higher pitches for each note... in other words, a flute player is _always_ tuning his instrument according to what's being played. Most instruments, like the flute, can be tuned on the fly: Violins, Violas, Cellos, Basses, Oboes, Clarinets, etc etc. Most of the instruments in the orchestra can do that... most notorious exception: The Piano. It's tuned by a "tuner" and will remain like that for years to come, no on the fly adjustments.&lt;br /&gt;&lt;br /&gt;The thing is that there are many ways to tune notes, in other words, many Tuning Systems are available and each has advantages and disadvantages. Normally there are trade-offs between "tuning experience" and "practicality of tuning the instrument to different tonalities".&lt;br /&gt;&lt;br /&gt;I believe a lot of research has to be done on the way we perceive being &lt;span style="font-weight: bold;"&gt;in tune&lt;/span&gt;, but where to start? Well, I'm a programmer (among other things) so I developed one application to _try_ to play music with different tuning systems (I'm sorry for the long introduction).&lt;br /&gt;&lt;br /&gt;It's still very rough but I hope I can make it better in the following months (sponsoring is welcome, by the way).&lt;br /&gt;&lt;br /&gt;So, instead of describing what it can or can't do, I want you to listen to three files I produced from the application. Here you have the Air on the G String by J. S. Bach played in three different tuning systems:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;- Just&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;- Pythagorean&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;- Equal Temperament&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;object width="480" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/p/E601F4B9F3A77510?hl=es_ES&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/p/E601F4B9F3A77510?hl=es_ES&amp;fs=1" type="application/x-shockwave-flash" width="480" height="385" allowscriptaccess="always" allowfullscreen="true"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Files are available both in MP3 format and OGG (which I prefer). If you'd like to get more info, don't hesitate to email me.&lt;br /&gt;&lt;br /&gt;Oh, and by the way, the application is called "Pythogoras" and can be found &lt;a href="https://code.launchpad.net/%7Eeantoranz/+junk/pythogoras"&gt;here&lt;/a&gt;. It's released under the terms of the Affero GPLv3... and then again, keep in mind it's still veeeery rough.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1647655709615025819-433490406045748692?l=maratux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maratux.blogspot.com/feeds/433490406045748692/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://maratux.blogspot.com/2010/10/introducing-pythogoras-or-what-is.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/433490406045748692'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/433490406045748692'/><link rel='alternate' type='text/html' href='http://maratux.blogspot.com/2010/10/introducing-pythogoras-or-what-is.html' title='Introducing Pythogoras.... or what is musical tuning?'/><author><name>Edmundo Carmona</name><uri>http://www.blogger.com/profile/12584230508687563031</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_aeaDXhkMgRg/S_nW9OXlluI/AAAAAAAAACQ/UpHhxQ3kO88/S220/Yo_la_vasca.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1647655709615025819.post-7426159441773659577</id><published>2010-08-24T18:38:00.000-07:00</published><updated>2010-08-24T20:22:41.014-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='crazy world'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><category scheme='http://www.blogger.com/atom/ns#' term='airplane'/><title type='text'>Who dares using Windows in a critical environment? (updated)</title><content type='html'>I just can't believe what my eyes just saw. You are telling me that a commercial plane (a real plane, the ones that take off from land at hundred of kilometers per hour carrying hundreds of people in them) &lt;a href="http://www.msnbc.msn.com/id/38790670/ns/technology_and_science-security/?gt1=43001"&gt;had Windows running on one of its central processing nodes&lt;/a&gt;? You gotta be kidding me! Who dares doing something like that? Come on, people! We're talking about a life-or-death situation here, not the normal pop up that at its worst will nag me to hell asking me to date someone on the other side of the planet.&lt;br /&gt;&lt;br /&gt;This begs the questions: Will there be consequences for the people involved in taking the decision to put Windows on board? Maybe consequences for Microsoft? Will there be prosecution for the guys who developed the malware for (unintended?) murder? Nice things to talk about in the following months, I guess.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Absolutely terrible.&lt;br /&gt;&lt;br /&gt;Update: &lt;/span&gt;&lt;span&gt;From what I've read about it, Windows is not used on the plane but on computers used to get information from the plane. Unfortunately it's still part of the causes that generated the accident which had an outcome of several lives lost. &lt;span style="font-weight: bold;"&gt;Why was Windows used in the first place?&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1647655709615025819-7426159441773659577?l=maratux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maratux.blogspot.com/feeds/7426159441773659577/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://maratux.blogspot.com/2010/08/who-dares-using-windows-in-critical.html#comment-form' title='7 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/7426159441773659577'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/7426159441773659577'/><link rel='alternate' type='text/html' href='http://maratux.blogspot.com/2010/08/who-dares-using-windows-in-critical.html' title='Who dares using Windows in a critical environment? (updated)'/><author><name>Edmundo Carmona</name><uri>http://www.blogger.com/profile/12584230508687563031</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_aeaDXhkMgRg/S_nW9OXlluI/AAAAAAAAACQ/UpHhxQ3kO88/S220/Yo_la_vasca.jpg'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1647655709615025819.post-2241763558813808205</id><published>2010-08-21T12:20:00.000-07:00</published><updated>2010-08-21T12:31:43.368-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='irony'/><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>So the patent mess started from Java and not .NET.. what an irony!</title><content type='html'>You know how many times I complained about .NET for being backed up by Microsoft and so I distrusted it even if they had made pledges (under certain conditions) not to sue and having made it into an ECMA standard (portions of it)?&lt;br /&gt;&lt;br /&gt;Not that I had put all my developing faith into Java, anyway, I've worked with PHP and Python during the last couple of years but it's certainly an irony seeing the patent mess to come from Java instead.&lt;br /&gt;&lt;br /&gt;Will this mean there will be less development to Java? Will this push development to other languages like Python? Perhaps Go? I'm just wondering?&lt;br /&gt;&lt;br /&gt;I guess ORACLE will lose a lot of FLOSS support after this. Will we start seeing people from ORACLE jump ship the way some did (like Samba's Jeremy Allison) when Novell signed off their agreement with Microsoft back in 2006?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1647655709615025819-2241763558813808205?l=maratux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maratux.blogspot.com/feeds/2241763558813808205/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://maratux.blogspot.com/2010/08/so-patent-mess-started-from-java-and.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/2241763558813808205'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/2241763558813808205'/><link rel='alternate' type='text/html' href='http://maratux.blogspot.com/2010/08/so-patent-mess-started-from-java-and.html' title='So the patent mess started from Java and not .NET.. what an irony!'/><author><name>Edmundo Carmona</name><uri>http://www.blogger.com/profile/12584230508687563031</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_aeaDXhkMgRg/S_nW9OXlluI/AAAAAAAAACQ/UpHhxQ3kO88/S220/Yo_la_vasca.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1647655709615025819.post-6230907524959367557</id><published>2010-08-14T17:34:00.000-07:00</published><updated>2010-08-14T17:54:56.680-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='arm'/><category scheme='http://www.blogger.com/atom/ns#' term='sarcasm'/><category scheme='http://www.blogger.com/atom/ns#' term='disappointment'/><title type='text'>I finally know when ARM netbooks will come out</title><content type='html'>Hi!&lt;br /&gt;&lt;br /&gt;Before I tell you when they will come out, let me tell you how I figured it out.&lt;br /&gt;&lt;br /&gt;I'm used to having to face &lt;span style="font-weight: bold;"&gt;disappointments&lt;/span&gt;.... disappointment after disappointment. I want to have something? I just can't go out there seeking for it. No, no, no... that'd be the wrong approach. It'd never happen. I have to move slowly towards my goal. As one of my teachers told me in computer engineering classes when talking about the career: &lt;span style="font-style: italic;"&gt;It's resistance race, not a speed one&lt;/span&gt;. Well, that's the approach I have to take with most things in life. And even then, when things happen the way I want, I worry that &lt;a href="http://en.wikipedia.org/wiki/Murphy%27s_law"&gt;Murphy&lt;/a&gt; will somehow learn about how well things are going for me and mess up.&lt;br /&gt;&lt;br /&gt;So, after waiting for over 1 year since I heard for the first time that ARM-based netbooks would come out, I'm still waiting... and I'm fed up of waiting already so I'm ready to give up on them and I'll end up buying an Atom-based one. Disappointment, see?&lt;br /&gt;&lt;br /&gt;And so, when will they come out? A couple of days after I buy my netbook.... as it was supposed to be since day one. I better hurry and buy it so that they come out cause otherwise they will never come out.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1647655709615025819-6230907524959367557?l=maratux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maratux.blogspot.com/feeds/6230907524959367557/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://maratux.blogspot.com/2010/08/i-finally-know-when-arm-netbooks-will.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/6230907524959367557'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/6230907524959367557'/><link rel='alternate' type='text/html' href='http://maratux.blogspot.com/2010/08/i-finally-know-when-arm-netbooks-will.html' title='I finally know when ARM netbooks will come out'/><author><name>Edmundo Carmona</name><uri>http://www.blogger.com/profile/12584230508687563031</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_aeaDXhkMgRg/S_nW9OXlluI/AAAAAAAAACQ/UpHhxQ3kO88/S220/Yo_la_vasca.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1647655709615025819.post-1943637752002396545</id><published>2010-07-31T08:40:00.000-07:00</published><updated>2010-07-31T16:53:55.892-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='opinion'/><category scheme='http://www.blogger.com/atom/ns#' term='liberalism'/><category scheme='http://www.blogger.com/atom/ns#' term='socialism'/><category scheme='http://www.blogger.com/atom/ns#' term='politics'/><category scheme='http://www.blogger.com/atom/ns#' term='RMS'/><title type='text'>RMS is liberal, not a libertarian</title><content type='html'>Hello!&lt;br /&gt;&lt;br /&gt;I was reading the latest &lt;a href="http://blog.reddit.com/2010/07/rms-ama.html"&gt;responses by RMS to 25 very important questions he was asked&lt;/a&gt; recently. It's been linked from the two IT news site I read most often (&lt;a href="http://www.osnews.com/"&gt;OSnews&lt;/a&gt;, &lt;a href="http://www.linuxtoday.com/"&gt;LinuxToday&lt;/a&gt;), so it was like unavoidable to read it.&lt;br /&gt;&lt;br /&gt;While reading, I found a rather interesting statement by RMS: &lt;span class="Apple-style-span" style="font-style: italic;font-family:arial;" &gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;That seems to describe the viewpoint called "laissez-faire" or&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt; "Libertarian".  Where business is concerned, I disagree with it&lt;/span&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt; very throughly, because I'm a Liberal, not a Libertarian.&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;I'm venezuelan, you see? And the things that are going on in Venezuela are despicable. I just can't understand how so may people can still follow a government &lt;span style="font-weight: bold;"&gt;so bad&lt;/span&gt; after 11 years just because 20 years ago a guy &lt;a href="http://www.youtube.com/watch?v=VBUo-pYeVfQ"&gt;showed up on TV in a 30-second clip to say that he was guilty for a failed coup d'état&lt;/a&gt; (whereas all the other &lt;span style="font-style: italic;"&gt;cells&lt;/span&gt; of their movement were successful in getting their tasks done...in other words, the only one &lt;span style="font-weight: bold;"&gt;who actually failed!&lt;/span&gt;). I don't support coup d'états, let's make it clear.&lt;br /&gt;&lt;br /&gt;Venezuela's government has become a theocracy lately. Who's the god? Chávez? Not at all. The god in Venezuela is called 'Socialism' &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;(old-fashioned very far left-wing socialism.. the one where &lt;span style="font-style: italic;"&gt;the leader has to be protected from criticisms of all kinds&lt;/span&gt; and so on ).&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt; The government is certain that socialism is going to solve &lt;span style="font-weight: bold;"&gt;each and every problem&lt;/span&gt; faced by Venezuelans. But when will that happen? There's not such certainty on this point. It's such a shame to see this high-level venezuelan politicians say how socialism is the only way to solve x or y problem... it's offensive, really.&lt;br /&gt;&lt;br /&gt;Sorry for the break and going back to RMS: In Venezuela the government pushed for FLOSS (and I'm thankful for that). And there's people (government followers) that believe that FLOSS is somehow related to 'Socialism'. I bet they'd go as far as to present RMS as one of the nowadays socialist heroes and the Free Software Movement as the the equivalent of Khmer Rough for IT. I'd also bet more than one guy out there is more than willing to paint RMS together with Fidel, Che and Marx (well, they have the guts to have &lt;a href="http://www.codigovenezuela.com/2010/05/la-ultima-cena-bolivariana/"&gt;Simón Bolívar  and Jesus Christ&lt;/a&gt; in that crowd having the last supper, so no surprises) or RMS holding a rifle in his hands (to defend &lt;span style="font-style: italic;"&gt;Revolution&lt;/span&gt;), just like &lt;a href="http://www.noticias24.com/actualidad/noticia/153899/la-controversial-imagen-de-el-nino-jesus-armado-en-el-23-de-enero/"&gt;it's been done with Jesus Christ in walls in Caracas&lt;/a&gt;. I just can't see how something where there's no central control (as FLOSS is) can be somehow related to Socialism (far left-wing, as I said). &lt;span style="font-style: italic;"&gt;Perhaps&lt;/span&gt; the ways of the community that's associated to FLOSS could be somehow related to the &lt;span style="font-style: italic;"&gt;ideal&lt;/span&gt; socialist community's behaviour, but Free Software per se? So it's always reassuring when RMS defines himself as a liberal. No more doubts about that anymore.&lt;br /&gt;&lt;br /&gt;Perhaps Free Software Development model could be related to examples of almost pure liberal environments and used in scientific/social investigation. I think some investigations have already been made, right?&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;PS&lt;/span&gt; I don't have anything against socialism per se. It's a political philosophy and there's nothing wrong (if you ask me) with applying some of its principles in public policy (the ones that have been tried and have had a good result in different places). But when it's used as the &lt;span style="font-weight: bold;"&gt;excuse&lt;/span&gt; to apply bad public policies that have been tried in the past (and failed miserably... both in the past and in their actual instance), that won't leave a good trail for it in the future.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1647655709615025819-1943637752002396545?l=maratux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maratux.blogspot.com/feeds/1943637752002396545/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://maratux.blogspot.com/2010/07/rms-is-liberal-not-libertarian.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/1943637752002396545'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/1943637752002396545'/><link rel='alternate' type='text/html' href='http://maratux.blogspot.com/2010/07/rms-is-liberal-not-libertarian.html' title='RMS is liberal, not a libertarian'/><author><name>Edmundo Carmona</name><uri>http://www.blogger.com/profile/12584230508687563031</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_aeaDXhkMgRg/S_nW9OXlluI/AAAAAAAAACQ/UpHhxQ3kO88/S220/Yo_la_vasca.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1647655709615025819.post-3274462503693383328</id><published>2010-07-20T09:33:00.001-07:00</published><updated>2010-07-20T09:53:52.977-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='/etc/hosts'/><title type='text'>How to (easily) fool your host into thinking a name is mapped to a certain IP address</title><content type='html'>Hi!&lt;br /&gt;&lt;br /&gt;Very recently I've been involved in setting up a site that uses &lt;a href="http://code.google.com/apis/maps/index.html"&gt;Google Maps API&lt;/a&gt;. When you want to use the API you have to create a key that is generated according to the name of the site but, as of now, the DNSs of the name we want to use are not pointing to our hosting. I could use the IP address of the host where the site is, right? Well, no. It's a shared hosting so requests have to be made &lt;span style="font-style: italic;"&gt;by name&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;In this case I have to fool my host into thinking that the name we want to use is mapped to an IP without going through public DNS resolution. I could set up a DNS service just to serve this name and forward everything else but it sounds like an overkill, doesn't it?&lt;br /&gt;&lt;br /&gt;In GNU/Linux (and I'd dare to say in any POSIX compliant OS) there's a simpler way to do this:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;/etc/hosts&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In this file we can map names to IP addresses at will. So this thing I want to do could be performed by adding a single line to my /etc/hosts (not a real example... IP address and name are bogus):&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;85.23.54.87    mydomain.com&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Then I could go to &lt;span style="font-weight: bold;"&gt;http://mydomain.com&lt;/span&gt; and I'd be able to see the site that uses Google Maps, even if the name is not "officially" public.&lt;br /&gt;&lt;br /&gt;Notice this trick (surprise, surprise) also works in Windows (which is POSIX compliant, right?), only the file that has to be edited is &lt;span style="font-family:courier new;"&gt;System32\drivers\etc\hosts&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Additional information:&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;man hosts&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;man nsswitch.conf&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1647655709615025819-3274462503693383328?l=maratux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maratux.blogspot.com/feeds/3274462503693383328/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://maratux.blogspot.com/2010/07/how-to-easily-fool-your-host-into.html#comment-form' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/3274462503693383328'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/3274462503693383328'/><link rel='alternate' type='text/html' href='http://maratux.blogspot.com/2010/07/how-to-easily-fool-your-host-into.html' title='How to (easily) fool your host into thinking a name is mapped to a certain IP address'/><author><name>Edmundo Carmona</name><uri>http://www.blogger.com/profile/12584230508687563031</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_aeaDXhkMgRg/S_nW9OXlluI/AAAAAAAAACQ/UpHhxQ3kO88/S220/Yo_la_vasca.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1647655709615025819.post-5264019256441333493</id><published>2010-07-16T11:05:00.000-07:00</published><updated>2010-07-16T11:11:24.614-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ipv6'/><category scheme='http://www.blogger.com/atom/ns#' term='ipv4'/><category scheme='http://www.blogger.com/atom/ns#' term='networking'/><title type='text'>Is moving to IPv6 all that important, really?</title><content type='html'>I'm reading &lt;a href="http://itexpertvoice.com/home/ready-or-not-your-network-is-moving-to-ipv6/"&gt;this article&lt;/a&gt; where we are told how important it is moving to IPv6 (and I'm not saying it isn't), but I can't help but wonder... will enterprises (for example) really have to move to IPv6? Let's suppose you work in a not so large enterprise where basically the only internet need is to reach internet as a client (which I guess would be most of the needs of a large portion of internet users). Does it make sense to move the whole infrastructure to IPv6? I don't think so. With having the proxy/nat server set up with IPv6 to gain internet access, the inner networking for said enterprise could remain using IPv4, or isn't it?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1647655709615025819-5264019256441333493?l=maratux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maratux.blogspot.com/feeds/5264019256441333493/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://maratux.blogspot.com/2010/07/is-moving-to-ipv6-all-that-important.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/5264019256441333493'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/5264019256441333493'/><link rel='alternate' type='text/html' href='http://maratux.blogspot.com/2010/07/is-moving-to-ipv6-all-that-important.html' title='Is moving to IPv6 all that important, really?'/><author><name>Edmundo Carmona</name><uri>http://www.blogger.com/profile/12584230508687563031</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_aeaDXhkMgRg/S_nW9OXlluI/AAAAAAAAACQ/UpHhxQ3kO88/S220/Yo_la_vasca.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1647655709615025819.post-4840930186578192499</id><published>2010-07-15T14:07:00.000-07:00</published><updated>2010-07-15T14:37:22.183-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='reliability'/><category scheme='http://www.blogger.com/atom/ns#' term='GNU/Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='market share'/><title type='text'>Well over half of the most reliable hosting companies run on Linux</title><content type='html'>Hi!&lt;br /&gt;&lt;br /&gt;I like to follow statistics on market share of browsers, os, web server and so on. They have to be taken with a big grain of salt for sure but they do give us a look at trends more or less accurate (or so I think).&lt;br /&gt;&lt;br /&gt;One of the most interesting statistics I've been following are the ones presented by Netcraft regarding web server market share and OS used by hosting companies. The Web Server market share (Apache Vs IIS and so on) is the one you'll see more often talked about on the web. But the one about reliability is rarely (if ever) talked about... so I'll take a couple of lines to talk about latest statistics that correspond to &lt;a href="http://uptime.netcraft.com/perf/reports/performance/Hosters?orderby=os_name&amp;amp;tn=june_2010"&gt;June'10&lt;/a&gt; puts it like this:&lt;br /&gt;&lt;br /&gt;- Over two thirds (29 out of 42) of the most reliable hosting companies use Linux (would they use GNU along with it?)&lt;br /&gt;- 14.2% use BSD (FreeBSD to be more precise)&lt;br /&gt;- A little less than 10% use Windows&lt;br /&gt;- 3 out of 42 are a big question mark&lt;br /&gt;&lt;br /&gt;How about that? You think the numbers are accurate... or are they skewed?&lt;br /&gt;&lt;br /&gt;PS Did you see the &lt;a href="http://uptime.netcraft.com/up/graph?site=microsoft.com"&gt;uptime chart for microsoft.com&lt;/a&gt;? It's kind of shameful, you know? No wonder it's used by less than 10% of the most reliable hosting providers. :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1647655709615025819-4840930186578192499?l=maratux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maratux.blogspot.com/feeds/4840930186578192499/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://maratux.blogspot.com/2010/07/well-over-half-of-most-reliable-hosting.html#comment-form' title='4 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/4840930186578192499'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/4840930186578192499'/><link rel='alternate' type='text/html' href='http://maratux.blogspot.com/2010/07/well-over-half-of-most-reliable-hosting.html' title='Well over half of the most reliable hosting companies run on Linux'/><author><name>Edmundo Carmona</name><uri>http://www.blogger.com/profile/12584230508687563031</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_aeaDXhkMgRg/S_nW9OXlluI/AAAAAAAAACQ/UpHhxQ3kO88/S220/Yo_la_vasca.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1647655709615025819.post-228346604041831939</id><published>2010-06-27T09:32:00.000-07:00</published><updated>2010-06-27T09:57:22.272-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='pseudotheory'/><category scheme='http://www.blogger.com/atom/ns#' term='logic'/><title type='text'>Definition of XOR for multiple variables.... or my little contribution to theory</title><content type='html'>I was remembering one of my classes from computer engineering when I was just starting it at the university. The definition of the &lt;span style="font-weight: bold;"&gt;XOR&lt;/span&gt; operator.&lt;br /&gt;&lt;br /&gt;One of the ways to define &lt;span style="font-weight: bold;"&gt;XOR&lt;/span&gt; is:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;A ⊕ B = ~A . B + A . ~B&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In other words, one and only one of the variables is true. Great... couldn't be simpler.&lt;br /&gt;&lt;br /&gt;When you consider operators like and and or, you find that you can break these operations into smaller pieces when you are considering more than two variable... like this:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;A + B + C = ( A + B ) + C = A + ( B + C )&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;A . B . C = ( A . B ) . C = A . ( B . C )&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;All is fine and dandy.... but then let's say we find a case of &lt;span style="font-weight: bold;"&gt;exclusive or&lt;/span&gt; where all the variables (more than two) have to be considered at the same time.&lt;br /&gt;&lt;br /&gt;Say you are considering a definition where you have three variables where one and only a single one of them is true to consider the result to be true. If we try the same logic that was applied to &lt;span style="font-weight: bold;"&gt;and&lt;/span&gt; or &lt;span style="font-weight: bold;"&gt;or&lt;/span&gt;, you would end up with this:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;A ⊕ B ⊕ C = A ⊕ ( B ⊕ C )&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;If none of them is true, it will be &lt;span style="font-weight: bold;"&gt;false&lt;/span&gt;. If only one of the variables is true, it will be &lt;span style="font-weight: bold;"&gt;true,&lt;/span&gt; if two of them are true, it will be &lt;span style="font-weight: bold;"&gt;false&lt;/span&gt; but (and here's the problem) if all of them are true, it will be true.... and according to the problem definition, it will be wrong cause one &lt;span style="font-weight: bold;"&gt;and only one&lt;/span&gt; of them had to be true for the result to be true in the end. In other words, all operators have to be considered at the same time to say whether the result is true or not.&lt;br /&gt;&lt;br /&gt;For this case I think there should be a different operator called "&lt;span style="font-weight: bold;"&gt;MultiXOR&lt;/span&gt;" or something like that. The problem with this operator is that there's no easy way to break it into smaller pieces. Here's a shot using a recursive definition:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;x1 m⊕ x2 m⊕ x3 ... m⊕ xn = x1 . ~( x2 + x3 ... + xn ) + ~x1 . ( x2 m⊕ x3 ... m⊕ xn )&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;⊕m&lt;/span&gt; being the &lt;span style="font-weight: bold;"&gt;MultiXOR&lt;/span&gt; operator.&lt;br /&gt;&lt;br /&gt;There you have it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1647655709615025819-228346604041831939?l=maratux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maratux.blogspot.com/feeds/228346604041831939/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://maratux.blogspot.com/2010/06/definition-of-xor-for-multiple.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/228346604041831939'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/228346604041831939'/><link rel='alternate' type='text/html' href='http://maratux.blogspot.com/2010/06/definition-of-xor-for-multiple.html' title='Definition of XOR for multiple variables.... or my little contribution to theory'/><author><name>Edmundo Carmona</name><uri>http://www.blogger.com/profile/12584230508687563031</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_aeaDXhkMgRg/S_nW9OXlluI/AAAAAAAAACQ/UpHhxQ3kO88/S220/Yo_la_vasca.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1647655709615025819.post-9090530366951746546</id><published>2010-05-09T12:14:00.001-07:00</published><updated>2010-05-10T11:21:04.330-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='virtualbox'/><category scheme='http://www.blogger.com/atom/ns#' term='GNU/Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='ssh-server'/><category scheme='http://www.blogger.com/atom/ns#' term='hacking'/><title type='text'>GNU/Linux: Flexibility is the name of the game</title><content type='html'>Some things are meant to happen:&lt;br /&gt;&lt;br /&gt;- We will all eventually die&lt;br /&gt;- Windows gets filled with viruses over time (if we don't consider Windows a virus in itself, of course)&lt;br /&gt;- Chavez will rather be talking crap on TV than taking care of doing a real government that will make people happier... or, at least, safer (in the sense of &lt;span style="font-weight: bold;"&gt;personal&lt;/span&gt; safety).&lt;br /&gt;&lt;br /&gt;You get the idea... those are facts of nature. But there are others where the planets align in such a way that you are able to sense when they will happen a couple of seconds before they do happen. I had one of those last wednesday.&lt;br /&gt;&lt;br /&gt;I was working on a project that had required that I left Bogotá to another city for a week... I was working at a client's installation and was completely isolated from internet. I remember a thought came to my mind: I need to do a backup of all the things I have of the project and send it to my coworkers. 10 seconds later, my laptop was heading to a crash with the floor. Oops! Not good.&lt;br /&gt;&lt;br /&gt;The working day was already closing so I had sent the computer into hibernation but the fall happened before the computer shutdown. I tried to restart it (Windows.... but the GNU/Linux part is coming, don't worry... read on). It would fail to start because of a bad checksum of one of its dlls.&lt;br /&gt;&lt;br /&gt;See, I'm forced to use Windows on my computer at work but I do must of my work on a Virtual Machine that I cheerfully use on VirtualBox. In the virtual machine is where I keep must of the information of the projects.&lt;br /&gt;&lt;br /&gt;Thursday was my last day outside of Bogotá (I was traveling back on friday) so I had to finish all of the tasks I had been assigned to do in 24 hours... with my computer brain-dead, it doesn't look like I'm gonna get a congratulation at the end from my boss.&lt;br /&gt;&lt;br /&gt;I always keep a LiveCD with me just in case things like this happen (on other people's computer, normally). I fire it up and the computer responds normally... so I'm able to work on it... even if I don't have all the information about the project. I check and see that the D partition (where the data is) is usable... at least I get to see many files I'm working with and md5sum them.&lt;br /&gt;&lt;br /&gt;I head back to the hotel cause I gas leaving already and try to connect to the wireless... but I just can't (It's Kubuntu Jaunty, not lucid.... hope it's better with lucid now). I ask for permission to connect to the router through UTP which I'm granted so I head to the lobby and mails start going back and forth about the support questions I have regarding the project. One of my coworkers through mail tells me to backup the files... damn,  why didn't I think of that? I had brought with me a pen drive that came  with the hardware of the project so I copy many of its files but not all of them as they are inside a VirtualBox virtual hard  drive (switches configurations in time... thanks to version control,  plus many other things). I stay there until about 3 or 4 AM and head to bed to try to get some sleep.&lt;br /&gt;&lt;br /&gt;8 AM... Here's when the real hacking begins. I start &lt;span style="font-weight: bold;"&gt;wpa_supplicant&lt;/span&gt; by hand to try to see what's going on with the wireless connection. I see a message about non-wpa networks not being allowed to connect through wpa_supplicant. I think we can try something different in this case: &lt;span style="font-weight: bold;"&gt;/etc/network/interfaces&lt;/span&gt; (on debian based distros). I edit it to include the wireless I'm trying to connnect to and its key... something like:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;iface eth1 inet dhcp&lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wireless-essid this is the wireless name&lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wireless-key this is the key&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Save it and try to connect: &lt;span style="font-weight: bold;"&gt;sudo ifup eth1&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I get connected in a couple of seconds... oh, well.... :-S One less problem. Now the data of the project. I have the home of the virtual machine in partition D of the HD (as a matter of fact, I use the whole virtual HD as the home... there's no partition table... the joys of using GNU/Linux) so I need to be able to start VirtualBox so that I get the information of the project out of the virtual machine. I install openssh-server and VirtualBox from repos. I try to start VirtualBox with the home virtual HD and the LiveCD I'm using.... the boot process begins but VirtualBox dies because of memory issues (I have 1 Gg of RAM and running Kubuntu plus virtual box... I knew it easn't going to hold water). I download DSL and try to run the virtual machine with just 64 MBs of ram in "single" mode (&lt;span style="font-weight: bold;"&gt;dsl single&lt;/span&gt; on the boot menu).... and I'm up in a couple of minutes. I mount the home partition on /mnt inside DSL:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;mount /dev/sda /mnt&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;See I didn't use a device name that includes a partition number? That's because, as I said, I'm using the hole HD as a partition instead of using a &lt;span style="font-style: italic;"&gt;real&lt;/span&gt; partition of the HD. I tar the project and, as you should rememer, I had installed the openssh-server on the liveCD session, right? I sftp it out of the virtual machine inside the liveCD session... and now I'm able to forget about the HD cause I won't need it anymore. Put the project in the Pen Drive and the liveCD + pen drive becomes my new work environment and I move on to do my final work day on site (I did have time to finish all my tasks thanks to GNU/Linux... as usual). Get the congratulations from my boss and go to have a good nigh sleep which I'm already m,issing.&lt;br /&gt;&lt;br /&gt;Conclusion: &lt;span style="font-weight: bold;"&gt;Flexibility is the name of the game&lt;/span&gt;... that's why (among other things) I enjoy using GNU/Linux.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;PS&lt;/span&gt; for those of you wondering how I was able to install software on the liveCD session once I was on-site with no internet connection, should take a look at &lt;a href="http://maratux.blogspot.com/2009/03/give-presentation-use-livecd.html"&gt;this article&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1647655709615025819-9090530366951746546?l=maratux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maratux.blogspot.com/feeds/9090530366951746546/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://maratux.blogspot.com/2010/05/gnulinux-flexibility-is-name-of-game.html#comment-form' title='3 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/9090530366951746546'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/9090530366951746546'/><link rel='alternate' type='text/html' href='http://maratux.blogspot.com/2010/05/gnulinux-flexibility-is-name-of-game.html' title='GNU/Linux: Flexibility is the name of the game'/><author><name>Edmundo Carmona</name><uri>http://www.blogger.com/profile/12584230508687563031</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_aeaDXhkMgRg/S_nW9OXlluI/AAAAAAAAACQ/UpHhxQ3kO88/S220/Yo_la_vasca.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1647655709615025819.post-1712071323467946605</id><published>2010-05-01T23:04:00.000-07:00</published><updated>2010-05-01T23:40:16.269-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><category scheme='http://www.blogger.com/atom/ns#' term='disappointment'/><category scheme='http://www.blogger.com/atom/ns#' term='Panama'/><title type='text'>Panama is on the road to MS hell</title><content type='html'>If &lt;a href="http://www.koreatimes.co.kr/www/news/biz/2009/09/123_52401.html"&gt;South Korea is an example&lt;/a&gt; of what Panama is attempting to do by following the Microsoft guide on how a country can jump into technological advancement, then things sound like it's going to be a bumpy road to get there.&lt;br /&gt;&lt;br /&gt;Apparently &lt;a href="http://translate.google.com/translate?hl=en&amp;amp;sl=es&amp;amp;tl=en&amp;amp;u=http%3A%2F%2Fwww.noticias24.com%2Ftecnologia%2Fnoticia%2F3050%2Fpresidente-de-panama-firma-acuerdo-con-microsoft%2F"&gt;Panama's President has signed a treaty with Microsoft&lt;/a&gt; to push technological development in the centralamerican country.&lt;br /&gt;&lt;br /&gt;And what's the recipe?&lt;br /&gt;- A computer for each and every one of the students of Panama (I'm wondering if they will get to use other things what were not Windows and other Microsoft stuff)&lt;br /&gt;- You will be able to do all things government related on-line (wanna bet that it will be IE-only?)&lt;br /&gt;- Plus other things.&lt;br /&gt;&lt;br /&gt;Feels so nice to see that governments still see Microsoft as the cornerstone of technology (or even worse, sell out).... what a shame!&lt;br /&gt;&lt;br /&gt;Too depressing, really to keep on writing about.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1647655709615025819-1712071323467946605?l=maratux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maratux.blogspot.com/feeds/1712071323467946605/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://maratux.blogspot.com/2010/05/panama-is-on-road-to-ms-hell.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/1712071323467946605'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/1712071323467946605'/><link rel='alternate' type='text/html' href='http://maratux.blogspot.com/2010/05/panama-is-on-road-to-ms-hell.html' title='Panama is on the road to MS hell'/><author><name>Edmundo Carmona</name><uri>http://www.blogger.com/profile/12584230508687563031</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_aeaDXhkMgRg/S_nW9OXlluI/AAAAAAAAACQ/UpHhxQ3kO88/S220/Yo_la_vasca.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1647655709615025819.post-4482813039535422334</id><published>2010-04-10T08:58:00.000-07:00</published><updated>2010-04-10T09:20:23.127-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='licensing'/><category scheme='http://www.blogger.com/atom/ns#' term='gpl'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>How does GPL licensing affect projects that don't involve linking/compiling?</title><content type='html'>This is a question that I've been trying to figure out for a while already.&lt;br /&gt;&lt;br /&gt;I'm working on a php project that I will distribute (or whatever word you want to use) under the terms of the &lt;a href="http://en.wikipedia.org/wiki/Affero_General_Public_License"&gt;Affero GPLv3&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Now I included a piece of code (&lt;a href="http://simplehtmldom.sourceforge.net/"&gt;PHP Simple HTML DOM Parser&lt;/a&gt;) that's not under that license (MIT kind of license, apparently) and I started wondering how GPL code gets affected by the code I included... I mean, it's already settled matter that you become a GPL sinner (so to speak) not if you choose to use GPL code mixed with other (proprietary, for example) code.... the sin happens at the moment of &lt;span style="font-weight: bold;"&gt;redistributing&lt;/span&gt; (or &lt;span style="font-style: italic;"&gt;propagating&lt;/span&gt; or &lt;span style="font-style: italic;"&gt;reciprocating&lt;/span&gt; or whatever it's called now) the binaries resulting from linking GPL code with code licensed/released under other terms.&lt;br /&gt;&lt;br /&gt;But how is it handled when there's no linking? At least no linking to redistribute... think of projects made in PHP or Python, where no binaries are released.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1647655709615025819-4482813039535422334?l=maratux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maratux.blogspot.com/feeds/4482813039535422334/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://maratux.blogspot.com/2010/04/how-does-gpl-licensing-affect-projects.html#comment-form' title='6 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/4482813039535422334'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/4482813039535422334'/><link rel='alternate' type='text/html' href='http://maratux.blogspot.com/2010/04/how-does-gpl-licensing-affect-projects.html' title='How does GPL licensing affect projects that don&apos;t involve linking/compiling?'/><author><name>Edmundo Carmona</name><uri>http://www.blogger.com/profile/12584230508687563031</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_aeaDXhkMgRg/S_nW9OXlluI/AAAAAAAAACQ/UpHhxQ3kO88/S220/Yo_la_vasca.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1647655709615025819.post-8602690783650724550</id><published>2010-04-01T07:58:00.000-07:00</published><updated>2010-04-01T08:04:30.196-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sco'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='kernel'/><title type='text'>SCO sends patches to the linux kernel</title><content type='html'>In a move that will surely leave many in the FLOSS community shocked, SCO, the company that just three days ago was claiming that they and not Novell owned UNIX's copyright and that the Linux community were a bunch of free loaders, after getting their claims rejected in a court of law have decided, in a classical "in you can't beat them, join them" fashion, to start sending patches to the linux kernel.&lt;br /&gt;&lt;br /&gt;Here's a sample taken from their first submission (from init/main.c):&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;4c4,7&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(204, 0, 0);"&gt;&lt;  *  Copyright (C) 1991, 1992  Linus Torvalds&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;---&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(0, 0, 153);"&gt;&gt;  *  Copyright (C) 2010 SCO&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(0, 0, 153);"&gt;&gt;  *&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(0, 0, 153);"&gt;&gt;  *  This file is released by SCO under terms that forbid it to be part of any&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(0, 0, 153);"&gt;&gt;  *  project released under the GPL (as the GPL is famous for being inconstitutional)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Who would have believed it?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1647655709615025819-8602690783650724550?l=maratux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maratux.blogspot.com/feeds/8602690783650724550/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://maratux.blogspot.com/2010/04/sco-sends-patches-to-linux-kernel.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/8602690783650724550'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/8602690783650724550'/><link rel='alternate' type='text/html' href='http://maratux.blogspot.com/2010/04/sco-sends-patches-to-linux-kernel.html' title='SCO sends patches to the linux kernel'/><author><name>Edmundo Carmona</name><uri>http://www.blogger.com/profile/12584230508687563031</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_aeaDXhkMgRg/S_nW9OXlluI/AAAAAAAAACQ/UpHhxQ3kO88/S220/Yo_la_vasca.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1647655709615025819.post-5534642395415230343</id><published>2010-03-27T11:04:00.000-07:00</published><updated>2010-03-27T12:11:59.388-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='routing'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='networking'/><title type='text'>Networking is a little more than IPs and netmasks</title><content type='html'>Hi!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Case one&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Very recently I was asking this questions (which is &lt;a href="http://www.linuxquestions.org/questions/linux-networking-3/netfilter-snmp-filters-797317/"&gt;still open&lt;/a&gt;) at &lt;a href="http://www.linuxquestions.org/"&gt;www.linuxquestions.org&lt;/a&gt; (the first place I hit when I have a question regarding linux or gnu, by the way) and took a brief look at the questions open on the networking forum and I hit &lt;a href="http://www.linuxquestions.org/questions/linux-networking-3/iptables-how-to-redirect-locally-generated-packets-to-a-remote-server-797173/"&gt;this beauty&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;It's a guy who has set up &lt;span style="font-weight: bold;"&gt;DNAT&lt;/span&gt; on &lt;span style="font-weight: bold;"&gt;netfilter&lt;/span&gt; to forward packets that are sent to one host to another server that does the real work. Think of it as a  proxy. In his example, he wanted to forward packets that arrive at his host on port 3306 to port 3197 on another host  (let's use IP a.a.a.a). So, he set up a simple rule on (nat) &lt;span style="font-weight: bold;"&gt;PREROUTING&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;$ iptables -t nat -A PREROUTING -p tcp --dport 3306 -j DNAT --to a.a.a.a:3197&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;What this rule is doing is telling the kernel to change the destination IP address of any packet that arrives at his host through any network interface to IP address a.a.a.a (reachable from his server, maybe not from the host that originated said packages) and the destination port to 3197 (the port where the real service is working on the real server). When the routing decision is made on those packages a while later the destination IP address will be a.a.a.a and so the packets are sent to the real server. Source address/port of those packages remains the same (unless a little more &lt;span style="font-style: italic;"&gt;natting&lt;/span&gt; is done, of course). Nice and dandy.&lt;br /&gt;&lt;br /&gt;Then, when the packets arrive at server a.a.a.a port 3197 the response will be sent to the originating host/port and the "networking cycle is complete". A word of caution: this works if the packets that are sent back from the real server go through the same host that is doing the natting. If the real server is sending the packets to the originating host through &lt;span style="font-weight: bold;"&gt;another host&lt;/span&gt;, the trick is broken as packets arriving from a.a.a.a:3197 to the originating host don't match the IP:port he sent traffic to, so the connection is not established. This can be solved by SNATting this same traffic on the server that does that DNAT before the traffic is sent to the real server (making sure traffic will come back through it on the way back).&lt;br /&gt;&lt;br /&gt;He tests it and it's working. Traffic is reaching the real server and going back to clients.&lt;br /&gt;&lt;br /&gt;He then tried to replicate that same behavior but using localhost instead. So he added a rule that looks very much the same on OUTPUT, like this:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;$ iptables - t nat -A OUTPUT -p tcp --dport 3306 -i lo -j DNAT --to a.a.a.a:3197&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;It should make it, shouldn't it? Try telnet to localhost port 3306 and nothing happens. No connection is established. Doesn't work. But why? Using a sniffer it's seen that when the -t nat OUTPUT rule is not set, traffic to localhost port 3306 is moving through interface lo, nothing wrong with that, but when the rule is set up again, traffic gets lost. It doesn't go through lo or any other network address.... so the IP stack is descarding it. Weird. Counter for the -t nat OUTPUT rule is increasing so it's doing its job as required... still, no traffic.&lt;br /&gt;&lt;br /&gt;So what's going on? Let's think of what's going on with the traffic. When it reaches -t nat OUTPUT, this packets have source address 127.0.0.1 port whatever, destination address 127.0.0.1 port 3306. Then, after the rule is applied, source address is 127.0.0.1 port whatever, destination host is a.a.a.a port 3197. As the packet is changed in nat, a second routing decision is made on it. As the destination host is a.a.a.a, traffic should be sent to the real server but IP source address is 127.0.0.1. If there were a DNAT rule on POSTROUTING, it should take care of this problem (there was a MASQUERADE rule in place, so no problem). The problem (which is a little buried in the networking stack of linux) is that by the time the second routing decision is made, the source IP address is not &lt;span style="font-style: italic;"&gt;consistent&lt;/span&gt;. Let me show you my routing table:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;$ ip route show&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;10.0.2.0/24 dev eth0  proto kernel  scope link  src 10.0.2.15  metric 1 &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;169.254.0.0/16 dev eth0  scope link  metric 1000 &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;default via 10.0.2.2 dev eth0  proto static &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Nothing about 127.0.0.1. Why is that? It's because this is set up at another routing table (linux supports multiple routing tables, in case you didn't know). You can see the routing tables available by taking a look at file /etc/iproute2/rt_tables. I have default, main and local. Let's take a look at them:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;$ ip route show table default&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;$ ip route show table main&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;10.0.2.0/24 dev eth0  proto kernel  scope link  src 10.0.2.15  metric 1 &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;169.254.0.0/16 dev eth0  scope link  metric 1000 &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;default via 10.0.2.2 dev eth0  proto static &lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;$ ip route show table local&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;broadcast 127.255.255.255 dev lo  proto kernel  scope link  src 127.0.0.1 &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;broadcast 10.0.2.0 dev eth0  proto kernel  scope link  src 10.0.2.15 &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;local 10.0.2.15 dev eth0  proto kernel  scope host  src 10.0.2.15 &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;broadcast 10.0.2.255 dev eth0  proto kernel  scope link  src 10.0.2.15 &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;broadcast 127.0.0.0 dev lo  proto kernel  scope link  src 127.0.0.1 &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;local 127.0.0.1 dev lo  proto kernel  scope host  src 127.0.0.1 &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;local 127.0.0.0/8 dev lo  proto kernel  scope host  src 127.0.0.1 &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;And this is where things start to make sense. If you see carefully, with src address 127.0.0.1, all routes there have a local scope, which means that they are not used outside of the scope of the actual host. In our case the dest address is a.a.a.a and with src address 127.0.0.1, it's impossible to route this traffic... so it gets dumped.&lt;br /&gt;&lt;br /&gt;But it fails because we attempted on address 127.0.0.1, but if you tried to telnet to the ip address of your intranet address instead, the test would be successful (our traffic will go through interface lo, the kernel can figure that out, and so the filter will apply). The src address will be that same address and the DNAT will change dest address to a.a.a.a and the trick will work.&lt;br /&gt;&lt;br /&gt;Hope you find this trick useful.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Case two&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Think of a situation where you have two internet connections through two different ISPs. You get two ethernet cables from them, they provide you with two static addresses/netmasks/default gateways/dns etc.&lt;br /&gt;&lt;br /&gt;You connect each cable to a different box, set up networking and everything works like a charm.&lt;br /&gt;&lt;br /&gt;Now, you want to get a little wacky and connect those two cables to a single switch (layer two) and connect those two boxes to the switch as well.&lt;br /&gt;&lt;br /&gt;Connections should work fine, right? And they do... but then, what happens if you try to send traffic between those two boxes? Say, from box A you ping box B. In this case box A checks it's routing table and realizes there's no network defined for such host so it goes through its gateway. ARP request to get the mac of its gateway, gateway responds with its mac address, packets go out with mac address of the gateway, src address A, dest addres B and the traffic is heading to internet through one ISP. Then traffic comes through the other ISP to box B, box B gets it. It's going to respond to host A, there's no route for it, sends it through its gateway, goes through same ISP that sent the request to host B, comes back through first ISP to host A and we see a reply on host A. Great.&lt;br /&gt;&lt;br /&gt;But wasn't that too long a trip to reach a host that is two ethernet connections away from host A? There should be a way to make the trip shorter, right? And sure there is. You can set up routes to be reached through gateways (layer 3 routing) but also through devices (layer two routing). How does it work?&lt;br /&gt;&lt;br /&gt;Let's add a layer two route for host B on host A:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;ip route add b.b.b.b dev ethx&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;ethx being the interface we use to connect to switch. And that's it.&lt;br /&gt;&lt;br /&gt;Now what happens when host A tries to ping B? Now, there's a route to reach B through interface ethx so an ARP request for IP b.b.b.b is sent through said interface. Traffic is sent to the switch. The switch broadcasts this ARP request and reaches B, B responds to the ARP request with its mac address. A learns Bs mac address and sends traffic to it. Source IP address is A's, dest address is Bs, dest mac address is Bs. B is able to see this traffic (it's got its mac as destination) and sees As ping request. Now to respond to A it checks its routing table. Remember you didn't change anything on B? Well, there's no route to A so have to go through gateway. Traffic is sent to gateway, ISPs and then it reaches A.&lt;br /&gt;&lt;br /&gt;To get the trick working to avoid using ISPs at all, you have to do the same thing on B:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;ip route add a.a.a.a dev ethx &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;ethx being the interface B uses to connect to switches.&lt;br /&gt;&lt;br /&gt;After not writing for so long, I had to have something interesting to write about, right?&lt;br /&gt;&lt;br /&gt;Have fun!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1647655709615025819-5534642395415230343?l=maratux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maratux.blogspot.com/feeds/5534642395415230343/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://maratux.blogspot.com/2010/03/networking-is-little-more-than-ips-and.html#comment-form' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/5534642395415230343'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/5534642395415230343'/><link rel='alternate' type='text/html' href='http://maratux.blogspot.com/2010/03/networking-is-little-more-than-ips-and.html' title='Networking is a little more than IPs and netmasks'/><author><name>Edmundo Carmona</name><uri>http://www.blogger.com/profile/12584230508687563031</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_aeaDXhkMgRg/S_nW9OXlluI/AAAAAAAAACQ/UpHhxQ3kO88/S220/Yo_la_vasca.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1647655709615025819.post-7199779603007075741</id><published>2010-02-14T17:09:00.000-08:00</published><updated>2010-02-14T17:16:21.454-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tricks'/><category scheme='http://www.blogger.com/atom/ns#' term='space handling'/><category scheme='http://www.blogger.com/atom/ns#' term='hacks'/><category scheme='http://www.blogger.com/atom/ns#' term='detecting space consumption'/><category scheme='http://www.blogger.com/atom/ns#' term='process handling'/><category scheme='http://www.blogger.com/atom/ns#' term='find'/><category scheme='http://www.blogger.com/atom/ns#' term='GNU/Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='diff'/><title type='text'>Space is being consumed too fast? Find where!</title><content type='html'>You've found hat some process (don't know which) is eating up too much space too fast in one of your partitions and don't know where? Just yesterday I found a simple way to figure it out.&lt;br /&gt;&lt;br /&gt;Suppose you want to check the partition where you have /home (which is in a separate partition from /, right?) where space is been eaten up too fast.&lt;br /&gt;&lt;br /&gt;Run this simple command:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;find /home -mount -type f -exec ls -s {} ';' &gt; list_of_files1.txt&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;After it finishes running, wait for a little while (30 seconds, a minute, your call) and run the same thing outputting to a different file:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;find /home -mount -type f -exec ls -s {} ';' &gt; list_of_files2.txt&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;To find out what's going on, run a simple &lt;span style="font-weight: bold;"&gt;diff&lt;/span&gt; (a tool present in I guess every GNU/Linux system... if not unix) between both files and you should be able to see what's going on.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;diff list_of_files1.txt list_of_files2.txt&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;You're welcome!&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1647655709615025819-7199779603007075741?l=maratux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maratux.blogspot.com/feeds/7199779603007075741/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://maratux.blogspot.com/2010/02/space-is-being-consumed-too-fast.html#comment-form' title='5 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/7199779603007075741'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/7199779603007075741'/><link rel='alternate' type='text/html' href='http://maratux.blogspot.com/2010/02/space-is-being-consumed-too-fast.html' title='Space is being consumed too fast? Find where!'/><author><name>Edmundo Carmona</name><uri>http://www.blogger.com/profile/12584230508687563031</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_aeaDXhkMgRg/S_nW9OXlluI/AAAAAAAAACQ/UpHhxQ3kO88/S220/Yo_la_vasca.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1647655709615025819.post-4771581447212483426</id><published>2010-02-04T05:49:00.001-08:00</published><updated>2010-02-04T05:59:57.740-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='arm'/><title type='text'>ARM will fly without windows? Then bring it on!</title><content type='html'>I was reading yesterday &lt;a href="http://www.pcpro.co.uk/news/355246/arm-our-netbooks-will-fly-with-or-without-windows"&gt;this article&lt;/a&gt; of an interview to Warren East, one of the top guys at ARM.&lt;br /&gt;&lt;br /&gt;He goes on about how ARM will succeed with or without Windows (not ME) supporting it once it starts being pumped into markets in the shape of a new architecture for netbooks.&lt;br /&gt;&lt;br /&gt;I've being begging for this beauties to come out for months already. Last year I saw forecasts saying how thew would start selling for roughly 200US$ and coming out on the 3rd quarter 2009... then the 4th... we are already past the 1st month of the 1st quarter of &lt;span style="font-weight: bold;"&gt;2010&lt;/span&gt; and only prototypes are &lt;a href="http://www.engadget.com/2010/01/05/marvell-shows-off-an-odm-smartbook-thinner-than-strict-decency-p/"&gt;what I've seen&lt;/a&gt;. I'm already fed up with it.&lt;br /&gt;&lt;br /&gt;So, Warren, please... instead of forecasting doom for Windows if they don't support ARM (and I hope both things &lt;span style="font-weight: bold;"&gt;do&lt;/span&gt; happen), tell me when the machines will finally be out, who will put them out and the prices. I've already had my fare share of predictions about ARM netbooks. I want to actually see them and buy them (just 5 of them for me... I want to see the faces of my brother and sister when they get theirs being unable to run Windows on them).&lt;br /&gt;&lt;br /&gt;Thanks in advance!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1647655709615025819-4771581447212483426?l=maratux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maratux.blogspot.com/feeds/4771581447212483426/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://maratux.blogspot.com/2010/02/arm-will-fly-without-windows-then-bring.html#comment-form' title='10 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/4771581447212483426'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/4771581447212483426'/><link rel='alternate' type='text/html' href='http://maratux.blogspot.com/2010/02/arm-will-fly-without-windows-then-bring.html' title='ARM will fly without windows? Then bring it on!'/><author><name>Edmundo Carmona</name><uri>http://www.blogger.com/profile/12584230508687563031</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_aeaDXhkMgRg/S_nW9OXlluI/AAAAAAAAACQ/UpHhxQ3kO88/S220/Yo_la_vasca.jpg'/></author><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1647655709615025819.post-4484795966873924355</id><published>2010-01-30T08:48:00.000-08:00</published><updated>2010-01-30T09:26:59.981-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='opinion'/><category scheme='http://www.blogger.com/atom/ns#' term='gnu'/><category scheme='http://www.blogger.com/atom/ns#' term='debate'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='thanks'/><category scheme='http://www.blogger.com/atom/ns#' term='GNU/Linux'/><title type='text'>There's nothing wrong with being thankful (or why I say GNU/Linux)</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_aeaDXhkMgRg/S2Rq48W59gI/AAAAAAAAACI/t4I9fan1gT4/s1600-h/Tomas+Debian.jpeg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 240px; height: 320px;" src="http://3.bp.blogspot.com/_aeaDXhkMgRg/S2Rq48W59gI/AAAAAAAAACI/t4I9fan1gT4/s320/Tomas+Debian.jpeg" alt="" id="BLOGGER_PHOTO_ID_5432584577023079938" border="0" /&gt;&lt;/a&gt;When I was a little kid (not that I'm too big, anyway... 5'10/~150lbs or 1,75/74Ks.... whatever you get better) I was taught to be thankful for things that I get. There's nothing wrong with saying "thank you" when someone has fulfilled one's need/wish for something... even more if the person who fulfilled it was not in any way forced to do it for us.&lt;br /&gt;&lt;br /&gt;In the FLOSS community there's this old argument about whether we should call the OS that people usually call "linux" as GNU/Linux or plain linux.&lt;br /&gt;&lt;br /&gt;The ones who defend "&lt;span style="font-style: italic;"&gt;plain linux&lt;/span&gt;" say it's out of simplicity, being more catchy,  undoubtfully easier to pronounce than GNU (at least in english... in spanish we convert GN to Ñ... or at least, I do it), and a long etc.&lt;br /&gt;&lt;br /&gt;But there are many sides to this story that, at least to me, don't add up.&lt;br /&gt;&lt;br /&gt;For example, simplicity for newcomers: What about when you have a distro that doesn't have Linux inside of it? Say, Debian's &lt;a href="http://www.debian.org/ports/hurd/"&gt;hurd&lt;/a&gt; or &lt;a href="http://www.debian.org/ports/kfreebsd-gnu/"&gt;kFreeBSD&lt;/a&gt; or &lt;a href="http://www.debian.org/ports/netbsd/"&gt;NetBSD&lt;/a&gt; ports? Those are distros, but Linux is not to be found inside cause it (the kernel) has been replaced for another kernel. What are we gonna call them? Debian &lt;span style="font-weight: bold;"&gt;Non-Linux&lt;/span&gt;?  Go figure how you will explain that to newcomers ("sure... it's Debian Linux... but it has &lt;span style="font-weight: bold;"&gt;no linux&lt;/span&gt;... yet &lt;span style="font-weight: bold;"&gt;it is&lt;/span&gt; linux". Priceless).&lt;br /&gt;&lt;br /&gt;Some people have said that it's out of Stallman's big ego that he wants everybody to call it GNU. Well, I think Stallman hits the nail (at least on the funny part) when he says that "&lt;span style="font-style: italic;"&gt;sure... and that's why I ask people to call it Stallmanix&lt;/span&gt;". So I think it's not out of ego...  but maybe if he had named the OS Stallmanix in the first place, we wouldn't be having this argument as it (too) &lt;span style="font-weight: bold;"&gt;is&lt;/span&gt; more catchy than GNU. :-)&lt;br /&gt;&lt;br /&gt;Then we have the people who say that then we should call distros Kubuntu &lt;span style="font-weight: bold;"&gt;KDE/X/GNU/Linux&lt;/span&gt;, for example... but I think there's a line where we can say that KDE/X/GNU/Linux is just too much and GNU/Linux is ok: The minimum usable machine by a user would require GNU/Linux (I can work perfectly well on a GNU/Linux computer with bash and no KDE/X, so that makes the basic machine for me) while a machine with just linux (the kernel) would be pretty pointless as there's laking a system so that I could interact with it (the shell of the OS, at least).&lt;br /&gt;&lt;br /&gt;Also I don't like to call things something they are not. For example, I wouldn't say "I like driving my wife's V4 16-valve 1.4 engine to work" as just the engine doesn't make up the whole car (yeah right, like she actually allows me to drive her car :-)). Of course, you can hear people bragging about their &lt;span style="font-weight: bold;"&gt;5.0s&lt;/span&gt;, but sure as hell these people actually want to talk about &lt;span style="font-weight: bold;"&gt;_the engine_&lt;/span&gt;, not the whole car.&lt;br /&gt;&lt;br /&gt;Linux (the kernel) is quite a nice thing. I'm still overwhelmed by its capability to run on the tiniest machines and the biggest supercomputers as well. How it's capable of running on all this different architectures, how you can basically hack it whatever ways you fill like to fit whatever need you have. To all of that (and more), I take my hat off and fill &lt;span style="font-weight: bold;"&gt;humble&lt;/span&gt; (and, trust me, that's not something I can say of many things or people:-)). But I think (that's me, personally, I'm not asking anyone to do something agains their will) GNU deserves being named alongside linux.&lt;br /&gt;&lt;br /&gt;I'm thankful to all the people who have helped develop GNU (and linux) into what it is and so I call it GNU/Linux just like, though I use Kubuntu, I proudly wear a Debian cap (cause I know where Etcbuntu gets a lot of what makes it what it is)... and you will pry it off my cold dead hands.&lt;br /&gt;&lt;br /&gt;And finally, to bring this chapter to an end from where it started: &lt;span style="font-weight: bold;"&gt;Thank you!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;PS The cat in the picture is Tomás (after Tom from &lt;a href="http://en.wikipedia.org/wiki/Tom_and_Jerry"&gt;&lt;span style="font-weight: bold;"&gt;Tom &amp;amp; Jerry&lt;/span&gt;&lt;/a&gt;), my wife's pet.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1647655709615025819-4484795966873924355?l=maratux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maratux.blogspot.com/feeds/4484795966873924355/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://maratux.blogspot.com/2010/01/theres-nothing-wrong-with-being.html#comment-form' title='3 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/4484795966873924355'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/4484795966873924355'/><link rel='alternate' type='text/html' href='http://maratux.blogspot.com/2010/01/theres-nothing-wrong-with-being.html' title='There&apos;s nothing wrong with being thankful (or why I say GNU/Linux)'/><author><name>Edmundo Carmona</name><uri>http://www.blogger.com/profile/12584230508687563031</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_aeaDXhkMgRg/S_nW9OXlluI/AAAAAAAAACQ/UpHhxQ3kO88/S220/Yo_la_vasca.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_aeaDXhkMgRg/S2Rq48W59gI/AAAAAAAAACI/t4I9fan1gT4/s72-c/Tomas+Debian.jpeg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1647655709615025819.post-46849170798404562</id><published>2010-01-22T14:21:00.000-08:00</published><updated>2010-01-22T15:07:26.416-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux for the masses'/><category scheme='http://www.blogger.com/atom/ns#' term='firefox'/><category scheme='http://www.blogger.com/atom/ns#' term='mass market'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='GNU/Linux'/><title type='text'>FF3.6 on ubuntu is not a reason why GNU/Linux is not ready for the mass-market</title><content type='html'>Hi!&lt;br /&gt;&lt;br /&gt;I have become quite a replicator lately, right?&lt;br /&gt;&lt;br /&gt;Well, yet &lt;a href="http://blogs.computerworld.com/15443/talling_firefox_3_6_one_more_reason_linux_isnt_ready_for_the_prime_time_mass_market"&gt;another article&lt;/a&gt; from an IT journalist/commentator I have to disagree with.&lt;br /&gt;&lt;br /&gt;In the article the writer states that it's too difficult to get FF3.6 installed on Ubuntu and that it's reason enough to call GNU/Linux dead on its tracks to get to the mass market. That sounds compelling at first sight.... but&lt;br /&gt;&lt;br /&gt;First: I bet the users of software that aren't quite up to date and that make up those huge botnets differ with the writer of the article. They all make up a part of the mass market as we know it, don't they? So it's OK to have &lt;span style="font-weight: bold;"&gt;outdated*&lt;/span&gt; software, isn't it? (I know, I know... it's not OK... but we are talking about mass market here, so go with the flow!).&lt;br /&gt;&lt;br /&gt;Second: Remember that the way software is installed/maintained in the GNU/Linux world is  completely different from Windows'. In Windows, as the writer said, you grab the software from internet (hopefully form a reliable location.... but we know that's not always the case, is it?), click on it, maybe will have to restart your computer.... a couple times (why the hell installing Adobe Reader requires you to reboot Windows? Is Adobe Reader the equivalent for Windows of glibc or something?) and then finally you are done with the software. In GNU/Linux, at least in Ubuntu (and every other distro that prides itself of being such), you &lt;span style="font-weight: bold;"&gt;have to wait&lt;/span&gt; for the maintainers of Ubuntu to review software to make it available. That's right.... they do that job &lt;span style="font-weight: bold;"&gt;for you&lt;/span&gt;, the user.  And it's not just firefox that they maintain... they take care of thousands (literally) pieces of software to make them fit together and not mess with each other when you installed them on your beloved Ubuntu-powered box. And that not only sounds like a dauntin task... it &lt;span style="font-weight: bold;"&gt;really&lt;/span&gt; is. And what would be the equivalent of that in the Windows world? It would be like waiting for Microsoft to review the software when it's made available by its developers (have you seen how long it takes Microsoft to work on &lt;span style="font-style: italic;"&gt;their own&lt;/span&gt; bugs? How long would it take them if they had to review &lt;span style="font-weight: bold;"&gt;other people's&lt;/span&gt; software as well?) and make it available to you through the centralized software they provided Windows with so that their beloved customers don't have to go leaping from site to site to grab the latest piece of malware-infested piece of software... oh, but there's no such thing for Windows, is there? Such a shame, you know.&lt;br /&gt;&lt;br /&gt;So, in other words, FF3.6 is not made available in the &lt;span style="font-style: italic;"&gt;stable&lt;/span&gt; Ubuntu release because it's going to be a major work to get it &lt;span style="font-style: italic;"&gt;merged&lt;/span&gt;, but that doesn't mean there is no way to get it &lt;span style="font-style: italic;"&gt;packaged&lt;/span&gt; so that our dear writer can use it. It didn't take me too long to find &lt;span style="font-style: italic;"&gt;unstable/unsupported&lt;/span&gt; repos for FF3.6 (probably its stable enough, don't know for sure) for Ubuntu:&lt;br /&gt;&lt;br /&gt;&lt;a href="https://launchpad.net/%7Eubuntu-mozilla-daily/+archive/ppa"&gt;https://launchpad.net/~ubuntu-mozilla-daily/+archive/ppa&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I'll personally wait for Ubuntu to make 3.6 available through their standard  repositories... which I hope will happen for Jaunty... but maybe they  won't and will make it available for lynx only... will have to wait and  see.&lt;br /&gt;&lt;br /&gt;Just so that it's crystal clear. This article doesn't state that GNU/Linux is ready for the mass market. I'm just stating that the writer-of-the-article's difficulty to install FF3.6 on Ubuntu is not an excuse to dismiss GNU/Linux's readiness for the mass market. Also, I do think GNU/Linux is ready for the mass market, but that's another quite different story.&lt;br /&gt;&lt;br /&gt;That's it.&lt;br /&gt;&lt;br /&gt;* FF 3.5 is &lt;span style="font-weight: bold;"&gt;not&lt;/span&gt; outdated, by the way. It will be maintained (at least, security-wise, by the Mozilla foundation for a while).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1647655709615025819-46849170798404562?l=maratux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maratux.blogspot.com/feeds/46849170798404562/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://maratux.blogspot.com/2010/01/ff36-on-ubuntu-is-not-reason-why.html#comment-form' title='12 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/46849170798404562'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/46849170798404562'/><link rel='alternate' type='text/html' href='http://maratux.blogspot.com/2010/01/ff36-on-ubuntu-is-not-reason-why.html' title='FF3.6 on ubuntu is not a reason why GNU/Linux is not ready for the mass-market'/><author><name>Edmundo Carmona</name><uri>http://www.blogger.com/profile/12584230508687563031</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_aeaDXhkMgRg/S_nW9OXlluI/AAAAAAAAACQ/UpHhxQ3kO88/S220/Yo_la_vasca.jpg'/></author><thr:total>12</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1647655709615025819.post-2250198748395060093</id><published>2010-01-21T10:25:00.000-08:00</published><updated>2010-01-21T10:43:45.600-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='grub'/><category scheme='http://www.blogger.com/atom/ns#' term='comments'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><category scheme='http://www.blogger.com/atom/ns#' term='anger'/><title type='text'>How can people blame on GRUB if Windows doesn't like another bootloader?</title><content type='html'>I was reading &lt;a href="http://community.zdnet.co.uk/blog/0,1000000567,10014915o-2000498448b,00.htm"&gt;this very interesting article&lt;/a&gt; on a guy who noticed that when going from Vista SP1 to SP2 windows would almost finish the process (taking quite a while, apparently) and then it would report an unknown error and rollback all the things that it had done (wasting CPU and real time, by the way). After seeing the problem show up a couple of times the person realized that grub was there in the MBR. Replaced the MBR with Windows', tried to update it it was done. Great.&lt;br /&gt;&lt;br /&gt;So.... a very interesting read, I have to say. Then I hit the comments and what do we find? None other than people saying that it's &lt;span style="font-weight: bold;"&gt;grub's fault&lt;/span&gt;. Say what?&lt;br /&gt;&lt;br /&gt;What's there for Windows to see that belongs to grub? Not much, really. The &lt;span style="font-style: italic;"&gt;first phase bootloader&lt;/span&gt;, located in the MBR, in other words it's comprised within the first 512 bytes of the HD. The second phase bootloader (which is called from the first phase bootloader) is located somewhere within the GNU/Linux partitions set up at the box. So, the only thing from GRUB that Windows can actually see (unless Windows is capable of reading out of the box ext2, ext3, ext4 and the other gazillion FS that we have available in GNU/Linux) is the first phase bootloader.&lt;br /&gt;&lt;br /&gt;In my opinion, it's something as simple as old Microsoft's motto in action: "&lt;span style="font-weight: bold;"&gt;It's the Microsoft way or the highway&lt;/span&gt;". The update process is taking a look at the MBR and notices that's it's not Windows' bootloader. "&lt;span style="font-style: italic;"&gt;Who in their right mind would dare install something on the MBR that's not made by Microsoft?&lt;/span&gt;" I bet they think there at Redmond. End of the game,  let's stop the update process... &lt;span style="font-weight: bold;"&gt;_and_&lt;/span&gt; (specially) not tell the user what's going on. It wouldn't be as insulting if at least they would suggest the user to replace the MBR with Microsoft's tools. You know, it can be replaced with GRUB a couple of minutes later after shutting Windows down after the upgrade process is done... but what do we expect from a OS that was made to resemble black magic, anyway?&lt;br /&gt;&lt;br /&gt;As I have already said before:&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Windows equals esotericism&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;GNU/Linux equals determinism&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1647655709615025819-2250198748395060093?l=maratux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maratux.blogspot.com/feeds/2250198748395060093/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://maratux.blogspot.com/2010/01/how-can-people-blame-on-grub-if-windows.html#comment-form' title='5 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/2250198748395060093'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/2250198748395060093'/><link rel='alternate' type='text/html' href='http://maratux.blogspot.com/2010/01/how-can-people-blame-on-grub-if-windows.html' title='How can people blame on GRUB if Windows doesn&apos;t like another bootloader?'/><author><name>Edmundo Carmona</name><uri>http://www.blogger.com/profile/12584230508687563031</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_aeaDXhkMgRg/S_nW9OXlluI/AAAAAAAAACQ/UpHhxQ3kO88/S220/Yo_la_vasca.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1647655709615025819.post-4131045376808962454</id><published>2010-01-05T09:27:00.000-08:00</published><updated>2010-01-05T09:40:08.592-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='multiple dbs'/><category scheme='http://www.blogger.com/atom/ns#' term='flisys'/><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><category scheme='http://www.blogger.com/atom/ns#' term='adodb'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>A little bug fix for ADOdb (php) for MySQL</title><content type='html'>Hi!&lt;br /&gt;&lt;br /&gt;I'm using ADOdb to connect to more than one MySQL db at the same time but then i noticed that queries where being done on the last DB connection that was established. After researching for a while, i ended up modifying MySQL driver of ADOdb. It's a rather simple trick, so be free to use it as needed:&lt;br /&gt;&lt;br /&gt;On &lt;span style="font-weight: bold;"&gt;adodb-mysql.inc.php&lt;/span&gt;, go to the definition of &lt;span style="font-weight: bold;"&gt;_query($sql, $inputarr=false)&lt;/span&gt; and change it to:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new; font-weight: bold;"&gt;@mysql_select_db($this-&gt;database, $this-&gt;_connectionID);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; font-weight: bold;"&gt;return mysql_query($sql,$this-&gt;_connectionID);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;That should do. By the way, I've only tested it connecting to a single mysql server (with two different DBs, obviously) but I think it should work with multiple DB servers as well. Also, It works like a charm when doing &lt;span style="font-weight: bold;"&gt;-&gt;Execute()&lt;/span&gt; so it could be necessary to add that &lt;span style="font-weight: bold;"&gt;mysql_select&lt;/span&gt; in other places so that it worked with other functions that deal with the DB, but &lt;span style="font-weight: bold;"&gt;Execute&lt;/span&gt;() is enough for what I need so....&lt;br /&gt;&lt;br /&gt;I did this patch on &lt;a href="https://code.launchpad.net/%7Eeantoranz/+junk/flisys"&gt;flisys&lt;/a&gt;, and I'll upload it in the following days.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1647655709615025819-4131045376808962454?l=maratux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maratux.blogspot.com/feeds/4131045376808962454/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://maratux.blogspot.com/2010/01/little-bug-fix-for-adodb-php-for-mysql.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/4131045376808962454'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/4131045376808962454'/><link rel='alternate' type='text/html' href='http://maratux.blogspot.com/2010/01/little-bug-fix-for-adodb-php-for-mysql.html' title='A little bug fix for ADOdb (php) for MySQL'/><author><name>Edmundo Carmona</name><uri>http://www.blogger.com/profile/12584230508687563031</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_aeaDXhkMgRg/S_nW9OXlluI/AAAAAAAAACQ/UpHhxQ3kO88/S220/Yo_la_vasca.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1647655709615025819.post-5481910350779401613</id><published>2009-12-31T12:40:00.000-08:00</published><updated>2009-12-31T12:54:52.443-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wishes'/><category scheme='http://www.blogger.com/atom/ns#' term='new year'/><title type='text'>My wishes for 2010</title><content type='html'>Hi!&lt;br /&gt;&lt;br /&gt;As just about everybody else does, I will be making my wish list for next year, which is just a few hours ahead here in Colombia. Most of the topics are IT related, but not all of them are.&lt;br /&gt;&lt;br /&gt;- Get to grab one of those cheap, never-ending battery life ARM based netbooks (the sooner, the better).&lt;br /&gt;&lt;br /&gt;- See Firefox (and now Chrome) get to grab more market share than IE.&lt;br /&gt;&lt;br /&gt;- See &lt;a href="http://es.wikipedia.org/wiki/Festival_Latinoamericano_de_Instalaci%C3%B3n_de_Software_Libre"&gt;FLISoL&lt;/a&gt; explode in assistance and installations (in Bogotá, Colombia and everywhere).&lt;br /&gt;&lt;br /&gt;- This is a big one: See a &lt;span style="font-weight: bold;"&gt;60 minutes&lt;/span&gt; article about FLOSS. That'd be so cool! Here in Colombia,  one "&lt;span style="font-weight: bold;"&gt;Especiales Pirry&lt;/span&gt;" or "&lt;span style="font-weight: bold;"&gt;Séptimo Día&lt;/span&gt;" article would make the day.&lt;br /&gt;&lt;br /&gt;-  Convince the bosses at the company where I work to allow me to use GNU/Linux on my laptop computer (haven't tried yet... have to think of a way to do it). We use a lot of GNU/Linux but not on our desktops which is a shame, if you ask me.&lt;br /&gt;&lt;br /&gt;- Get to see my wife come out of her health problems and make it back to her normal life (love you, Honey!).&lt;br /&gt;&lt;br /&gt;- Get to spend next Xmas and new year (that'd be 2011) with my family (I mean, the blood related one), be it in Maracaibo (where I'm from) or here in Bogotá... better here in Bogotá (I just spent a weekend at a hot place and I couldn't bear it. Don't want to think what it'll be when I put my feet back in Maracaibo. :-S)&lt;br /&gt;&lt;br /&gt;I guess that'd make it for next year. Hope at least half of them come true... specially the last two.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Happy MMX! (no relation to Intel)&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1647655709615025819-5481910350779401613?l=maratux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maratux.blogspot.com/feeds/5481910350779401613/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://maratux.blogspot.com/2009/12/my-wishes-for-2010.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/5481910350779401613'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/5481910350779401613'/><link rel='alternate' type='text/html' href='http://maratux.blogspot.com/2009/12/my-wishes-for-2010.html' title='My wishes for 2010'/><author><name>Edmundo Carmona</name><uri>http://www.blogger.com/profile/12584230508687563031</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_aeaDXhkMgRg/S_nW9OXlluI/AAAAAAAAACQ/UpHhxQ3kO88/S220/Yo_la_vasca.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1647655709615025819.post-8915486047794954634</id><published>2009-12-24T11:51:00.001-08:00</published><updated>2009-12-24T13:55:10.772-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hidden files'/><category scheme='http://www.blogger.com/atom/ns#' term='mount points'/><category scheme='http://www.blogger.com/atom/ns#' term='gnu'/><category scheme='http://www.blogger.com/atom/ns#' term='partitions'/><category scheme='http://www.blogger.com/atom/ns#' term='recovery'/><category scheme='http://www.blogger.com/atom/ns#' term='mount'/><category scheme='http://www.blogger.com/atom/ns#' term='hack'/><category scheme='http://www.blogger.com/atom/ns#' term='GNU/Linux linux'/><title type='text'>How to see files hidden behind a mount</title><content type='html'>Hi!&lt;br /&gt;&lt;br /&gt;It's been a while since I did my last technical post. Yesterday I saw myself in a situation where I had to see some files in a directory that was used to mount a partition so I wasn't able to see the files I needed, so to speak. After some hacking, I was able to see the files. Here's how it's done.&lt;br /&gt;&lt;br /&gt;First, let's set an environment for our tests. I have some files in /mnt/D/ and /mnt/D/ is in the root partition:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;# mount&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(51, 102, 255);font-family:courier new;" &gt;/dev/sda6 on / type ext3 (rw,relatime,errors=remount-ro)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;proc on /proc type proc (rw)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;none on /sys type sysfs (rw,noexec,nosuid,nodev)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;none on /sys/fs/fuse/connections type fusectl (rw)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;none on /sys/kernel/debug type debugfs (rw)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;none on /sys/kernel/security type securityfs (rw)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;udev on /dev type tmpfs (rw,mode=0755)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;none on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=0620)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;none on /dev/shm type tmpfs (rw,nosuid,nodev)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;none on /var/run type tmpfs (rw,nosuid,mode=0755)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;none on /var/lock type tmpfs (rw,noexec,nosuid,nodev)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;none on /lib/init/rw type tmpfs (rw,nosuid,mode=0755)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;# ls /mnt/D/ -l&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;total 8&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;-rw-r--r-- 1 root root 6 2009-12-24 14:55 test2.txt&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;-rw-r--r-- 1 root root 5 2009-12-24 14:55 test.txt&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;# cat /mnt/D/test2.txt&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;adios&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Now, I use this partition to mount a drive from a windows host, so after I do that mount:&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;# ls /mnt/D/ -l&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;total 884802&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;-rwxr-xr-x 1 antoranz root      1883 2009-11-27 09:42 20091125.html&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;-rwxr-xr-x 1 antoranz root      2150 2009-11-27 10:59 20091126.html&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;-rwxr-xr-x 1 antoranz root    110230 2009-10-17 19:56 3D400055.WAV&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;-rwxr-xr-x 1 antoranz root         0 2009-12-23 15:10 algodon.txt&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;drwxr-xr-x 1 antoranz root         0 2009-11-04 15:34 billnew&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;etc&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;so the files that were in /mnt/D are now hidden because of the new mount. What I did to see the files was to remount the root partition (as that's the partition where the files I need really are) in another mount point. Let's try to do it directly. As you can see from the mount I showed before, my root  partition is in /dev/sda6 so:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-family: courier new;"&gt;# mount -o ro /dev/sda6 /mnt/tmp&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-family: courier new;"&gt;mount: /dev/sda6 already mounted or /mnt/tmp busy&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-family: courier new;"&gt;mount: according to mtab, /dev/sda6 is mounted on /&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I knew it wasn't going to give itself up so easily. But don't panic... there's a way to fool the SO... really! Have you heard of loop devices? Now's a great moment to learn about them... but I won't go into the details. Let's just say they are very useful. Do your homework and find out about them. Let's link /dev/sda6 to a loop device:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;# losetup -f -v /dev/sda6&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;Loop device is /dev/loop0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;So /dev/sda6 is now linked to /dev/loop0. Let's try to remount the root partition again to see what happens:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;# mount -o ro /dev/loop0 /mnt/tmp&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;#&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The prompt is staring at me and the command didn't complain. Seems like it's done. Let's see what's in /mnt/tmp:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;# ls -l /mnt/tmp/&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;total 108&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;drwxr-xr-x   2 root root  4096 2009-12-11 21:01 bin&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;drwxr-xr-x   3 root root  4096 2009-12-24 11:10 boot&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;lrwxrwxrwx   1 root root    11 2009-08-20 12:06 cdrom -&gt; media/cdrom&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;etc&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The content of the root partition... as expected. Well... let's see if the files I need are still there:&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;# ls -l /mnt/tmp/mnt/D&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;total 8&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;-rw-r--r-- 1 root root 6 2009-12-24 14:55 test2.txt&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;-rw-r--r-- 1 root root 5 2009-12-24 14:55 test.txt&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;As you can see, the new mount point is not fooled by the fact that there's something else mounted in /mnt/D. And now finally let's see if we can get the original content of the files:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;# cat /mnt/tmp/mnt/D/test2.txt&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;adios&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;And there you are. Now, a &lt;span style="font-size:78%;"&gt;little&lt;/span&gt; word of caution. I was able to see the files but the content of the other file appears to be corrupt (have to find out why) so be careful with what you get at the end. Take it as a nice start.&lt;br /&gt;&lt;br /&gt;Merry Xmas, everyone!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Venezuelan Justice System used to be David Morales Bellos' before the revolution... Now it's Hugo Chavez's. At least David Morales Bello was never the president of Venezuela.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1647655709615025819-8915486047794954634?l=maratux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maratux.blogspot.com/feeds/8915486047794954634/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://maratux.blogspot.com/2009/12/how-to-see-files-hidden-behind-mount.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/8915486047794954634'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/8915486047794954634'/><link rel='alternate' type='text/html' href='http://maratux.blogspot.com/2009/12/how-to-see-files-hidden-behind-mount.html' title='How to see files hidden behind a mount'/><author><name>Edmundo Carmona</name><uri>http://www.blogger.com/profile/12584230508687563031</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_aeaDXhkMgRg/S_nW9OXlluI/AAAAAAAAACQ/UpHhxQ3kO88/S220/Yo_la_vasca.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1647655709615025819.post-7327166019115636724</id><published>2009-11-15T07:44:00.000-08:00</published><updated>2009-11-15T07:54:51.972-08:00</updated><title type='text'>A tip for the next interview with Steve Ballmer</title><content type='html'>Hi, guys!&lt;br /&gt;&lt;br /&gt;In case you are an IT journalist and were to interview Steve Ballmer, Microsoft's CEO, please, I beg you, ask him this question:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;- Mr. Ballmer, given your hard stance on GNU/Linux violating Microsoft's IP (whatever that means), what's your take on Microsoft being caught twice in a matter of a few months in violations of the General Public License? Is it official policy at Microsoft that personnel can throwing all kinds of (unproven) accusations at the Free Software community yet, at the same time, treat GPL software with total disregard for the terms they demand?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I just can't believe a company that prides itself of "respecting IP" can be caught twice in a GPL violation. Even worse if all they do is point fingers at other people saying other's are violation Microsoft's IP (without showing proof).&lt;br /&gt;&lt;br /&gt;- &lt;a href="http://news.slashdot.org/story/09/07/23/1327205/Microsofts-Code-Contribution-Due-To-GPL-Violation"&gt;http://news.slashdot.org/story/09/07/23/1327205/Microsofts-Code-Contribution-Due-To-GPL-Violation&lt;/a&gt;&lt;br /&gt;- &lt;a href="http://www.pcmag.com/article2/0,2817,2355892,00.asp"&gt;http://www.pcmag.com/article2/0,2817,2355892,00.asp&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1647655709615025819-7327166019115636724?l=maratux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maratux.blogspot.com/feeds/7327166019115636724/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://maratux.blogspot.com/2009/11/tip-for-next-interview-with-steve.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/7327166019115636724'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/7327166019115636724'/><link rel='alternate' type='text/html' href='http://maratux.blogspot.com/2009/11/tip-for-next-interview-with-steve.html' title='A tip for the next interview with Steve Ballmer'/><author><name>Edmundo Carmona</name><uri>http://www.blogger.com/profile/12584230508687563031</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_aeaDXhkMgRg/S_nW9OXlluI/AAAAAAAAACQ/UpHhxQ3kO88/S220/Yo_la_vasca.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1647655709615025819.post-7455190241512539198</id><published>2009-11-09T19:03:00.000-08:00</published><updated>2009-11-11T05:40:05.703-08:00</updated><title type='text'>man date: %C: century; like %Y, except omit last two digits (e.g., 20)?</title><content type='html'>Oh, really? The only problem that I find in that statement is that it would be &lt;span style="font-weight: bold;"&gt;correct&lt;/span&gt; on the very last year of a century. I mean We are in 2009 and our century is the 21st, right?&lt;br /&gt;Well, let's see what &lt;span style="font-weight: bold;"&gt;date&lt;/span&gt; says about our century:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;$ date +%C&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;20&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Lovely! What about in 1999?&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;$ date -d 19990303 +%C&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;19&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;So in 1999 being the 19th century, the closest thing I was to using a computer was an abacus (considering I was a windows user at the time we can agree I was actually using something next to an abacus).&lt;br /&gt;&lt;br /&gt;And what about the last year of the 20th century?&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;$ date -d 20000303 +%C&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;20&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Only then the definition provided by '&lt;span style="font-weight: bold;"&gt;man date&lt;/span&gt;' does match the actual century for a certain year. And before people start complaining about 2000 being the &lt;span style="font-weight: bold;"&gt;first&lt;/span&gt; year of the 21st century instead of the last of the 20th century:&lt;br /&gt;The year 0 doesn't exist in our calendar. Remember the gregorian calendar is roman based and romans didn't know the concept of 0, therefore no year 0. Theoretically speaking, from Dec 31st 1 BC, you'd have jumped into&lt;br /&gt;Jan 1st 1 AD. If the first year of the first century is &lt;span style="font-weight: bold;"&gt;1 AD&lt;/span&gt; and the last  is 100, the first year of the second century is 101, the first year of the 20th century would be 1901 and the last would be 2000 and the first of the 21st century would be 2001 and so on. I used to discuss about this very same point with my Music History professor at the Conservatory in Maracaibo and we'd get into all kinds of philosophical questions about when it was 0, the limit between year&lt;br /&gt;1 BC, 1 AD and so on and we'd never get to a point. My best wishes for my dear professor Osvaldo Nolé, by the way.&lt;br /&gt;&lt;br /&gt;More info:&lt;br /&gt;- http://en.wikipedia.org/wiki/Year_zero&lt;br /&gt;- http://en.wikipedia.org/wiki/Gregorian_calendar&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1647655709615025819-7455190241512539198?l=maratux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maratux.blogspot.com/feeds/7455190241512539198/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://maratux.blogspot.com/2009/11/man-date-c-century-like-y-except-omit.html#comment-form' title='5 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/7455190241512539198'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/7455190241512539198'/><link rel='alternate' type='text/html' href='http://maratux.blogspot.com/2009/11/man-date-c-century-like-y-except-omit.html' title='man date: %C: century; like %Y, except omit last two digits (e.g., 20)?'/><author><name>Edmundo Carmona</name><uri>http://www.blogger.com/profile/12584230508687563031</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_aeaDXhkMgRg/S_nW9OXlluI/AAAAAAAAACQ/UpHhxQ3kO88/S220/Yo_la_vasca.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1647655709615025819.post-1518011740675555067</id><published>2009-10-03T13:00:00.000-07:00</published><updated>2009-10-04T12:15:39.830-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rant'/><category scheme='http://www.blogger.com/atom/ns#' term='3CRWER101U-75'/><category scheme='http://www.blogger.com/atom/ns#' term='wireless problems'/><category scheme='http://www.blogger.com/atom/ns#' term='3com'/><category scheme='http://www.blogger.com/atom/ns#' term='wireless'/><category scheme='http://www.blogger.com/atom/ns#' term='garbage'/><title type='text'>3com 3CRWER101U-75: Not working.</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Hi!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I went shopping to the mall that is around my house for a wireless router this morning. I didn't want to spend a lot of time on it so I basically bought the (almost) first router that I saw. It's a &lt;span style="font-weight: bold;"&gt;3com&lt;/span&gt; router. A &lt;span style="font-weight: bold;"&gt;3CRWER101U-75&lt;/span&gt; (model &lt;span style="font-weight: bold;"&gt;WL-550&lt;/span&gt;, I think). I bought it thinking that it'd be a reliable router, even if it wasn't very powerful. As long as my wife could be connected to the net from our room, it'd be more than enough.&lt;br /&gt;&lt;br /&gt;So, I arrived home about 4 hours ago. Since then I've been trying to get the damn thing to work properly and I just haven't been able to get it to work.&lt;br /&gt;&lt;br /&gt;If I try pingin the router from a box that is connected to it by wire, the connection is intermittent:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;64 bytes from 192.168.200.1: icmp_seq=3594 ttl=64 time=0.384 ms&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;64 bytes from 192.168.200.1: icmp_seq=3595 ttl=64 time=1.14 ms&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;64 bytes from 192.168.200.1: icmp_seq=3596 ttl=64 time=0.678 ms&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;64 bytes from 192.168.200.1: icmp_seq=3597 ttl=64 time=0.467 ms&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;64 bytes from 192.168.200.1: icmp_seq=3598 ttl=64 time=0.563 ms&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;64 bytes from 192.168.200.1: icmp_seq=3599 ttl=64 time=0.789 ms&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;64 bytes from 192.168.200.1: icmp_seq=3609 ttl=64 time=9770 ms&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;64 bytes from 192.168.200.1: icmp_seq=3619 ttl=64 time=0.435 ms&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;64 bytes from 192.168.200.1: icmp_seq=3620 ttl=64 time=0.401 ms&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;64 bytes from 192.168.200.1: icmp_seq=3621 ttl=64 time=0.421 ms&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;See the wholes between 3599 and 3619? How about that?&lt;br /&gt;&lt;br /&gt;Talking about the wireless, the only setting that is &lt;span style="font-style: italic;"&gt;close&lt;/span&gt; to working is setting it to use &lt;span style="font-weight: bold;"&gt;WPA/WPA2 Only&lt;/span&gt; with &lt;span style="font-weight: bold;"&gt;TKIP+AES&lt;/span&gt;. And I say close because I only get to connect to the wireless on &lt;span style="font-weight: bold;"&gt;GNU/Linux&lt;/span&gt; with &lt;span style="font-weight: bold;"&gt;wpa_supplicant&lt;/span&gt; (running on the console) and even then it disconnects &lt;span style="font-style: italic;"&gt;quite&lt;/span&gt; often. On windows, it's a no-go. And I'm talking about boxes that are less than 2 mts from the router while I do my testing.&lt;br /&gt;&lt;br /&gt;Is it that I'm putting it under too much of a load while I do my testing? It's a very small router so I don't expect it to behave as a high-end router.... but even then... what's the firmware based on? &lt;span style="font-weight: bold;"&gt;Windows Vista&lt;/span&gt;?&lt;br /&gt;&lt;br /&gt;I just can't believe it, really. I thought &lt;span style="font-weight: bold;"&gt;3com&lt;/span&gt; products where reliable. At least this router doesn't make the company look good. What should I do? Is there a firmware update or something? &lt;span style="font-weight: bold;"&gt;Somebody help me, please!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;PS I should have heard recommendations from a friend of mine who told me to get a WRT54G router instead, but I didn't get to see any at the mall, so....&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Update 1&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;The wired connection has been working much more reliably today. So far, I haven't had any disconnections so far. However, the wireless is another story. Though the wireless can be seen by hosts, I can't connect to it:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;CTRL-EVENT-SCAN-RESULTS&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;Trying to associate with 00:1e:c1:a2:3f:ec (SSID='Enfermitos' freq=2422 MHz)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;Association request to the driver failed&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;CTRL-EVENT-DISCONNECTED - Disconnect event - remove keys&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;Authentication with 00:00:00:00:00:00 timed out.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;CTRL-EVENT-SCAN-RESULTS&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;Trying to associate with 00:1e:c1:a2:3f:ec (SSID='Enfermitos' freq=2422 MHz)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;Association request to the driver failed&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;CTRL-EVENT-DISCONNECTED - Disconnect event - remove keys&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;Authentication with 00:00:00:00:00:00 timed out.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;CTRL-EVENT-SCAN-RESULTS&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;Trying to associate with 00:1e:c1:a2:3f:ec (SSID='Enfermitos' freq=2422 MHz)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;Association request to the driver failed&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;What should I try?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1647655709615025819-1518011740675555067?l=maratux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maratux.blogspot.com/feeds/1518011740675555067/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://maratux.blogspot.com/2009/10/3com-3crwer101u-75-not-working.html#comment-form' title='8 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/1518011740675555067'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/1518011740675555067'/><link rel='alternate' type='text/html' href='http://maratux.blogspot.com/2009/10/3com-3crwer101u-75-not-working.html' title='3com 3CRWER101U-75: Not working.'/><author><name>Edmundo Carmona</name><uri>http://www.blogger.com/profile/12584230508687563031</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_aeaDXhkMgRg/S_nW9OXlluI/AAAAAAAAACQ/UpHhxQ3kO88/S220/Yo_la_vasca.jpg'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1647655709615025819.post-926775940011759867</id><published>2009-09-09T17:54:00.000-07:00</published><updated>2009-09-09T18:16:45.336-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dhcp-lb'/><category scheme='http://www.blogger.com/atom/ns#' term='multiple network connections'/><category scheme='http://www.blogger.com/atom/ns#' term='multipath'/><category scheme='http://www.blogger.com/atom/ns#' term='GNU/Linux'/><title type='text'>dhcp-lb 0.02</title><content type='html'>Hello!&lt;br /&gt;&lt;br /&gt;You might have read about &lt;a href="http://maratux.blogspot.com/2009/08/dhcp-lb-load-balance-with-dhcp-links.html"&gt;dhcp-lb when I announced it&lt;/a&gt; a couple of weeks ago. It's a suite (sui generis :-) that is used to keep multi-path routing configured when you use dhcp up-links.&lt;br /&gt;&lt;br /&gt;After it was tested at the Hospital where I used to work before, we noticed a problem and I decided to enhance the script over that discovery so I'm announcing &lt;span style="font-weight: bold;"&gt;dhcp-lb 0.02&lt;/span&gt;. Go get it from &lt;a href="https://code.launchpad.net/%7Eeantoranz/+junk/dhcp-lb"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Not much has changed, as a matter of fact. The thing is that you can tell dhcp-lb what &lt;span style="font-weight: bold;"&gt;static&lt;/span&gt; interfaces you are using besides the up-link. Those static interfaces &lt;span style="font-weight: bold;"&gt;are not&lt;/span&gt; involved in the multi-path routing (just yet), by the way... so if you have a provider that has a static configuration and another that uses dhcp, the script is not ready to handle that... but it will come... someday (hopefully in the rather not too distant future).&lt;br /&gt;&lt;br /&gt;So, say you have interfaces eth1 and eth2 used for internet (dhcp) where eth2 has double the bandwidth of eth1 and a static connection to your intranet on eth0, the configuration file will look like this now:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;dhcp-lb eth1 table-eth1 200 1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;dhcp-lb eth2 table-eth2 201 2&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;static eth0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I also included some checkups for the configuration file (more than one space or tab can be used between the components of a configuration line, empty lines are welcome, etc.. but more checkups are  still missing, I'm sure). Feel free to use it (and I thank you for using it if you do) and tell me how it goes.&lt;br /&gt;&lt;br /&gt;Bye!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;PS&lt;/span&gt; Thanks go to &lt;span style="font-weight: bold;"&gt;Overt Barreto&lt;/span&gt; at the &lt;a href="http://www.espediatricas.com/"&gt;Hospital of Pediatric Specialties&lt;/a&gt; in Maracaibo, Venezuela for taking the time to test the script... he had to anyway but it's always nice to have a person tell you when something goes wrong.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1647655709615025819-926775940011759867?l=maratux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maratux.blogspot.com/feeds/926775940011759867/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://maratux.blogspot.com/2009/09/dhcp-lb-002.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/926775940011759867'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/926775940011759867'/><link rel='alternate' type='text/html' href='http://maratux.blogspot.com/2009/09/dhcp-lb-002.html' title='dhcp-lb 0.02'/><author><name>Edmundo Carmona</name><uri>http://www.blogger.com/profile/12584230508687563031</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_aeaDXhkMgRg/S_nW9OXlluI/AAAAAAAAACQ/UpHhxQ3kO88/S220/Yo_la_vasca.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1647655709615025819.post-1785655208311780123</id><published>2009-09-04T07:16:00.000-07:00</published><updated>2009-09-06T15:55:58.002-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='unt'/><category scheme='http://www.blogger.com/atom/ns#' term='charla'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><category scheme='http://www.blogger.com/atom/ns#' term='carta abierta'/><category scheme='http://www.blogger.com/atom/ns#' term='RMS'/><title type='text'>Carta abierta a rector de la UTN (Argentina)</title><content type='html'>Buenos días!&lt;br /&gt;&lt;br /&gt;Soy un ingeniero de computación venezolano que vive en colombia. Acabo de enterarme de que la UTN canceló una charla del Sr. Richard Matthew Stallman a darse en su Universidad. Dicha charla, según la fuente, fue cancelada por contratos que la UTN tiene con Microsoft que impiden que se hagan críticas sobre dicha empresa.&lt;br /&gt;&lt;br /&gt;Creo que de más está decir que debería darles _pena_ haber cancelado la charla de una persona tan importante dentro del mundo de las tecnologías como RMS por razón de dichos contratos. Cualquier mortal se vería tentado a pensar que la universidad debería ser un ambiente para el desarrollo libre de las ideas/expresión.... claro, siempre y cuando dicha universidad no tenga un contrato con alguna compañía que se lo impida.&lt;br /&gt;&lt;br /&gt;Ojalá se den cuenta de su error y decidan llevar adelante la charla... incluso si eso implica la cancelación de los contratos (total... hay bastante software libre por  ahí que les servirá para las mismas funciones y sin un contrato restrictivo). Creo que en este caso hay suficientes bases desde el punto de vista moral (como se acaba de ver con este ejemplo) como para que su universidad decida rescindir de ellos.&lt;br /&gt;&lt;br /&gt;Muchas gracias por su atención.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1647655709615025819-1785655208311780123?l=maratux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maratux.blogspot.com/feeds/1785655208311780123/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://maratux.blogspot.com/2009/09/carta-abierta-rector-de-la-unt.html#comment-form' title='7 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/1785655208311780123'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/1785655208311780123'/><link rel='alternate' type='text/html' href='http://maratux.blogspot.com/2009/09/carta-abierta-rector-de-la-unt.html' title='Carta abierta a rector de la UTN (Argentina)'/><author><name>Edmundo Carmona</name><uri>http://www.blogger.com/profile/12584230508687563031</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_aeaDXhkMgRg/S_nW9OXlluI/AAAAAAAAACQ/UpHhxQ3kO88/S220/Yo_la_vasca.jpg'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1647655709615025819.post-670486805493059756</id><published>2009-08-29T09:48:00.000-07:00</published><updated>2009-08-29T14:50:21.617-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='windows intergration'/><category scheme='http://www.blogger.com/atom/ns#' term='x server'/><category scheme='http://www.blogger.com/atom/ns#' term='xming'/><category scheme='http://www.blogger.com/atom/ns#' term='kdm'/><category scheme='http://www.blogger.com/atom/ns#' term='GNU/Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='virtual machine'/><title type='text'>Popping GNU/Linux out of the Virtual Machine</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_aeaDXhkMgRg/SpmiSRML3kI/AAAAAAAAAB0/MrpEHZoL5qI/s1600-h/kdm+on+xming.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 200px;" src="http://4.bp.blogspot.com/_aeaDXhkMgRg/SpmiSRML3kI/AAAAAAAAAB0/MrpEHZoL5qI/s320/kdm+on+xming.jpg" alt="" id="BLOGGER_PHOTO_ID_5375506064979254850" border="0" /&gt;&lt;/a&gt;Hi!&lt;br /&gt;&lt;br /&gt;At work I'm tied to a windows machine, however I have been able to use GNU/Linux which is where I'm most productive.&lt;br /&gt;&lt;br /&gt;First, I tried working with Portable Ubuntu. It works pretty well, however the latency can be a little high sometimes (Firefox being the most obvious case that I noticed).&lt;br /&gt;&lt;br /&gt;About a week ago I started working on a clustering experiment and wanted to give it a shot inside Portable Ubuntu. However, I discovered it wasn't possible because its kernel doesn't support bridging (I was going to use some qemu virtual machines for the experiment).&lt;br /&gt;&lt;br /&gt;Well, It seemed like I was going to need a virtual machine to host the experiment after all. I have used qemu and love it because of all the networking tweaking it allows you to do, however it can be very slow... and inside the virtual machine I was going to host more virtual machines, so I decided to use something else, at least on the hosting virtual machine.&lt;br /&gt;&lt;br /&gt;I tried VirtualBox and was gladly surprised by its performance. It was veeeeeeeeeery fast.&lt;br /&gt;&lt;br /&gt;Got Kubuntu installed on it. It works acceptably. Now the problem with virtual machines where you have a window that represents the computer's monitor is that you have to use key combinations to get in and out of the virtual machine environments.... plus the windows in the virtual machine are inside a window that looks not integrated to the real environment.&lt;br /&gt;&lt;br /&gt;But then a truck hit me. How about finding a way to get the windows out of the virtual machine? How about using an X server on Windows (XMing, for example) and configure the Virtual Machine to use that X server. kdm can be configured to use a remote X server.&lt;br /&gt;&lt;br /&gt;If you check /etc/kde4/kdm/kdmrc (remember it's Kubuntu, so I'm using KDE... gdm must have something similar), in the &lt;span style="font-weight: bold;"&gt;[general]&lt;/span&gt; section, there's &lt;span style="font-weight: bold;"&gt;StaticServer&lt;/span&gt; and it's set to &lt;span style="font-weight: bold;"&gt;:0&lt;/span&gt; (in other words, the X server of the host). I changed that to say 10.0.2.2:0.0 (the address of the windows box from VirtualBox):&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;StaticServer=10.0.2.2:0.0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Then I started XMing (XMing included in Portable Ubuntu, by the way) with &lt;span style="font-weight: bold;"&gt;-rootless&lt;/span&gt;, so that I got no decoration for the X server window, then I restarted the kdm service on the virtual machine and there it is! kdm is displayed on the windows environment. Log in to kde and after a moment of not seen anything on the X server screen I get to see KDE's background, plasma panels and everything else. Cool! The windows are not integrated in windows, but I don't have to get in/out of the Virtual Machine screen anymore.&lt;br /&gt;&lt;br /&gt;The only thing I'd have to complain about so far is that sometimes the latency on KDE gets too high and I don't know how to avoid it. I tried with the windows XMing and cygwin's XWing but I got the same latency issue. How can that be avoided?&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Picture&lt;/span&gt;&lt;br /&gt;The picture I'm including is the same thing running off a Kubuntu 9.04 LiveCD on my wife's box (shhhhhhhhhhh, she better not hear about it).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Sidenote&lt;/span&gt;&lt;br /&gt;When I log into kde, depending on the resolution of Windows (the real OS of the machine), KDE's splashscreen is seen or not.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1647655709615025819-670486805493059756?l=maratux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maratux.blogspot.com/feeds/670486805493059756/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://maratux.blogspot.com/2009/08/popping-gnulinux-out-of-virtual-machine.html#comment-form' title='10 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/670486805493059756'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/670486805493059756'/><link rel='alternate' type='text/html' href='http://maratux.blogspot.com/2009/08/popping-gnulinux-out-of-virtual-machine.html' title='Popping GNU/Linux out of the Virtual Machine'/><author><name>Edmundo Carmona</name><uri>http://www.blogger.com/profile/12584230508687563031</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_aeaDXhkMgRg/S_nW9OXlluI/AAAAAAAAACQ/UpHhxQ3kO88/S220/Yo_la_vasca.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_aeaDXhkMgRg/SpmiSRML3kI/AAAAAAAAAB0/MrpEHZoL5qI/s72-c/kdm+on+xming.jpg' height='72' width='72'/><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1647655709615025819.post-455309562316252377</id><published>2009-08-22T13:03:00.000-07:00</published><updated>2009-09-09T18:11:13.927-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dhcp-lb'/><category scheme='http://www.blogger.com/atom/ns#' term='iproute2'/><category scheme='http://www.blogger.com/atom/ns#' term='multiple network connections'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='multipath'/><category scheme='http://www.blogger.com/atom/ns#' term='GNU/Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='dhcp'/><title type='text'>dhcp-lb: Load balance with DHCP links</title><content type='html'>Hi!&lt;br /&gt;&lt;br /&gt;Some years ago, when I worked at the &lt;a href="http://www.espediatricas.com/"&gt;Hospital of Pediatric Specialties&lt;/a&gt; in Maracaibo, I did a project that would update routing for our multi-link internet connection when there was a DHCP event. I decided to redo the whole thing using a simpler approach plus I would release the code without asking for permission (as it's mine now) under&lt;span style="font-weight: bold;"&gt; Affero GPLv3&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Introduction&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;So, you have read lartc's guide on '&lt;a href="http://lartc.org/howto/lartc.rpdb.multiple-links.html"&gt;Routing for multiple uplinks/providers&lt;/a&gt;' and it all makes sense (and does work). However, there's a catch for you: Instead of having static network configurations, your ISPs use DHCP to set your network connections and you don't intend to sit all day long waiting for DHCP event to happen to reconfigure the whole thing, do you? That's what I thought.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;dhcp-lb&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;In order to solve the problem I just described I created dhcp-lb. It's a &lt;span style="font-weight: bold;"&gt;python&lt;/span&gt; script that, once configured and linked as a &lt;span style="font-weight: bold;"&gt;dhclient&lt;/span&gt; &lt;span style="font-style: italic;"&gt;exit hook&lt;/span&gt;, can listen to dhcp events and reconfigure networking accordingly.&lt;br /&gt;&lt;br /&gt;What I need&lt;br /&gt;You need python, dhclient, iproute2 (that I think will come by default in almost every distro) and a multipath-enabled kernel (check for &lt;span style="font-weight: bold;"&gt;CONFIG_IP_ROUTE_MULTIPATH&lt;/span&gt;, I think).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;How to get it?&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Right now, the only way to get it is through bazaar from &lt;a href="https://code.launchpad.net/%7Eeantoranz/+junk/dhcp-lb"&gt;launchpad's branch I set for it&lt;/a&gt;. I have created a PPA, but I have to learn how to use it so be patient (maybe someone can help me in this journey). If you want it but don't want to use bazaar to get it, email me and I'll gladly send you a tgz with it.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Configuration&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Configuring it is fairly simple. You need to create a file called /etc/dhcp-lb with the configuration of each link involved in the multilink default route. Each line has the configuration of each link and it has four fields (so far):&lt;br /&gt;- Network Interface&lt;br /&gt;- Routing Table for that interface&lt;br /&gt;- Routing Table ID (numeric, less than 255... check /etc/iproute2/rt_tables)&lt;br /&gt;- Weight (numeric, more than 0)&lt;br /&gt;All 4 fields have to be separated by &lt;span style="font-weight: bold;"&gt;exactly&lt;/span&gt; a single white space at this time. One example &lt;span style="font-weight: bold;"&gt;/etc/dhcp-lb&lt;/span&gt; file would look like this:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;# interface routing-table table-id weight&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;eth0 table-eth0 200 1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;wlan0 table-wlan0 201 2&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In this example I set &lt;span style="font-weight: bold;"&gt;wlan0&lt;/span&gt; to have twice the routing weight of &lt;span style="font-weight: bold;"&gt;eth0&lt;/span&gt; (for example, eth0 is 512 kbps and wlan0 is 1 mbps). Also, if the routing tables are not set in &lt;span style="font-weight: bold;"&gt;/etc/iproute2/rt_tables&lt;/span&gt;, dhcp-lb will take care to add them to that file, so no need to change rt_tables beforehand.&lt;br /&gt;&lt;br /&gt;After you have done that, all you need to do is link &lt;span style="font-weight: bold;"&gt;/usr/bin/dhcp-lb&lt;/span&gt; into the exit hooks directory (&lt;span style="font-weight: bold;"&gt;/etc/dhcp3/dhclient-exit-hooks.d&lt;/span&gt; in my case) and you are done. Restart the network service and it should start working right  away.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Keep in mind&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;dhcp-lb&lt;/span&gt; only configures routing with multiple uplinks and it doesn't correct any of the shortcomings that come along having multiple uplinks. It only reconfigures routing with dhcp events. What are the shortcomings? That would require a blog posting of its own, but this is the most noticeable (at least, to me):&lt;br /&gt;&lt;br /&gt;- Balancing works beautifully for multiple short connections from your LAN. Few long connections? It won't look like it's balancing at all. It's because of the way routing works. The kernel doesn't make a routing decision for every packet that goes out of a box. Instead, it uses a routing cache to associate a target IP with the network interface it chose to use to get to it so it doesn't have to make a routing decision again... and the cache lasts for a few minutes (run this command: &lt;span style="font-weight: bold;"&gt;ip route show cache &lt;/span&gt;to take a look at the actual cache). After a while, it can decide to send packets to that same host through another network interface possibly breaking connections established to that host cause the other host will start receiving packets from a different address.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Conclusion&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;I hope this project helps you. However, this project is (as you can see from the logs) very young so expect it to have some problems (that I'll be working to solve). Have patches for it? Please, send them without hesitation. I'm open to suggestions and donations if you consider I deserve any.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Update&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;I just released dhcp-lb 0.02 (sep 9th 2009). Check &lt;a href="http://maratux.blogspot.com/2009/09/dhcp-lb-002.html"&gt;this post&lt;/a&gt; to learn more about it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1647655709615025819-455309562316252377?l=maratux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maratux.blogspot.com/feeds/455309562316252377/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://maratux.blogspot.com/2009/08/dhcp-lb-load-balance-with-dhcp-links.html#comment-form' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/455309562316252377'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/455309562316252377'/><link rel='alternate' type='text/html' href='http://maratux.blogspot.com/2009/08/dhcp-lb-load-balance-with-dhcp-links.html' title='dhcp-lb: Load balance with DHCP links'/><author><name>Edmundo Carmona</name><uri>http://www.blogger.com/profile/12584230508687563031</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_aeaDXhkMgRg/S_nW9OXlluI/AAAAAAAAACQ/UpHhxQ3kO88/S220/Yo_la_vasca.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1647655709615025819.post-1386277085654251368</id><published>2009-08-16T16:36:00.000-07:00</published><updated>2009-08-16T16:45:24.650-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='scientology'/><category scheme='http://www.blogger.com/atom/ns#' term='adsense'/><category scheme='http://www.blogger.com/atom/ns#' term='religion'/><category scheme='http://www.blogger.com/atom/ns#' term='OT'/><title type='text'>[OT] Adsense: Get scientology out of my site!</title><content type='html'>I set up Google's adsense on this blog. It's not being making all the truckloads of money I expected from it, but it's better than nothing nevertheless.&lt;br /&gt;&lt;br /&gt;However, since a couple of weeks ago, the only advertisements I've seen on those spaces are dedicated to &lt;span style="font-weight: bold;"&gt;Scientology&lt;/span&gt;... at least on the computers I've been able to check for it.&lt;br /&gt;&lt;br /&gt;Now, I've got a problem with that... and it's not because I don't like Scientology per se. It's just that I don't have any sympathy for &lt;span style="font-weight: bold;"&gt;any&lt;/span&gt; religion in particular. And come on, if there's an advertisement of Scientology every once in a while, I can let it slip through... but &lt;span style="font-weight: bold;"&gt;EVERY AD&lt;/span&gt; for the last couple of weeks? That is a little too much for my religious tolerance.&lt;br /&gt;&lt;br /&gt;So, guys at Adsense, get rid of the Scientology ads on my site.... or even better, set up a page so that I can ban some ads I don't want to see on my site (like religious ones, for example).&lt;br /&gt;&lt;br /&gt;Thanks in advance to anyone who can help in this regard.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1647655709615025819-1386277085654251368?l=maratux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maratux.blogspot.com/feeds/1386277085654251368/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://maratux.blogspot.com/2009/08/ot-adsense-get-scientology-out-of-my.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/1386277085654251368'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/1386277085654251368'/><link rel='alternate' type='text/html' href='http://maratux.blogspot.com/2009/08/ot-adsense-get-scientology-out-of-my.html' title='[OT] Adsense: Get scientology out of my site!'/><author><name>Edmundo Carmona</name><uri>http://www.blogger.com/profile/12584230508687563031</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_aeaDXhkMgRg/S_nW9OXlluI/AAAAAAAAACQ/UpHhxQ3kO88/S220/Yo_la_vasca.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1647655709615025819.post-8465675443567485023</id><published>2009-08-11T17:46:00.000-07:00</published><updated>2009-08-12T19:21:11.321-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='device.map'/><category scheme='http://www.blogger.com/atom/ns#' term='grub'/><category scheme='http://www.blogger.com/atom/ns#' term='opensuse'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='error 21'/><category scheme='http://www.blogger.com/atom/ns#' term='installation'/><category scheme='http://www.blogger.com/atom/ns#' term='kde4'/><category scheme='http://www.blogger.com/atom/ns#' term='setup'/><category scheme='http://www.blogger.com/atom/ns#' term='mbr'/><category scheme='http://www.blogger.com/atom/ns#' term='GNU/Linux'/><title type='text'>Installing openSuSE: grub complaining on a hardware RAID</title><content type='html'>Hi!&lt;br /&gt;&lt;br /&gt;I'm a &lt;span style="font-weight: bold;"&gt;Kubuntu/Debian&lt;/span&gt; user (and intend to stay that way), however a few days ago I set myself to install &lt;span style="font-weight: bold;"&gt;openSuSE 11.1&lt;/span&gt; (LiveCD based on KDE4). The thing is that this particular box has a hardware RAID set up.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;0f:08.0 RAID bus controller: Hewlett-Packard Company Smart Array E200i (SAS Controller)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I had no problem installing other OSs on top of it so I thought it was going to be painless.... It &lt;span style="font-weight: bold;"&gt;wasn't&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;As a matter of fact I didn't have too much of a problem (and the installation was pretty fast, congratulations for openSuSE for that).... except for the fact that when the installer was about to finish, on the part where grub was going to be installed on the &lt;span style="font-weight: bold;"&gt;MBR&lt;/span&gt;, it would fail miserably with an &lt;span style="font-weight: bold;"&gt;error 21&lt;/span&gt;. It would complain about not being able to find a certain device. I was given the option to retry installing grub without going though the whole installation procedure all over again. I tried a couple more times with a few option changes but I always got the same error.&lt;br /&gt;&lt;br /&gt;I then went into grub (by calling &lt;span style="font-weight: bold;"&gt;grub&lt;/span&gt; as &lt;span style="font-weight: bold;"&gt;root&lt;/span&gt; on the terminal) to see what I could do. I tried to change the root device, but when I wrote &lt;span style="font-weight: bold;"&gt;root&lt;/span&gt; and then hit the &lt;span style="font-weight: bold;"&gt;tab key&lt;/span&gt; to see the available devices, no one showed up. Could it be because I'm working on a live CD and some of those partitions were just created?&lt;br /&gt;&lt;br /&gt;I went openSuSE's IRC channel on freenode.net and the guys there were very interested on my problem. After a while someone (sorry not to remember your nick, man.... or woman... but thanks for showing me the light) told me that it could be a problem with grub's &lt;span style="font-weight: bold;"&gt;device.map&lt;/span&gt; file.&lt;br /&gt;&lt;br /&gt;I went there (&lt;span style="font-weight: bold;"&gt;/boot/grub/device.map&lt;/span&gt; of the running LiveCD instance) and only saw a line for (fd0). It looks like it's missing all the partitions I have set up on the disk after the installation (&lt;span style="font-weight: bold;"&gt;Important Notice&lt;/span&gt;: see the update to the article at the end). I write a mapping of all the devices that I needed (including the HD I was using and all the other partitions with other operating systems) with what I would guess partitions would be to grub. Something like:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;/dev/cciss/c0d0    (hd0)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;/dev/cciss/c0d0p1 (hd0,0)&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;/dev/cciss/c0d0p2 (hd0,1)&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;And so on. Saved the file then I went into grub again. &lt;span style="font-weight: bold;"&gt;root tab&lt;/span&gt;..... and there are all the partitions I needed. So I do the grub installation procedure which ends up being like this:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;root (hd0,4)&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;setup (hd0)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;(hd0,4)&lt;/span&gt; would be the &lt;span style="font-weight: bold;"&gt;/&lt;/span&gt; partition I was installing on (with &lt;span style="font-weight: bold;"&gt;/boot&lt;/span&gt; not in a separate partition). Remember I was trying to install it on the &lt;span style="font-weight: bold;"&gt;MBR&lt;/span&gt;, that's why I say &lt;span style="font-weight: bold;"&gt;(hd0)&lt;/span&gt; on the &lt;span style="font-weight: bold;"&gt;setup&lt;/span&gt; command. I get the output that the installation went right and I'm done.... almost. I mount my root partition (that would be &lt;span style="font-weight: bold;"&gt;/&lt;/span&gt; of the just installed openSuSE) and see the content of its &lt;span style="font-weight: bold;"&gt;/boot/grub/device.map&lt;/span&gt; and it's the same old broken one. I replace it with the one I edited on the running LiveCD. Unmount, just in case so the installer (which is still waiting for me) doesn't go crazy.&lt;br /&gt;&lt;br /&gt;Then I let the installer finish telling it that I don't want to install any bootloader. It finishes installing. Reboot, I get openSuSE running.&lt;br /&gt;&lt;br /&gt;Hope you don't need to apply this but... it could be a little too late. Otherwise, why would you be reading this, right? Good luck anyway!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;UPDATE&lt;/span&gt;&lt;br /&gt;I'm looking at the &lt;span style="font-weight: bold;"&gt;device.map&lt;/span&gt; file on my box at home with &lt;span style="font-weight: bold;"&gt;Kubuntu kinky&lt;/span&gt;... I mean, &lt;span style="font-weight: bold;"&gt;karmic&lt;/span&gt; (that openSuSE box was at work) and I see that the only line there is a mapping to the hard drive and not all the partitions of my box:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;(hd0)   /dev/hda&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;So perhaps I just needed to add a line to map &lt;span style="font-weight: bold;"&gt;/dev/cciss/c0d0&lt;/span&gt; to &lt;span style="font-weight: bold;"&gt;(hd0)&lt;/span&gt; and that would be it... but it could also be because karmic is using &lt;span style="font-weight: bold;"&gt;grub2&lt;/span&gt;, so keep that in mind when you try. In any case, I'm not going to retry doing the installation just to figure it out.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1647655709615025819-8465675443567485023?l=maratux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maratux.blogspot.com/feeds/8465675443567485023/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://maratux.blogspot.com/2009/08/installing-opensuse-grub-complaining-on.html#comment-form' title='4 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/8465675443567485023'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/8465675443567485023'/><link rel='alternate' type='text/html' href='http://maratux.blogspot.com/2009/08/installing-opensuse-grub-complaining-on.html' title='Installing openSuSE: grub complaining on a hardware RAID'/><author><name>Edmundo Carmona</name><uri>http://www.blogger.com/profile/12584230508687563031</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_aeaDXhkMgRg/S_nW9OXlluI/AAAAAAAAACQ/UpHhxQ3kO88/S220/Yo_la_vasca.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1647655709615025819.post-1172764550802132938</id><published>2009-07-26T16:00:00.000-07:00</published><updated>2009-07-26T16:36:29.708-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='security'/><category scheme='http://www.blogger.com/atom/ns#' term='GNU/Linux'/><title type='text'>Are we too naive by believing that GNU/Linux is more secure by design?</title><content type='html'>Hi!&lt;br /&gt;&lt;br /&gt;I've been wondering for the last couple of days about the proposition that I use where I state that GNU/Linux is far more secure than Windows among other things because it's designed to be so (a real muti-user OS by design, real Networked OS by design, etc) plus other customs that we *NIX users have like not using the root account to play Frozen Bubble and so on.&lt;br /&gt;&lt;br /&gt;Now, there are people that say that it's just that GNU/Linux is less  attractive to malware software because there are so few of us GNU/Linux users. I have always thought that this is crap but anyway....&lt;br /&gt;&lt;br /&gt;Now, think about the things that FLOSS developers get to do:&lt;br /&gt;- &lt;a href="http://en.wikipedia.org/wiki/Jon_Lech_Johansen"&gt;Crack encrypted DVDs&lt;/a&gt;&lt;br /&gt;- Allow for communication between &lt;a href="http://www.samba.org/"&gt;Microsoft Windows hosts (with a twisted SMB protocol) and *NIX hosts&lt;/a&gt; before Microsoft (reluctantly... but with a lot of PR spin, as usual) released the documentation about it&lt;br /&gt;- &lt;a href="http://tombuntu.com/index.php/2008/03/04/ipod-synced-with-itunes-on-linux/"&gt;Synchronize with iTunes&lt;/a&gt;&lt;br /&gt;- Running GNU/Linux on basically any piece of equipment worthy of running it (with or without support by the vendor).. and some others that aren't worthy but....&lt;br /&gt;- Brake every DRM mechanism ever built&lt;br /&gt;&lt;br /&gt;And the list goes on and on. No matter what the developers wanted to restrict, there has always being a way to crack it.&lt;br /&gt;&lt;br /&gt;Now... if FLOSS developers are able to do basically just everything they set themselves to do, wouldn't it be possible that malware developers will get get to do the same with the security barriers set on a GNU/Linux (or *NIX for that matter) no matter how hard we try to restrain them?&lt;br /&gt;&lt;br /&gt;I just wonder&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1647655709615025819-1172764550802132938?l=maratux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maratux.blogspot.com/feeds/1172764550802132938/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://maratux.blogspot.com/2009/07/are-we-too-naive-by-believing-that.html#comment-form' title='11 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/1172764550802132938'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/1172764550802132938'/><link rel='alternate' type='text/html' href='http://maratux.blogspot.com/2009/07/are-we-too-naive-by-believing-that.html' title='Are we too naive by believing that GNU/Linux is more secure by design?'/><author><name>Edmundo Carmona</name><uri>http://www.blogger.com/profile/12584230508687563031</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_aeaDXhkMgRg/S_nW9OXlluI/AAAAAAAAACQ/UpHhxQ3kO88/S220/Yo_la_vasca.jpg'/></author><thr:total>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1647655709615025819.post-5561420758835481775</id><published>2009-07-25T18:10:00.000-07:00</published><updated>2009-07-26T10:05:24.083-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gpl'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'>Random musings on GPL and Microsoft</title><content type='html'>This has been a very remarkable week.&lt;br /&gt;&lt;br /&gt;We had &lt;a href="http://www.osnews.com/story/21860/Double-Take_Microsoft_Contributes_Drivers_to_Linux_Community"&gt;Microsoft releasing some 20,000 LOC of Linux drivers&lt;/a&gt; so that Linux can run faster on their Hyper-V solution. A lot of MS PR saying how they love interoperability and how cool they are. I will be the first to say that I was &lt;span style="font-weight: bold;"&gt;in shock&lt;/span&gt; (and I bet I wasn't the only one). After all, we are talking about a license that their managers explicitly &lt;span style="font-weight: bold;"&gt;hate&lt;/span&gt; so why release code under that license then? I just couldn't help seeing a little hypocrisy involved.... to say the least. It's always cool to say that they had to eat their own words anyway so I didn't take it as a bad thing, after all, as Linus says, we are all developing scratching our own itches.&lt;br /&gt;&lt;br /&gt;But a couple of days later things got even more interesting when we hear that &lt;a href="http://www.osnews.com/story/21882/Microsoft_s_Linux_Kernel_Code_Drop_Result_of_GPL_Violation"&gt;there was an issue with some GPL code&lt;/a&gt; that they were using in their solution that was improperly linked and so they had to release the code... &lt;a href="http://www.osnews.com/story/21892/Microsoft_GPL_Contribution_Not_Brought_on_by_GPL_Violation"&gt;BUT it was not a GPL violation&lt;/a&gt; (or so they say). Now, wait a minute... if there was a situation that had to be called upon  (which people involved say they wanted it to be handled quietly) and ended up with them releasing the 20 KLOC, then how can that &lt;span style="font-weight: bold;"&gt;not&lt;/span&gt; be a GPL violation? If there was no violation then there was no situation to be called upon (which people involved wouldn't have had to say that they would have wanted it to be handled quietly) in the first place, was there? I don't know, but something smells fishy here.&lt;br /&gt;&lt;br /&gt;Now, let's make something clear. Microsoft representatives have stated in the past that GPL is viral and that it attaches itself in their IP. Look, pal... GPL doesn't attach itself. It's not a living thing. It's &lt;span style="font-weight: bold;"&gt;attached&lt;/span&gt; by developers when &lt;span style="font-weight: bold;"&gt;they choose&lt;/span&gt; to use it. Their own in-house developers do it (as &lt;a href="http://http//www.linuxfordevices.com/c/a/News/Cisco-sued-for-Linksys-GPL-violation/"&gt;Cisco via Linksys&lt;/a&gt; and &lt;a href="http://www.gpl-violations.org/"&gt;others&lt;/a&gt; have had to learn the hard way... now perhaps Microsoft joined that Hall of Shame). After all, nobody is forcing anyone to use GPL code in their solutions. Well, at least I haven't heard of anyone complaining of having RMS threating them with using GPLed code in their solutions or.... So if you don't like the GPL, then don't use code released under its terms. Stop wining about how bad the GPL is, do your homework and write your own code instead. I know.... there's excellent GPL code out there and it's gonna take time to reproduce it but... if you choose to use it, then abide by its rules. That's all their creators asked for when they released the code under its terms after all, right?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1647655709615025819-5561420758835481775?l=maratux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maratux.blogspot.com/feeds/5561420758835481775/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://maratux.blogspot.com/2009/07/random-musings-on-gpl-and-microsoft.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/5561420758835481775'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/5561420758835481775'/><link rel='alternate' type='text/html' href='http://maratux.blogspot.com/2009/07/random-musings-on-gpl-and-microsoft.html' title='Random musings on GPL and Microsoft'/><author><name>Edmundo Carmona</name><uri>http://www.blogger.com/profile/12584230508687563031</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_aeaDXhkMgRg/S_nW9OXlluI/AAAAAAAAACQ/UpHhxQ3kO88/S220/Yo_la_vasca.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1647655709615025819.post-7506468414127481261</id><published>2009-07-05T17:48:00.000-07:00</published><updated>2009-07-05T18:26:56.388-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='debate'/><category scheme='http://www.blogger.com/atom/ns#' term='open letter'/><category scheme='http://www.blogger.com/atom/ns#' term='mono'/><category scheme='http://www.blogger.com/atom/ns#' term='floss'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'>Miguel: You, the man! - Open letter to Miguel de Icaza</title><content type='html'>Dear Miguel:&lt;br /&gt;&lt;br /&gt;During the last couple of weeks there has been a tremendous amount of information pouring about &lt;a href="http://en.wikipedia.org/wiki/Mono_%28software%29"&gt;Mono&lt;/a&gt;, the free (&lt;span style="font-style: italic;"&gt;speechwise&lt;/span&gt;) implementation of .NET started by &lt;a href="http://en.wikipedia.org/wiki/Miguel_de_Icaza"&gt;you&lt;/a&gt;, Novell's vice-president of Development Platform, and how it should/would be handled by distros. We even had RMS himself come into the fray and tell us his take on it (which he had been mum about till now).&lt;br /&gt;&lt;br /&gt;Mono is a development framework that (more or less) implements .NET (yes, that framework from Microsoft). The thing is that while some parts of .NET are open standards approved by &lt;a href="http://en.wikipedia.org/wiki/Ecma_International"&gt;ECMA&lt;/a&gt; and released under &lt;a href="http://en.wikipedia.org/wiki/Reasonable_and_Non_Discriminatory_Licensing"&gt;RAND&lt;/a&gt; terms, there has to be a solid word from Microsoft about what these RAND terms would be for Mono. The biggest fear of it is having a patent related claim later on when Mono-dependent applications become more "established" and harder to be replaced.&lt;br /&gt;&lt;br /&gt;We have seen that when you are asked on it, you point at ECMA and when they are asked they do an &lt;span style="font-style: italic;"&gt;HTTP redirect&lt;/span&gt; to Microsoft instead.. and they are just as mum as RMS was (conveniently so for them, I think.. they must be laughing their asses off by seen how we debate on the topic with them moving not a single finger).&lt;br /&gt;&lt;br /&gt;So, coming back to the point, what we need, Miguel, is a statement from Microsoft, and I mean from someone that has gained a little confidence from the FLOSS community like Sam Ramji or Lawrence Crumpton who have at least shown their faces and stared at the beast (us) straight into the eye and not some random PR representative, telling us how the thing with Mono is.&lt;br /&gt;&lt;br /&gt;Now you are the guy with the contacts at Microsoft, you are in charge of Mono, so just like in "&lt;a href="http://en.wikipedia.org/wiki/The_Ladykillers_%282004_film%29"&gt;&lt;span style="font-style: italic;"&gt;The Ladykillers&lt;/span&gt;&lt;/a&gt;" (do I love that movie!) when the quarterback grabs &lt;span style="font-style: italic;"&gt;Lump&lt;/span&gt; by the helmet's grill and tells him: "Hey, butt-head! You, the man!", now it's my time to tell you: &lt;span style="font-weight: bold;"&gt;You, the man! &lt;/span&gt;Get us out of this &lt;a href="http://en.wikipedia.org/wiki/Fear,_uncertainty_and_doubt"&gt;FUD&lt;/a&gt; feast (from both sides of the debate) and make them say something we can eat.&lt;br /&gt;&lt;br /&gt;Glad to be of service&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1647655709615025819-7506468414127481261?l=maratux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maratux.blogspot.com/feeds/7506468414127481261/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://maratux.blogspot.com/2009/07/miguel-you-man-open-letter-to-miguel-de.html#comment-form' title='12 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/7506468414127481261'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/7506468414127481261'/><link rel='alternate' type='text/html' href='http://maratux.blogspot.com/2009/07/miguel-you-man-open-letter-to-miguel-de.html' title='Miguel: You, the man! - Open letter to Miguel de Icaza'/><author><name>Edmundo Carmona</name><uri>http://www.blogger.com/profile/12584230508687563031</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_aeaDXhkMgRg/S_nW9OXlluI/AAAAAAAAACQ/UpHhxQ3kO88/S220/Yo_la_vasca.jpg'/></author><thr:total>12</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1647655709615025819.post-8253240668969006842</id><published>2009-06-27T09:03:00.000-07:00</published><updated>2009-06-30T11:47:49.446-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bash'/><category scheme='http://www.blogger.com/atom/ns#' term='named pipes'/><category scheme='http://www.blogger.com/atom/ns#' term='pipes'/><title type='text'>Named Pipes... or how to get two separate applications to interact</title><content type='html'>Recently, I've been working on an application (bash based) that could gather some information that I need from a host (network interfaces configuration, arp neighborgs, routing policy, pinging some other hosts, etc). Then I wondered that it would be good if I were able to connect to some hosts through SSH and run some commands on those hosts and save the output of those commands as part of the information of the first host. Like an information gatherer of sorts.&lt;br /&gt;&lt;br /&gt;I started working on this part of the project and hit a brick wall. When I connect to a host using openSSH's server, I had no problem throwing a bunch of commands at the server and wait for the output to come from ssh and save it. Say, something like:&lt;br /&gt;&lt;br /&gt; &lt;span style="font-family: courier new; font-weight: bold;"&gt;$ ssh ubuntu@ubuntu &amp;lt;&amp;lt;EOF&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;&gt; ip link show&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;&gt; ip addr show&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;&gt; EOF&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;ubuntu@ubuntu's password:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;1: lo: &lt;/span&gt;&lt;loopback,up,lower_up&gt;&lt;span style="font-family: courier new;"&gt; mtu 16436 qdisc noqueue state UNKNOWN&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;2: eth0: &lt;/span&gt;&lt;no-carrier,broadcast,multicast,up&gt;&lt;span style="font-family: courier new;"&gt; mtu 1500 qdisc pfifo_fast state DOWN qlen 1000&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    link/ether 00:21:70:94:08:b0 brd ff:ff:ff:ff:ff:ff&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;3: eth1: &lt;/span&gt;&lt;broadcast,multicast,up,lower_up&gt;&lt;span style="font-family: courier new;"&gt; mtu 1500 qdisc pfifo_fast state UP qlen 1000&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    link/ether 00:16:44:d3:f4:bf brd ff:ff:ff:ff:ff:ff&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;4: pan0: &lt;/span&gt;&lt;broadcast,multicast&gt;&lt;span style="font-family: courier new;"&gt; mtu 1500 qdisc noop state DOWN&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    link/ether 96:4d:e1:83:8a:4d brd ff:ff:ff:ff:ff:ff&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;1: lo: &lt;/span&gt;&lt;loopback,up,lower_up&gt;&lt;span style="font-family: courier new;"&gt; mtu 16436 qdisc noqueue state UNKNOWN&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    inet 127.0.0.1/8 scope host lo&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    inet6 ::1/128 scope host&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;       valid_lft forever preferred_lft forever&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;2: eth0: &lt;/span&gt;&lt;no-carrier,broadcast,multicast,up&gt;&lt;span style="font-family: courier new;"&gt; mtu 1500 qdisc pfifo_fast state DOWN qlen 1000&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    link/ether 00:21:70:94:08:b0 brd ff:ff:ff:ff:ff:ff&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;3: eth1: &lt;/span&gt;&lt;broadcast,multicast,up,lower_up&gt;&lt;span style="font-family: courier new;"&gt; mtu 1500 qdisc pfifo_fast state UP qlen 1000&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    link/ether 00:16:44:d3:f4:bf brd ff:ff:ff:ff:ff:ff&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    inet 192.168.123.127/24 brd 192.168.123.255 scope global eth1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    inet6 fe80::216:44ff:fed3:f4bf/64 scope link&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;       valid_lft forever preferred_lft forever&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;4: pan0: &lt;/span&gt;&lt;broadcast,multicast&gt;&lt;span style="font-family: courier new;"&gt; mtu 1500 qdisc noop state DOWN&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;    link/ether 96:4d:e1:83:8a:4d brd ff:ff:ff:ff:ff:ff&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Great. However, I didn't' want to connect to a host with one openSSH service. I had to connect to a router (a HW router, so to speak) that, whenever I sent it more than one command, would break my connection.&lt;br /&gt;&lt;br /&gt;After several tries and experiments, I thought about creating one application that would use the ssh client to send commands to the router and get the output of the ssh client. It would wait for the router's prompt to show up before sending another command. Now, that would require not only getting the output of the ssh client, as that is a piece of cake:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-family: courier new;"&gt;$ ssh user@host | ./ssh_handler&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;That would allow my_ssh_handler to get the output of ssh (in other words, the router) to process it, but I also need to send commands to the ssh, somehow. That's when named pipes show up.&lt;br /&gt;&lt;br /&gt;Named pipes allow you to send/receive data from streams that are not the standard input/outputs we get with every process (standard input, standard output, standard error).&lt;br /&gt;&lt;br /&gt;Say you have two terminals sessions sitting on the same directory:&lt;br /&gt;&lt;br /&gt;Session 1:&lt;br /&gt;&lt;span style="font-family: courier new; font-weight: bold;"&gt;$ pwd&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;/home/ubuntu/pipe experiment&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Session 2:&lt;br /&gt;&lt;span style="font-family: courier new; font-weight: bold;"&gt;$ pwd&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;/home/ubuntu/pipe experiment&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Let's create a named pipe in this directory in one of those sessions:&lt;br /&gt;&lt;span style="font-family: courier new; font-weight: bold;"&gt;$ mkfifo my_pipe&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; font-weight: bold;"&gt;$ ls -l&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;total 0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;prw-r--r-- 1 ubuntu ubuntu 0 2009-06-28 18:00 my_pipe&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;We now have a pipe in the directory (see the leftmost p in the listing, that means it's a &lt;span style="font-style: italic;"&gt;named pipe&lt;/span&gt;).&lt;br /&gt;&lt;br /&gt;Now, let's try to send something from session 1 to session 2 through the pipe:&lt;br /&gt;&lt;br /&gt;Session 1:&lt;br /&gt;&lt;span style="font-weight: bold; font-family: courier new;"&gt;$ echo "Hello" &gt; my_pipe&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Notice how the process is &lt;span style="font-style: italic;"&gt;blocked&lt;/span&gt; and doesn't exit. Let's read the content of the file with cat on session 2:&lt;br /&gt;&lt;br /&gt;Session 2:&lt;br /&gt;&lt;span style="font-family: courier new; font-weight: bold;"&gt;$ cat my_pipe&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;Hello&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;And if you go to Session 1, you will see that the echo has finished executing.&lt;br /&gt;&lt;br /&gt;Now, let's create two scripts that will exchange information through two pipes. Script 1 will read lines from its standard input sending them and then will receive a line of information. The second will send back exactly the same line prepending: "You said".&lt;br /&gt;&lt;br /&gt;Script 1:&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;# read from the standard input&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;while read input; do&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;echo $input &gt; pipe1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;# read from the other session&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;read input &lt; pipe2&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;echo $input &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;done&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Script 2:&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;#read from the other session&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;while true; do&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cat pipe1 | sed 's/^/You said /' &gt; pipe2&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;done&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;When you run script2, it will stay there forever waiting for processes to dump stuff into pipe1&lt;br /&gt;&lt;br /&gt;Then we run script1 like this:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new; font-weight: bold;"&gt;$ ( echo HELLO; echo BYE; ) | ./script1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;You said HELLO&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;You said BYE&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; font-weight: bold;"&gt;$ &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Right on target. Now, I want to explain a very tiny detail. Why did I use an infinite loop on &lt;span style="font-style: italic;"&gt;script2&lt;/span&gt;? Because if you try with a &lt;span style="font-weight: bold;"&gt;while read&lt;/span&gt;, it would only read a single line from &lt;span style="font-style: italic;"&gt;pipe1&lt;/span&gt; and then get an &lt;span style="font-weight: bold;"&gt;EOF&lt;/span&gt; and finish the loop (something related to the way the &lt;span style="font-style: italic;"&gt;echo &gt; pipe1&lt;/span&gt; in &lt;span style="font-style: italic;"&gt;script1&lt;/span&gt; works, I think).&lt;br /&gt;&lt;br /&gt;And then, going back to my problem, how did I get to make the handler? One simple way to put it is:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-family: courier new;"&gt;$ ./ssh_handler | ssh -i certificate user@host &gt; a_pipe&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;ssh_handler&lt;/span&gt; uses its standard output to send commands to &lt;span style="font-style: italic;"&gt;ssh&lt;/span&gt;. &lt;span style="font-style: italic;"&gt;ssh&lt;/span&gt; is using a certificate so that I don't have to use password authentication, it gets the commands from its standard input and writes whatever comes out of the ssh server to &lt;span style="font-style: italic;"&gt;a_pipe&lt;/span&gt; (you guess it, a &lt;span style="font-style: italic;"&gt;named pipe&lt;/span&gt;). &lt;span style="font-style: italic;"&gt;a_pipe&lt;/span&gt; is used by &lt;span style="font-style: italic;"&gt;ssh_handler&lt;/span&gt; to read whatever comes from the ssh server and that's it: &lt;span style="font-weight: bold;"&gt;Two interacting applications&lt;/span&gt;.&lt;br /&gt;&lt;/broadcast,multicast&gt;&lt;/broadcast,multicast,up,lower_up&gt;&lt;/no-carrier,broadcast,multicast,up&gt;&lt;/loopback,up,lower_up&gt;&lt;/broadcast,multicast&gt;&lt;/broadcast,multicast,up,lower_up&gt;&lt;/no-carrier,broadcast,multicast,up&gt;&lt;/loopback,up,lower_up&gt;&lt;/eof&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1647655709615025819-8253240668969006842?l=maratux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maratux.blogspot.com/feeds/8253240668969006842/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://maratux.blogspot.com/2009/06/named-pipes-or-how-to-get-two-separate.html#comment-form' title='4 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/8253240668969006842'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/8253240668969006842'/><link rel='alternate' type='text/html' href='http://maratux.blogspot.com/2009/06/named-pipes-or-how-to-get-two-separate.html' title='Named Pipes... or how to get two separate applications to interact'/><author><name>Edmundo Carmona</name><uri>http://www.blogger.com/profile/12584230508687563031</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_aeaDXhkMgRg/S_nW9OXlluI/AAAAAAAAACQ/UpHhxQ3kO88/S220/Yo_la_vasca.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1647655709615025819.post-1018628577807167924</id><published>2009-06-06T09:09:00.000-07:00</published><updated>2011-10-04T23:47:12.214-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tricks'/><category scheme='http://www.blogger.com/atom/ns#' term='nat'/><category scheme='http://www.blogger.com/atom/ns#' term='double nat'/><category scheme='http://www.blogger.com/atom/ns#' term='network'/><category scheme='http://www.blogger.com/atom/ns#' term='tunnels'/><category scheme='http://www.blogger.com/atom/ns#' term='ssh'/><title type='text'>SSH Tunnels: Using a service from a nated (twice) box</title><content type='html'>Hi!&lt;br /&gt;&lt;br /&gt;Recently I have being managing a box using a 3rd party application that allowed me to handle a windows box where I could use putty to get SSH access to a linux box. It had to be done this way because both my box and the linux box are &lt;span style="font-weight: bold;"&gt;nat&lt;/span&gt;ed, so they can't reach each other. Let me say it was a real PITA. The keyboard layouts were getting on my nerves. Some important keys didn't work sometimes... or at all (like ; or @ or ', etc). After a while I was encouraged enough to dig for a solution to get access to the SSH service of the linux box directly (or almost) instead of depending on this mess I was using.&lt;br /&gt;&lt;br /&gt;First, let me introduce SSH tunnels before I dig into the actual solution to my problem.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 130%;"&gt;&lt;span style="font-weight: bold;"&gt;SSH Tunnels&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;SSH tunnels are used between an ssh client and a server so that there is one parallel trusted (encrypted) connection using SSH as its &lt;span style="font-style: italic;"&gt;transport&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;When the tunnel is set up, there will be a passive &lt;span style="font-style: italic;"&gt;listening&lt;/span&gt; side and one active &lt;span style="font-style: italic;"&gt;connecting&lt;/span&gt; side. On the passive end we set up a port so that the tunnel waits for connections of clients to this port. When a client connects to this port, on the active side there is &lt;span style="font-weight: bold;"&gt;another&lt;/span&gt; connection to (potentially) another host/port and so the tunnel connects the client that used the passive port to the new connection on the active side.&lt;br /&gt;&lt;br /&gt;The tunnels can be set up so that either our client is the listening side or the active side. But, it will never be both in a single side. It's either listening or connecting, and the tunneled connection is always established from the listening side to the active side.&lt;br /&gt;&lt;br /&gt;So, how do this work? Well, let's do some simple examples.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 130%; font-weight: bold;"&gt;L Tunnel (client side is the listening end)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;On a local tunnel, we set up a port on &lt;span style="font-weight: bold;"&gt;our&lt;/span&gt; side and the SSH server will be the connecting side.&lt;br /&gt;&lt;br /&gt;Let's say we want to get access to a HTTP service that is on the SSH server, but we want to use one encrypted transport for the transmission.&lt;br /&gt;&lt;br /&gt;Say we will use our local port 8080, and on the other end the HTTP service is listening on port 80, the user to connect to the SSH service is sshuser and the host is sshhost. So, we set up the connection like this:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;ssh -nNT -L 8080:localhost:80 sshuser@sshhost&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;After the tunnel is set up, we can use a web browser to use the http server:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;http://localhost:8080&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Ok, let's explain the details so we can get the devil out of the equation.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;-nNT&lt;/span&gt; is used so that SSH doesn't start a SSH terminal session besides the tunnel (as I don't want to use it).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;-L 8080:localhost:80&lt;/span&gt; Here is where the tunnel is set up. The first parameter (8080) is the port we want to set up on the &lt;span style="font-weight: bold;"&gt;listening&lt;/span&gt; end (our host for a L Tunnel). Then the interesting part, localhost:80... with this we are telling the &lt;span style="font-weight: bold;"&gt;active&lt;/span&gt; side (on the SSH server for a L Tunnel) that when a client connects to our listening port (8080) we want the &lt;span style="font-weight: bold;"&gt;other&lt;/span&gt; end to connect to host &lt;span style="font-style: italic;"&gt;localhost&lt;/span&gt; (localhost to the other end, the SSH server, that is) port 80 (http service).&lt;br /&gt;&lt;br /&gt;After running that command on our box, we can see this with netstat:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;tcp        0      0 127.0.0.1:8080          0.0.0.0:*               LISTEN   3310/ssh&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;As you can see, we set up a listening port on our host on port 8080 and it's only available to processes running on our host (I guess it's possible to fool this a little with a little &lt;span style="font-style: italic;"&gt;nating&lt;/span&gt;, but it's out of the scope of this article).&lt;br /&gt;&lt;br /&gt;Now, we just have to use this port on our host to use the HTTP service on the other end. That's why we say http://localhost:8080.&lt;br /&gt;&lt;br /&gt;In this case we used the HTTP service of the same SSH server we used to set up the tunnel. But we could use the HTTP service of yet another host that's accessible to the SSH server. Say there is a host that's accessible to the SSH server through IP 192.168.25.3 (as you can see, it's a private network that could be only accessible to the SSH server and not us from our host). In that case:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;ssh -nNT -L 8080:192.168.25.3:80 sshuser@sshhost&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Then we use our browser:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;http://localhost:8080&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 130%;"&gt;&lt;span style="font-weight: bold;"&gt;R Tunnel (ssh server is the listening end)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Say we want to set up port 2000 on the other end of the tunnel so that when clients connect to it, we will let those clients use &lt;span style="font-weight: bold;"&gt;our&lt;/span&gt; HTTP service on our host. We do basically the same we did before:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;ssh -nNT -R 2000:localhost:80 sshuser@sshhost&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;As you see, the only real change is that we said &lt;span style="font-weight: bold;"&gt;-R&lt;/span&gt; instead of &lt;span style="font-weight: bold;"&gt;-L&lt;/span&gt;. All it does is invert the direction the tunnel is set up (listening side on the SSH server).&lt;br /&gt;&lt;br /&gt;After we set it up, on the other end we can use netstat to check if we are listening:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;tcp        0      0 127.0.0.1:2000              0.0.0.0:*                   LISTEN&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Then we should be able to browse with a client from the other end of the connection by using port 2000:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;http://localhost:2000&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;As in the case of L Tunnels, the order of the parameters of the tunnel is always the same: port on the listening side:server host on the active side:port on the active side.&lt;br /&gt;&lt;br /&gt;And just like in the case of the L Tunnel, we could use a R Tunnel to connect to a host different from the active host of the tunnel. So say I want to enable access to a remote desktop service of a windows box that's on my private network accessible (to me, that is) through IP 172.17.32.67. Let's say I'll use port 3000 on the other side:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;ssh -nNT -R 3000:172.17.32.67:3389 sshuser@sshhost&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Then on the other side:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;rdesktop localhost:3000&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;And it's done!&lt;br /&gt;&lt;br /&gt;Now, let's work on our problem.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 130%;"&gt;&lt;span style="font-weight: bold;"&gt;Access to a service on a host that's nated from a box that's nated too&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Well.... as both boxes are nated, then it's impossible to get them in touch with each other.... &lt;span style="font-style: italic;"&gt;directly&lt;/span&gt;, that is. But I bet you can use a box that has a SSH service that's accessible to the original two boxes, can't you? I bet you do! And then, we can do this:&lt;br /&gt;&lt;br /&gt;On the side of the box that has the SSH service we want to get access to:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;ssh -nNT -R 2000:localhost:22 sshuser@sshhost&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;What we do there is set up port 2000 on the &lt;span style="font-style: italic;"&gt;middle&lt;/span&gt; box so that when a client connects to it, it will be connecting to the SSH service of the host we are running the command from. In other words, we have forwarded the ssh service of this host to port 2000 of the middle box.&lt;br /&gt;&lt;br /&gt;Then, on the box we want to run SSH from to get access to the other box:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;ssh -nNT -L 4000:localhost:2000 sshuser@sshhost&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;What we do is set up port 4000 or our host so that when a client connects to it, there will be a connection on the middle box to its port 2000 (which is the forwarded SSH service of the ending box). In other words we have forwarded the SSH service of the ending box to our port 4000.&lt;br /&gt;&lt;br /&gt;Then we can use a ssh client to get in touch with the service we are interested in:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;ssh -p 4000 remoteuser@localhost&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;And it's done! What do you think?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1647655709615025819-1018628577807167924?l=maratux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maratux.blogspot.com/feeds/1018628577807167924/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://maratux.blogspot.com/2009/06/ssh-tunnels-using-service-from-nated.html#comment-form' title='5 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/1018628577807167924'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/1018628577807167924'/><link rel='alternate' type='text/html' href='http://maratux.blogspot.com/2009/06/ssh-tunnels-using-service-from-nated.html' title='SSH Tunnels: Using a service from a nated (twice) box'/><author><name>Edmundo Carmona</name><uri>http://www.blogger.com/profile/12584230508687563031</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_aeaDXhkMgRg/S_nW9OXlluI/AAAAAAAAACQ/UpHhxQ3kO88/S220/Yo_la_vasca.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1647655709615025819.post-8738185256868528964</id><published>2009-06-06T08:14:00.000-07:00</published><updated>2009-06-07T13:24:24.388-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='while'/><category scheme='http://www.blogger.com/atom/ns#' term='umount'/><category scheme='http://www.blogger.com/atom/ns#' term='repetitive'/><category scheme='http://www.blogger.com/atom/ns#' term='bash'/><category scheme='http://www.blogger.com/atom/ns#' term='find'/><category scheme='http://www.blogger.com/atom/ns#' term='mount'/><title type='text'>Bash Tricks II: repetitive tasks on files</title><content type='html'>It's been a while since I wrote for the last time. I found a job (finally) and it's eating up most of my time.&lt;br /&gt;&lt;br /&gt;Anyway, I had already written &lt;a href="http://maratux.blogspot.com/2009/02/bash-tricks-i-very-repetitive-tasks.html"&gt;a piece on repetitive tasks&lt;/a&gt; before. Yesterday I had to do a thing that required another set of repetitive tricks. I had to find a file that could be included in a number (huge number) of compressed files. Some where named .tar.gz, others where tgz. I didn't want to spend the next month checking each compressed file to see if my target file was there. So I made a one-liner that did the whole thing for me.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;First Attempt&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;( find /mnt/tmp/ -iname '*'.tgz; find /mnt/tmp/ -iname '*'.tar.gz; ) | while read filename; do lines=`tar tzf $filename | grep -i &lt;span style="font-style: italic;"&gt;file-pattern&lt;/span&gt; | wc -l`; if [ $lines -gt 0 ]; then echo $filename; fi; done&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;First we have the &lt;span style="font-weight: bold;"&gt;()&lt;/span&gt;s. These little kids let you run various commands and tie together their outputs so that they make up a single output.&lt;br /&gt;&lt;br /&gt;Second we have the &lt;span style="font-weight: bold;"&gt;while read &lt;span style="font-style: italic;"&gt;variable&lt;/span&gt;; do&lt;/span&gt; x; y; z; &lt;span style="font-weight: bold;"&gt;done&lt;/span&gt;. This construct allows us to read from the standard input line by line placing the content of each line in a variable (multiple variables can be used, in that case a single word from the standard input will be placed in each variable). In our case, we used&lt;span style="font-style: italic;"&gt; $filename&lt;/span&gt; as our variable (be careful not to use &lt;span style="font-weight: bold;"&gt;$&lt;/span&gt; on the &lt;span style="font-style: italic;"&gt;while read&lt;/span&gt;).&lt;br /&gt;&lt;br /&gt;Then the &lt;span style="font-weight: bold;"&gt;``&lt;/span&gt;s. These kids allow us to run a command so that its &lt;span style="font-weight: bold;"&gt;output&lt;/span&gt; can be assigned. In our case, we are listing the files of a tgz file, &lt;span style="font-style: italic;"&gt;grepping&lt;/span&gt; to find the pattern of the file we are looking for and then counting the lines that come out of grep. The number of lines is what is saved in the variable &lt;span style="font-weight: bold;"&gt;$lines&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Finally, we are testing to see if the number is lines is greater than 0. If it is, we print the name of the file where we found the file pattern we were looking for.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Second Attemp&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;t&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Now let's try something a little bit different (though with the same pattern of file search). I have a number of ISOs saved in a box and each one of them has a number of RPMs inside of them. I have to look for this same file I was looking for before.&lt;br /&gt;&lt;br /&gt;Basically, it's the same thing we did before, the only thing that's changing is that we will use another level of &lt;span style="font-style: italic;"&gt;nesting&lt;/span&gt; so that we can mount/umount the iso files. Let's see:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;find /var/isos/ -iname '*'.iso | while read iso; do mount -o loop,ro $iso /mnt/tmp; find /mnt/tmp/ -iname '*.rpm' | while read rpm; do lines=`rpm -qlp $rpm | grep -i &lt;span style="font-style: italic;"&gt;file-pattern&lt;/span&gt; | wc -l`; if [ $lines -gt 0 ]; then echo $iso $rpm; fi; done; umount $iso; done&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;And that's it! Neat, isn't it?&lt;br /&gt;&lt;br /&gt;Now, keep in mind that if you want to do rather simple things with the files, you can ask &lt;span style="font-weight: bold;"&gt;find&lt;/span&gt; to execute some commands on the files it finds. In my case it would have been a little tricky (at least) to write the actions I wanted to do on each file in &lt;span style="font-weight: bold;"&gt;find&lt;/span&gt;'s syntax, so I went for the &lt;span style="font-style: italic;"&gt;piping&lt;/span&gt; solution.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1647655709615025819-8738185256868528964?l=maratux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maratux.blogspot.com/feeds/8738185256868528964/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://maratux.blogspot.com/2009/06/bash-tricks-ii-repetitive-tasks-on.html#comment-form' title='4 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/8738185256868528964'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/8738185256868528964'/><link rel='alternate' type='text/html' href='http://maratux.blogspot.com/2009/06/bash-tricks-ii-repetitive-tasks-on.html' title='Bash Tricks II: repetitive tasks on files'/><author><name>Edmundo Carmona</name><uri>http://www.blogger.com/profile/12584230508687563031</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_aeaDXhkMgRg/S_nW9OXlluI/AAAAAAAAACQ/UpHhxQ3kO88/S220/Yo_la_vasca.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1647655709615025819.post-8047857922220714396</id><published>2009-05-04T12:53:00.001-07:00</published><updated>2009-05-05T06:50:13.924-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ie'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><category scheme='http://www.blogger.com/atom/ns#' term='ff'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><category scheme='http://www.blogger.com/atom/ns#' term='GNU/Linux'/><title type='text'>GNU/Linux up 60% YoY, Windows down 4.02%</title><content type='html'>Well well.... I couldn't blog on friday when the news were fresh (and I knew right away everybody was going to comment on it). GNU/Linux has hit a 1% market share during April 2009 according to &lt;a href="http://marketshare.hitslink.com/operating-system-market-share.aspx?qprid=8&amp;amp;qpmr=100&amp;amp;qpdt=1&amp;amp;qpct=3&amp;amp;qptimeframe=M&amp;amp;qpsp=123"&gt;Hitslink's statistics&lt;/a&gt;. Alongside these statistics we can see that &lt;a href="http://marketshare.hitslink.com/browser-market-share.aspx?qprid=0"&gt;IE keeps bleeding market share while FF and Chrome continue to go up&lt;/a&gt;. Great news as well.&lt;br /&gt;&lt;br /&gt;But then I find &lt;a href="http://blogs.zdnet.com/hardware/?p=4286"&gt;Adrian Kingsley-Hughes' article on the subject&lt;/a&gt; where he makes a comparison of market shares the way they were a year ago.&lt;br /&gt;&lt;br /&gt;GNU/Linux had a market share of 0.63% in april 2008. One year later, it's (&lt;span style="font-weight: bold;"&gt;finally&lt;/span&gt;) reached 1,02%. If we look at the sheer number it's still laughable, right? Well, It's not laughable for two reasons:&lt;br /&gt;- It's an increase of over 60% year over year for GNU/Linux (the brighter side of having such a low number to start with, for sure).&lt;br /&gt;- Also, I bet they are not laughing at this at Redmond, Washington. Windows is one of &lt;span style="font-weight: bold;"&gt;two&lt;/span&gt; cash cows of Microsoft and losing a hundredth of the (potential) income these days plus having to almost give away Windows to be present on one of the few markets that's healthy nowadays (netbooks) is costing them hard cash.&lt;br /&gt;&lt;br /&gt;Year over year, Windows had a decrease of 4.02% (from 91.58% to 87.9%). Some months ago it had to face being under 90% in &lt;span style="font-weight: bold;"&gt;years&lt;/span&gt; (probably more than a decade), and still going down.... very slowly, but &lt;span style="font-weight: bold;"&gt;down&lt;/span&gt; nevertheless.&lt;br /&gt;&lt;br /&gt;Also, if we consider how FF has been going against IE, we find these numbers: FF was at 17.76% in april 2008 and it's at 22,48% last april which translates in an increase a little over 26% YoY. Not bad. IE's numbers are a little different. One year ago it was at 74.86% and last april it's at 66.1% which means it had a decrease of over 11% year over year.&lt;br /&gt;&lt;br /&gt;I see two menaces for Microsoft here. Microsoft's own survival depends (completely, I think) on Windows' survival. Windows doesn't survive, Microsoft will follow through next shortly, so loosing Windows' market share directly is bad news no matter how you see it. But also, remember that a little over 10 years ago Microsoft had to basically kill one of the biggest threats to Windows as a platform: web browsers. The new push for alternative web browsers means they have a direct threat to Windows yet again, plus loosing their chance to leverage their stuff through &lt;a href="http://en.wikipedia.org/wiki/Embrace,_extend,_and_extinguish"&gt;EEE&lt;/a&gt;. And having FF (which is a direct legacy of Netscape's browser) spearheading this wave is more than poetic justice to me.&lt;br /&gt;&lt;br /&gt;Overall, not good news for Microsoft, but &lt;span style="font-weight: bold;"&gt;good&lt;/span&gt; news for everyone else. Let's hope next year I can still comment on news as good as this one.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1647655709615025819-8047857922220714396?l=maratux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maratux.blogspot.com/feeds/8047857922220714396/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://maratux.blogspot.com/2009/05/gnulinux-up-60-yoy-windows-down-402.html#comment-form' title='3 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/8047857922220714396'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/8047857922220714396'/><link rel='alternate' type='text/html' href='http://maratux.blogspot.com/2009/05/gnulinux-up-60-yoy-windows-down-402.html' title='GNU/Linux up 60% YoY, Windows down 4.02%'/><author><name>Edmundo Carmona</name><uri>http://www.blogger.com/profile/12584230508687563031</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_aeaDXhkMgRg/S_nW9OXlluI/AAAAAAAAACQ/UpHhxQ3kO88/S220/Yo_la_vasca.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1647655709615025819.post-7991632513963560556</id><published>2009-04-28T09:56:00.000-07:00</published><updated>2009-04-28T10:59:29.310-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='flisol'/><category scheme='http://www.blogger.com/atom/ns#' term='Bogota'/><title type='text'>FLISoL Bogotá 2009 - The good, the bad and the ugly</title><content type='html'>Hello!&lt;br /&gt;&lt;br /&gt;Last saturday we had a run of FLISoL. I was present to Bogotá's instance as an installer. It's so wonderful to see all those guys going somewhere with the only purpose of helping other people (plus hanging out afterwards).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;The Good&lt;/span&gt;&lt;br /&gt;There were roughly 30 installers overall. 121 machines got worked on. Roughly 100 of them got a GNU/Linux installed/updated on them. 55 of them were Ubuntus (and such), 21 of them got Debians (no love for RPMs here in Bogotá, guys.... sorry), 12 of them got Mandriva, 4 of them got OpenSuSE, 2 got Fedoras plus a few others.&lt;br /&gt;&lt;br /&gt;I got to install Kubuntu 9.04 64 on a machine (cause I didn't have Ubuntu 64 at hand), plus another Ubuntu 9.04 32. Unfortunatly I had to leave early cause of family matters. Till the moment I left things were flowing normally.&lt;br /&gt;&lt;br /&gt;The environment was cool though we were a little crammed.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;The Bad&lt;/span&gt;&lt;br /&gt;We were going to have some servers with mirrors of the repositories of the major distributions. Unfortunately the mirrors weren't up till a couple of hours later which meant that the first installations that went through had to download stuff from internet repositories.... and with so many installations going on at once, you can guess how fast that went through. Unfortunately not having the mirrors from the start could have easily added 20 minutes (being optimistic) to the installation times of that first round. For my second installation the mirrors were already in place and that went much faster.&lt;br /&gt;&lt;br /&gt;The thing to keep in mind for every installation you do is trying to get it well done in as short amount of time as possible, and having the "&lt;span style="font-style: italic;"&gt;customer&lt;/span&gt;" understand the basic things (most important of all: package manager). That can be a little tricky to balance.&lt;br /&gt;&lt;br /&gt;Another letdown was that we couldn't use &lt;a href="https://code.launchpad.net/%7Eflisol/flisol-tools/flisol-tools"&gt;the application&lt;/a&gt; I had worked on (along with Jorge) to gather all the information about the boxes once they were finished. It was probably because of the same reason we didn't have the mirrors up when we started. Fortunately that was not a show stopper.. I hope we'll be using it for other coming events.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;The Ugly&lt;/span&gt;&lt;br /&gt;In one of our previous installers' mettings we had been told not to bring anything to the Festival (other than the strictly necessary). Last year one computer got lost and they didn't want the same to happen again.&lt;br /&gt;&lt;br /&gt;Well.... the Festival wasn't even &lt;span style="font-weight: bold;"&gt;started&lt;/span&gt; and not one but &lt;span style="font-weight: bold;"&gt;two&lt;/span&gt; laptops were already missing. Apparently there's a guy who has this custom of fooling around at the library to see which unwary person he can try to con. One person was &lt;span style="font-style: italic;"&gt;candid&lt;/span&gt; enough to hand him with two laptops he/she was carrying while he/she did something else. A while later the person who got the boxes was missing... along with the two boxes. A strong reminder for me that, even if &lt;a href="http://en.wikipedia.org/wiki/Bogot%C3%A1"&gt;Bogotá&lt;/a&gt; is not as insecure as &lt;a href="http://en.wikipedia.org/wiki/Maracaibo"&gt;Maracaibo&lt;/a&gt; or &lt;a href="http://en.wikipedia.org/wiki/Caracas"&gt;Caracas&lt;/a&gt;, it's not &lt;a href="http://www.citymayors.com/features/quality_survey.html"&gt;Vienna&lt;/a&gt; (don't want to start a war here, guys, it's just my appreciation).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Some pictures&lt;/span&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.com/ruri.himura/FlisolBogota2009"&gt;Here&lt;/a&gt;, &lt;a href="http://picasaweb.google.com/arthecrow/FLISol_2009"&gt;here&lt;/a&gt; and &lt;a href="http://picasaweb.google.com/aristizabal.daniel/Flisol2009"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Bottomline&lt;/span&gt;&lt;br /&gt;I liked the experience very much. I hope I can work on it next year as well. I still haven't seen statistics of Colombia or Latin America overall... Let's just hope they are as good (or even better) than Bogotá's.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Sidenote&lt;/span&gt;&lt;br /&gt;I already learned that Maracaibo (my hometown in Venezuela) will be having its FLISoL next saturday (don't know why).&lt;br /&gt;&lt;br /&gt;And for those who are curious: Nope, Microsoft &lt;a href="http://maratux.blogspot.com/2009/04/little-help-for-flisol-open-letter-to.html"&gt;didn't hand out anything&lt;/a&gt; for FLISoL. But given their &lt;a href="http://www.computerworld.com/action/article.do?command=viewArticleBasic&amp;amp;articleId=9132056"&gt;last quarter's results&lt;/a&gt;, who can blame them?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1647655709615025819-7991632513963560556?l=maratux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maratux.blogspot.com/feeds/7991632513963560556/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://maratux.blogspot.com/2009/04/flisol-bogota-2009-good-bad-and-ugly.html#comment-form' title='5 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/7991632513963560556'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/7991632513963560556'/><link rel='alternate' type='text/html' href='http://maratux.blogspot.com/2009/04/flisol-bogota-2009-good-bad-and-ugly.html' title='FLISoL Bogotá 2009 - The good, the bad and the ugly'/><author><name>Edmundo Carmona</name><uri>http://www.blogger.com/profile/12584230508687563031</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_aeaDXhkMgRg/S_nW9OXlluI/AAAAAAAAACQ/UpHhxQ3kO88/S220/Yo_la_vasca.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1647655709615025819.post-5277818034323461362</id><published>2009-04-20T12:45:00.001-07:00</published><updated>2009-04-20T13:08:03.609-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='flisol'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><category scheme='http://www.blogger.com/atom/ns#' term='chiste'/><title type='text'>Una ayudita para FLISoL - Carta abierta a Microsoft</title><content type='html'>Querido Microsoft&lt;br /&gt;&lt;br /&gt;Antes de hacer mi petición quiero dejar claro quien soy. Mi nombre es Edmundo Carmona. Soy un ingeniero de computación venezolano viviendo en Bogotá. Desde hace varios años soy un usuario/administrador de GNU/Linux y, a diferencia de otras personalidades de la comunidad de FLOSS (muchos de ellos con muchos más logros que yo), no confío en ustedes y &lt;a href="http://maratux.blogspot.com/2009/02/conflicker-affected-me-though-i-dont.html"&gt;despotrico&lt;/a&gt; &lt;a href="http://maratux.blogspot.com/2009/02/has-ie-lost-hearts-of-it-people.html"&gt;de&lt;/a&gt; &lt;a href="http://maratux.blogspot.com/2009/02/windows-antivirus-pollution.html"&gt;ustedes&lt;/a&gt; &lt;a href="http://maratux.blogspot.com/2009/03/get-facts-on-browsers.html"&gt;cada&lt;/a&gt; &lt;a href="http://www.osnews.com/permalink?358839"&gt;vez&lt;/a&gt; &lt;a href="http://www.osnews.com/permalink?358422"&gt;que&lt;/a&gt; &lt;a href="http://digitaltippingpoint.com/wiki/index.php?title=SMFM_list_page_08"&gt;puedo&lt;/a&gt; (ítem 940).&lt;br /&gt;&lt;br /&gt;Durante las útimas dos semanas he estado colaborando en la organización de &lt;a href="http://flisol.net/"&gt;FLISoL&lt;/a&gt;, el &lt;span style="font-style: italic;"&gt;Festival Latinoamericano de Instalación de Software Libre&lt;/span&gt;, que tendrá lugar este sábado. Vamos a estar instalando (&lt;span style="font-weight: bold;"&gt;de forma gratuita&lt;/span&gt;) Software Libre en los equipos que nos traigan a los sitios dispuesto para ello para el festival. En cierta forma, somos cuidadanos responsables tratando de eliminar las &lt;a href="http://digg.com/software/Bill_Gates_on_Piracy:_They_ll_get_addicted,_and_then_we_ll_collect_?FC=PRCK1"&gt;drogas tecnológicas&lt;/a&gt; de las calles.&lt;br /&gt;&lt;br /&gt;Durante nuestra última reunion surgió la pregunta de qué hacer con los niños que vengan acompañando los padres que traigan sus equipos para la instalación?  Ahí es donde entran ustedes.&lt;br /&gt;&lt;br /&gt;Todos sabemos que Vista fue un gran desastre (probablemente comparable a Windows Me). Me imagino que ustedes deben tener pilas con miles y miles de CDs/DVDs de instalación de Windows Vista disponibles esperando que algún &lt;span style="font-style: italic;"&gt;incauto&lt;/span&gt; compre alguno.&lt;br /&gt;&lt;br /&gt;Serían tan amables de facilitarnos unos 15 o 20 CDs/DVDs de instalación de WIndows Vista? No los vamos a estar instalando en los equipos, no se preocupen. Yo personalmente se los entregaría a los niños para que se entretengan con ellos (usándolos como frisbies o rayando su superficie). mientras estamos haciendo nuestra labor. Yo se perfectamente que su sistema operativo es un juguete y por ello lo deberíamos instalar en los equipos de los niños pero, la verdad, me rehúso.&lt;br /&gt;&lt;br /&gt;Atentamente&lt;br /&gt;Edmundo Carmona&lt;br /&gt;Ingeniero de Computación&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;ACLARATORIA&lt;/span&gt;&lt;br /&gt;Ya que no tengo idea de con qué puede salir Microsoft a raiz de este correo, quiero dejar claro que esto es un &lt;span style="font-weight: bold;"&gt;chiste&lt;/span&gt; y que por ningún motivo puede que ser interpretado como que está relacionado de alguna forma a FLISoL. Es mi creación exclusiva y nadie más de FLISoL participó en su creación.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://maratux.blogspot.com/2009/04/little-help-for-flisol-open-letter-to.html"&gt;English Version&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1647655709615025819-5277818034323461362?l=maratux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maratux.blogspot.com/feeds/5277818034323461362/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://maratux.blogspot.com/2009/04/una-ayudita-para-flisol-carta-abierta.html#comment-form' title='6 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/5277818034323461362'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/5277818034323461362'/><link rel='alternate' type='text/html' href='http://maratux.blogspot.com/2009/04/una-ayudita-para-flisol-carta-abierta.html' title='Una ayudita para FLISoL - Carta abierta a Microsoft'/><author><name>Edmundo Carmona</name><uri>http://www.blogger.com/profile/12584230508687563031</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_aeaDXhkMgRg/S_nW9OXlluI/AAAAAAAAACQ/UpHhxQ3kO88/S220/Yo_la_vasca.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1647655709615025819.post-1313202292657424505</id><published>2009-04-19T12:12:00.000-07:00</published><updated>2009-04-21T06:18:21.994-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='flisol'/><category scheme='http://www.blogger.com/atom/ns#' term='humor'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'>A little help for FLISoL - Open Letter to Microsoft</title><content type='html'>Dear &lt;span style="font-weight: bold;"&gt;Microsoft&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Before I make my request, let me first state who I am. I'm Edmundo Carmona, a venezuelan computer engineer living in Colombia. I've been a GNU/Linux user/administrator for years and, unlike others in the FLOSS community (many with far greater accomplishments than mine), don't trust you a tiny little bit and &lt;a href="http://maratux.blogspot.com/2009/02/conflicker-affected-me-though-i-dont.html"&gt;I&lt;/a&gt; &lt;a href="http://maratux.blogspot.com/2009/02/has-ie-lost-hearts-of-it-people.html"&gt;bash&lt;/a&gt; &lt;a href="http://maratux.blogspot.com/2009/02/windows-antivirus-pollution.html"&gt;you&lt;/a&gt; &lt;a href="http://maratux.blogspot.com/2009/03/get-facts-on-browsers.html"&gt;every&lt;/a&gt; &lt;a href="http://www.osnews.com/permalink?358839"&gt;time&lt;/a&gt; &lt;a href="http://www.osnews.com/permalink?358422"&gt;I&lt;/a&gt; &lt;a href="http://digitaltippingpoint.com/wiki/index.php?title=SMFM_list_page_08"&gt;can&lt;/a&gt; (940).&lt;br /&gt;&lt;br /&gt;During the last couple of weeks I've been helping out in the organization of &lt;a style="font-weight: bold;" href="http://flisol.net/"&gt;FLISoL&lt;/a&gt;. It's the &lt;span style="font-style: italic;"&gt;Latinamerican Free Software Installation Festival&lt;/span&gt;, which will take place next saturday. We will be installing Free Software on computers that people take to the locations we set up for free (as in &lt;span style="font-style: italic;"&gt;no monetary charge&lt;/span&gt;). In a sense, we are just responsible citizens trying to keep &lt;a href="http://digg.com/software/Bill_Gates_on_Piracy:_They_ll_get_addicted,_and_then_we_ll_collect_?FC=PRCK1"&gt;technological drugs&lt;/a&gt; off the streets.&lt;br /&gt;&lt;br /&gt;During our last meeting there was a question about what we will be doing with people that carry their kids along with them to the location. That's where you come into the scene.&lt;br /&gt;&lt;br /&gt;See, given the fact that Windows Vista has been such a mess (probably comparable to Windows Me), I thought that you probably have thousands upon thousands upon thousands of Vista installation CDs/DVDs stacked one on top of the other waiting for the first poor soul to buy one of them.&lt;br /&gt;&lt;br /&gt;Would you be kind enough to provide us at FLISoL Bogotá with say, 15 or 20 of those installation CDs/DVDs? We won't be using them to install Windows on the computers, don't have to worry about it. I will personally hand them out to the kids so that they use them to play around (as frisbies or just to scratch on their surface) while we are on our stuff. I know that yours is a &lt;span style="font-style: italic;"&gt;toy OS&lt;/span&gt; and so we should install them on the kids computers, but I refuse to.&lt;br /&gt;&lt;br /&gt;Yours truly...&lt;br /&gt;Edmundo Carmona&lt;br /&gt;Computer Engineer&lt;br /&gt;&lt;br /&gt;DISCLAIMER&lt;br /&gt;As I don't know what Microsoft could be up to after this letter, I will state that it is a &lt;span style="font-weight: bold;"&gt;joke&lt;/span&gt; and that by no means it should be interpreted as being somehow related to &lt;span style="font-style: italic;"&gt;FLISoL&lt;/span&gt;. It's my sole creation and no one else from FLISoL (besides me, of course) helped in its creation.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://maratux.blogspot.com/2009/04/una-ayudita-para-flisol-carta-abierta.html"&gt;&lt;span&gt;Versión en español&lt;/span&gt;&lt;/a&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1647655709615025819-1313202292657424505?l=maratux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maratux.blogspot.com/feeds/1313202292657424505/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://maratux.blogspot.com/2009/04/little-help-for-flisol-open-letter-to.html#comment-form' title='3 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/1313202292657424505'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/1313202292657424505'/><link rel='alternate' type='text/html' href='http://maratux.blogspot.com/2009/04/little-help-for-flisol-open-letter-to.html' title='A little help for FLISoL - Open Letter to Microsoft'/><author><name>Edmundo Carmona</name><uri>http://www.blogger.com/profile/12584230508687563031</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_aeaDXhkMgRg/S_nW9OXlluI/AAAAAAAAACQ/UpHhxQ3kO88/S220/Yo_la_vasca.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1647655709615025819.post-8273271560183837715</id><published>2009-04-17T16:24:00.001-07:00</published><updated>2009-04-17T16:56:37.550-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Macs'/><category scheme='http://www.blogger.com/atom/ns#' term='humor'/><category scheme='http://www.blogger.com/atom/ns#' term='floss'/><category scheme='http://www.blogger.com/atom/ns#' term='security'/><category scheme='http://www.blogger.com/atom/ns#' term='GNU/Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='free software'/><title type='text'>Are macs more insecure than Windows / GNU/Linux?</title><content type='html'>I've been very busy lately studying python to create a tool for FLISoL, so expect to hear about that within the next days (the event is to take place sat. April 25th).&lt;br /&gt;&lt;br /&gt;I hit &lt;a href="http://blogs.computerworld.com/researchers_macs_are_less_secure_than_windows_pcs"&gt;this article&lt;/a&gt; about security on Macs by Preston Gralla where he states that some security experts say that Macs are easier to crack than Windows and GNU/Linux.... now, easier to crack than GNU/Linux, I find that believable... but more than Güindous? I doubt it. Anyway, they are the experts and I don't mean to contradict them.&lt;br /&gt;&lt;br /&gt;However, Macs are just another closed platform. It can't be verified to be secure by any third party, so perhaps it really is that they be more insecure than Güindous... given that there's no source code to review, I can't really tell (not that I would check the code, anyway).&lt;br /&gt;&lt;br /&gt;How much DRM code is in OSX these days? Does it spy its users "a la güindous"? Does anybody know? No source code, so nobody can't really tell.&lt;br /&gt;&lt;br /&gt;I have developed this analogy of someone who wants to buy a nuclear reactor. There are two organizations interested in providing you with their nuclear reactor.&lt;br /&gt;&lt;br /&gt;- &lt;span style="font-weight: bold;"&gt;Provider # 1&lt;/span&gt; gives you the reactor plus all the design information, all blue prints, everything but the kitchen sink!&lt;br /&gt;&lt;br /&gt;- &lt;span style="font-weight: bold;"&gt;Provider # 2&lt;/span&gt; gives you the reactor and doesn't give you a clue as to how it is built inside. It's a black box (or a massive gray one). All you have is the control panels and the documentation that this provider is kind enough to provide with (you know.... they can't give you everything for &lt;span style="font-style: italic;"&gt;security reasons&lt;/span&gt;).&lt;br /&gt;&lt;br /&gt;Given those two choices... which would you consider to be more secure/stable/reliable? Which one would you choose? I'd personally go for Provider 1. At least I know what I'm getting. And the guys are so comfortable with their design that they even give it away to buyers. Perhaps the guys at &lt;a href="http://en.wikipedia.org/wiki/Chernobyl_disaster"&gt;Chernobyl&lt;/a&gt; chose provider # 2.&lt;br /&gt;&lt;br /&gt;And finally, what's a virus for Macs called? An &lt;span style="font-weight: bold;"&gt;iVirus&lt;/span&gt;?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1647655709615025819-8273271560183837715?l=maratux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maratux.blogspot.com/feeds/8273271560183837715/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://maratux.blogspot.com/2009/04/are-macs-more-insecure-than-windows.html#comment-form' title='5 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/8273271560183837715'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/8273271560183837715'/><link rel='alternate' type='text/html' href='http://maratux.blogspot.com/2009/04/are-macs-more-insecure-than-windows.html' title='Are macs more insecure than Windows / GNU/Linux?'/><author><name>Edmundo Carmona</name><uri>http://www.blogger.com/profile/12584230508687563031</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_aeaDXhkMgRg/S_nW9OXlluI/AAAAAAAAACQ/UpHhxQ3kO88/S220/Yo_la_vasca.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1647655709615025819.post-7347758829327665705</id><published>2009-04-07T09:11:00.001-07:00</published><updated>2009-04-07T09:41:53.234-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='flisol'/><title type='text'>Latinamerican Free Software Installation Festival'2K9</title><content type='html'>Hi!&lt;br /&gt;&lt;br /&gt;I have registered myself as an installer at the &lt;span style="font-weight: bold;"&gt;Latinamerican Free Software Installation Festival&lt;/span&gt;, a.k.a &lt;span style="font-weight: bold; font-style: italic;"&gt;FLISoL&lt;/span&gt; (first time to work on a FLISoL ever, by the way). This year this event is going to take place on April 25th on many locations all around latinamerica.&lt;br /&gt;&lt;br /&gt;I will be working in Bogotá, Colombia. In my location the number of registered installers is around 30 people and we expect to make 150 installations. We will be working at the &lt;span style="font-style: italic;"&gt;Biblioteca Virgilio Barco&lt;/span&gt;, in case you want to show up. The registration process if you want to get GNU/Linux installed in your computer is already open and, in case you are &lt;span style="font-weight: bold;"&gt;not&lt;/span&gt; insterested in installing GNU/Linux, we will be doing installation of Free Software on other platforms as well (Firefox and OpenOffice come to mind).&lt;br /&gt;&lt;br /&gt;I'm more than sure that organizers will welcome any kind of help you think you could provide. Interviews? Donations? Working hours? &lt;span style="font-weight: bold;"&gt;Anything goes!&lt;/span&gt; I'll gladly work as a translator, in case it's needed.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.installfest.info/"&gt;FLISoL&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.installfest.info/FLISOL2009/Colombia"&gt;FLISoL Colombia&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.installfest.info/FLISOL2009/Colombia/Bogota?highlight=%28FLISOL2009/Colombia/%29"&gt;FLISoL Bogotá&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1647655709615025819-7347758829327665705?l=maratux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maratux.blogspot.com/feeds/7347758829327665705/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://maratux.blogspot.com/2009/04/latinamerican-free-software.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/7347758829327665705'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/7347758829327665705'/><link rel='alternate' type='text/html' href='http://maratux.blogspot.com/2009/04/latinamerican-free-software.html' title='Latinamerican Free Software Installation Festival&apos;2K9'/><author><name>Edmundo Carmona</name><uri>http://www.blogger.com/profile/12584230508687563031</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_aeaDXhkMgRg/S_nW9OXlluI/AAAAAAAAACQ/UpHhxQ3kO88/S220/Yo_la_vasca.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1647655709615025819.post-3650582996584016945</id><published>2009-04-04T07:47:00.000-07:00</published><updated>2009-04-06T11:52:14.613-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DVCM'/><category scheme='http://www.blogger.com/atom/ns#' term='bzr'/><category scheme='http://www.blogger.com/atom/ns#' term='git'/><category scheme='http://www.blogger.com/atom/ns#' term='dvcs'/><category scheme='http://www.blogger.com/atom/ns#' term='bazaar'/><category scheme='http://www.blogger.com/atom/ns#' term='export'/><category scheme='http://www.blogger.com/atom/ns#' term='import'/><title type='text'>One DVCM to rule them all (follow up)</title><content type='html'>Hi!&lt;br /&gt;&lt;br /&gt;There were some comments in my original &lt;a href="http://maratux.blogspot.com/2009/03/one-dvcm-to-rule-them-all.html"&gt;story about the performance of some DVCMs&lt;/a&gt; where I was told that bazaar degrades pretty much when you have thousands upon thousands of revisions and that the repositories could be &lt;span style="font-style: italic;"&gt;packed&lt;/span&gt;. I decided to follow suit and see where git and bzr would stand having some thousands of revisions in them.&lt;br /&gt;&lt;br /&gt;First I used git-svn to import some 20,000 revisions of a project into git (I got the first 20,696 revisions from kde... there were roughly a million, but I thought that would be enough... as a matter of fact I spent a couple of days getting to those 20,696 revisions).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Importing&lt;/span&gt;&lt;br /&gt;I exported the content of git and imported it into the separate VCMs to see how they would match up on that task.&lt;br /&gt;&lt;br /&gt;Bazaar took hours to complete this import. The first 2000 revisions where imported in about 6 minutes... but by the end, every 100 (hundred, not thousand) revisions were imported in roughly 10 minutes (one commit every 6 seconds?). The repository would be like 554 MBs in size (after packing).&lt;br /&gt;&lt;br /&gt;Git made the import (so that I matched apples to apples) in less than 5 minutes and ended up with a repository like 283 Mbs in size (after gc).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Operations&lt;/span&gt;&lt;br /&gt;Halfway diff of the project to where it is in the last revision took bazaar some 9 minutes and 15 seconds. Git made it in about 28 seconds. I think bzr won't recover after that liver hook.&lt;br /&gt;&lt;br /&gt;When I tried to move to that halfway revision, git took 17 seconds to do it (reset --hard revid), bzr took.... well, to tell you the truth, I forgot about it... I went for lunch, came back and it was &lt;span style="font-weight: bold;"&gt;still&lt;/span&gt; working on it.&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;In&lt;span style="font-style: italic;"&gt; &lt;a href="http://en.wikipedia.org/wiki/Tenchu"&gt;Tenchu&lt;/a&gt; &lt;/span&gt;terms,&lt;span style="font-style: italic;"&gt; &lt;/span&gt;git got a &lt;span style="font-style: italic;"&gt;Grand Master&lt;/span&gt; (by the way... I'd &lt;span style="font-weight: bold;"&gt;love&lt;/span&gt; to play Tenchu!).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Conclusion&lt;/span&gt;&lt;br /&gt;Well... git did mop the floor with bzr on a big repo after all, both in terms of repository size and performance.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Sidenote&lt;/span&gt;&lt;br /&gt;Should I include mercurial? Could it withstand git? How do I make the import to begin with? I  tried with hg import -, but it was using massive amounts of memory (bzr did too, by the way... I barely made it to import with the memory I had) and I didn't know if it was the right way to do it.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Update&lt;/span&gt;&lt;br /&gt;bzr finally reverted. It took 46 minutes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1647655709615025819-3650582996584016945?l=maratux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maratux.blogspot.com/feeds/3650582996584016945/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://maratux.blogspot.com/2009/04/one-dvcm-to-rule-them-all-follow-up.html#comment-form' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/3650582996584016945'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/3650582996584016945'/><link rel='alternate' type='text/html' href='http://maratux.blogspot.com/2009/04/one-dvcm-to-rule-them-all-follow-up.html' title='One DVCM to rule them all (follow up)'/><author><name>Edmundo Carmona</name><uri>http://www.blogger.com/profile/12584230508687563031</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_aeaDXhkMgRg/S_nW9OXlluI/AAAAAAAAACQ/UpHhxQ3kO88/S220/Yo_la_vasca.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1647655709615025819.post-7000274086221358527</id><published>2009-03-28T09:46:00.000-07:00</published><updated>2009-03-29T14:47:24.609-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DVCM'/><category scheme='http://www.blogger.com/atom/ns#' term='bzr'/><category scheme='http://www.blogger.com/atom/ns#' term='mercurial'/><category scheme='http://www.blogger.com/atom/ns#' term='git'/><category scheme='http://www.blogger.com/atom/ns#' term='bazaar'/><category scheme='http://www.blogger.com/atom/ns#' term='VCM'/><category scheme='http://www.blogger.com/atom/ns#' term='hg'/><title type='text'>One DVCM to rule them all</title><content type='html'>Hi!&lt;br /&gt;&lt;br /&gt;Given the recent news that &lt;a href="http://www.linuxtoday.com/news_story.php3?ltsn=2009-03-19-032-35-NW-SW"&gt;GNOME development will be moving to git&lt;/a&gt; soon, I decided to take a look at three &lt;a href="http://en.wikipedia.org/wiki/Distributed_revision_control"&gt;DVCMs&lt;/a&gt; to see how they matched each other. Not that I made exhaustive tests. I just thought of a series of operations to perform on a small and a big project to see how they matched against each other.&lt;br /&gt;&lt;br /&gt;I compared &lt;a href="http://git-scm.com/"&gt;git&lt;/a&gt;, &lt;a href="http://www.selenic.com/mercurial/wiki/"&gt;mercurial&lt;/a&gt; and &lt;a href="http://bazaar-vcs.org/"&gt;bazaar&lt;/a&gt; (the one I use).&lt;br /&gt;&lt;br /&gt;The small project I used was a project of mine (some thousand lines of code.... not too big). I used a sequence of ten revisions taken from the project and stuffed them in the three VCMs.&lt;br /&gt;&lt;br /&gt;The big project was linux (the kernel). Given the time that some operations took (plus the room that it took on my already mostly filled up box) I only tried with revisions 2.6.27 (327 MB) and 2.8.28.8 (348 MB).&lt;br /&gt;&lt;br /&gt;I measured performance both in time taken for the operations and room taken by the repository. I'm using my dated box (4 years old?) on jaunty using the repository packages. Verbigracia: git 1.6.0.4, hg 1.1.2 and bzr 1.13&lt;br /&gt;&lt;br /&gt;Here are the results:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Time Performance&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Small Project&lt;/span&gt;&lt;br /&gt;On the small project the absolute winner was git. Second was mercurial and third bazaar. Git made most of the operations 3 to 10 times faster than mercurial and the later did them mostly three times faster than bazaar. Of course, as it's a smal project, what git could do in the blink of an eye, bazaar could do it in a longer blink of an eye. The slower operation on all three VCMs was a revert after having deleted the whole project. It took bazaar 1,72 seconds on the biggest revision (the 10th), mercurial made it in 0,56 and git took 0,13 (on the 8th revision... I was already bored with seeing git kicking a55es).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Big project&lt;/span&gt;&lt;br /&gt;Here I expected git to mop the floor with the other VCMs. Given Linus' dislike for slowness (at least on VCMs subjects) and that at least bazaar recommends not to use it for big projects, I expected to see git go faster than Ussain Bolt yet here I saw mixed results amazingly having bazaar (the slowest of them all on a small project) be the fastest sometimes (not that I did things people would normally do on a project.... I don't think you will work with a 20 MB patch between one revision an another, anyway).&lt;br /&gt;&lt;br /&gt;On the first &lt;span style="font-style: italic;"&gt;add&lt;/span&gt; (a 300+MB add) results were veeeeery strange. Here git dragged itself to let the others pass over it. Mercurial took ~6 seconds, Bazaar made it in ~41 seconds, but git.... well, it made it in ~106 seconds. That shattered my expectations... and that was for starters.&lt;br /&gt;&lt;br /&gt;Status after an &lt;span style="font-style: italic;"&gt;add&lt;/span&gt;: On the first revision, bazaar and git were very close around 3-4 seconds... bazaar made it at over 10 seconds.... but on the add of the second revision we had very different results: ~3 seconds for mercurial, ~14 seconds for bazaar and git made it at ~191 seconds.&lt;br /&gt;&lt;br /&gt;For the first &lt;span style="font-style: italic;"&gt;commit&lt;/span&gt;, git won easily. It took git ~55 seconds, Mercurial did it in ~131 seconds and bazaar arrived when the party was already over at ~203 seconds (mercurial was already drunk and git was on the way to the hospital)... however on the second commit (remember, it's over a 20 MBs difference), they were all much closer. Mercurial arrived last with ~168 seconds, git second with ~144 seconds and bazaar (oh, my!) first with ~130 seconds. Now I didn't expect that.&lt;br /&gt;&lt;br /&gt;After the commit, (again) I expected git to fly when asked for a &lt;span style="font-style: italic;"&gt;status&lt;/span&gt;. But it didn't deliver. Both times mercurial was first, bazaar was second with about double the time and git was third with about 5 times the time for mercurial. By the way, the status after the first commit was about 3 times slower than the second on all VCMs.&lt;br /&gt;&lt;br /&gt;Now, when I removed all the content of the project (&lt;span style="font-style: italic;"&gt;rm * -dfR&lt;/span&gt;) and asked for a status, we went back to &lt;span style="font-style: italic;"&gt;normal&lt;/span&gt;: git first, mercurial second bazaar third. For both revisions, bazaar stayed around  8-9 seconds. Mercurial made it in ~8 seconds for the first and ~4 seconds for the second. Git made it in ~2 for the first and ~4 for the second.&lt;br /&gt;&lt;br /&gt;Then I tried to &lt;span style="font-style: italic;"&gt;revert&lt;/span&gt; (in bazaar and mercurial, &lt;span style="font-style: italic;"&gt;reset --hard HEAD&lt;/span&gt; for git) after having removed everything. Here the result were strange again. Bazaar made it first with 213 and ~212. Mercurial and git exchanged places between the two revisions. First revision, mercurial made it in ~356 and git made it in ~435. Second revision, git made it in ~455 and mercurial in ~459.&lt;br /&gt;&lt;br /&gt;Then I tried to go to 2.6.27. Mercurial took ~88 seconds and bazaar was waaaaaaaaaay behind at ~507. When i revert back to the last revision, mercurial made it in ~186 and bazaar made it in ~393. When I tried it in git (with a checkout) when I &lt;span style="font-style: italic;"&gt;reverted&lt;/span&gt; to the first revision, I &lt;span style="font-style: italic;"&gt;destroyed &lt;/span&gt;(I think) the second revision, so I decided to not include the time it took to &lt;span style="font-style: italic;"&gt;revert/revert&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;So, I thought that git would be the clear winner and the fact is that I got mixed results. Perhaps people can join in and give me some insights about why it was like that.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Repository Size Performance&lt;/span&gt;&lt;br /&gt;Here there were no mixed results. Both for a small project and a big project, bazaar was the clear winner. Mercurial made it second and git arrived last.&lt;br /&gt;&lt;br /&gt;Bazaar's repository size for the small project was around 10-40% smaller than mercurial's. Also bazaar was around a third the size of git's.&lt;br /&gt;&lt;br /&gt;On the big project, here are the sizes:&lt;br /&gt;Bazaar: 87152k for the first revision and 99456k for the second.&lt;br /&gt;Mercurial: 148844k and 166122k&lt;br /&gt;Git: 158912k and 228544k&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Bottomline&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Well.... I would have loved to give you a clear winner, but the fact is that there wasn't. For a small project you already know who the best is in terms of user time and repository size... but for a big project, it's a little more blury. I urge you to jump into the comments area to give me your thoughts on it.&lt;br /&gt;&lt;br /&gt;As usual, keep in mind that other than performance, there are other differences between all of them in terms of features. It's not just about performance to decide what DVCM to use for a project.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Disclaimer&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;I could have made a mistake when working with mercurial or git, as I didn't know how to use them before writing this article (and I still don't). So if you think I could try to do something a little different, then go ahead, mail me or post a comment. Perhaps we could create a test suite or something to compare their performance.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1647655709615025819-7000274086221358527?l=maratux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maratux.blogspot.com/feeds/7000274086221358527/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://maratux.blogspot.com/2009/03/one-dvcm-to-rule-them-all.html#comment-form' title='3 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/7000274086221358527'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/7000274086221358527'/><link rel='alternate' type='text/html' href='http://maratux.blogspot.com/2009/03/one-dvcm-to-rule-them-all.html' title='One DVCM to rule them all'/><author><name>Edmundo Carmona</name><uri>http://www.blogger.com/profile/12584230508687563031</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_aeaDXhkMgRg/S_nW9OXlluI/AAAAAAAAACQ/UpHhxQ3kO88/S220/Yo_la_vasca.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1647655709615025819.post-6069883050281244497</id><published>2009-03-25T17:51:00.000-07:00</published><updated>2009-03-31T10:55:53.586-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='git'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'>Microsoft uses git for version control</title><content type='html'>Not only has &lt;a href="http://www.linuxtoday.com/news_story.php3?ltsn=2009-03-19-032-35-NW-SW"&gt;GNOME decided to switch to using git&lt;/a&gt;. We have learned that &lt;a href="http://www.youtube.com/watch?v=uBUgEx_91BU"&gt;development at Microsoft is based on git&lt;/a&gt; too.&lt;br /&gt;&lt;br /&gt;Development for Windows 7 is handled on a modified (in-house) version of git that allows it to run &lt;span style="font-style: italic;"&gt;natively&lt;/span&gt; on Windows (the blessings of the GPL, I believe they must think at Redmond). Why reinvent the wheel when one of the best tools for the job is out there for free?&lt;br /&gt;&lt;br /&gt;According to our sources, at first, some developers introduced git behind the backs of their managers by using it on top of &lt;a href="http://www.cygwin.com/"&gt;cygwin&lt;/a&gt;. As they felt more comfortable with the tool and presented their benchmarks to management, it was obvious that git allowed development to be carried out in a much more efficient fashion. Then they started the process of making git run natively on windows without needing an intermediate layer, which allowed it to run even faster. It has been reported that the patches to git will be sent upstream once Windows 7 reaches RTM.&lt;br /&gt;&lt;br /&gt;This may sound as shocking news for some people, but over the last couple of years Microsoft has been &lt;a href="http://www.youtube.com/watch?v=LJZNtlFlNvc"&gt;trying to get cozier with open source&lt;/a&gt;... and this is yet another example of it. Unfortunately Microsoft's Horacio Gutierrez wasn't available for comments, nor Lawrence Crumpton.&lt;br /&gt;&lt;br /&gt;Having said that, did you notice that it's April 1st? It's the only way something that far fetched could ever be published.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;My opinion&lt;/span&gt;: I hope they are using &lt;a href="http://en.wikipedia.org/wiki/RCS"&gt;RCS&lt;/a&gt;... or even better: no source control at all. :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1647655709615025819-6069883050281244497?l=maratux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maratux.blogspot.com/feeds/6069883050281244497/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://maratux.blogspot.com/2009/03/microsoft-uses-git-for-version-control.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/6069883050281244497'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/6069883050281244497'/><link rel='alternate' type='text/html' href='http://maratux.blogspot.com/2009/03/microsoft-uses-git-for-version-control.html' title='Microsoft uses git for version control'/><author><name>Edmundo Carmona</name><uri>http://www.blogger.com/profile/12584230508687563031</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_aeaDXhkMgRg/S_nW9OXlluI/AAAAAAAAACQ/UpHhxQ3kO88/S220/Yo_la_vasca.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1647655709615025819.post-4178885893650335964</id><published>2009-03-25T10:57:00.000-07:00</published><updated>2009-03-25T11:47:57.476-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='performance'/><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='get the facts'/><category scheme='http://www.blogger.com/atom/ns#' term='IE8'/><category scheme='http://www.blogger.com/atom/ns#' term='browsers'/><title type='text'>"Get the facts" on browsers</title><content type='html'>When I was heading to download IE8 to test its JS performance, I saw &lt;a href="http://www.microsoft.com/windows/internet-explorer/videos.aspx?mname=IE8_Perf_Test2"&gt;this link&lt;/a&gt; about "&lt;span style="font-style: italic;"&gt;Getting the facts&lt;/span&gt;" on web browsers. Having the knowledge of what "Get the facts" meant back in time when that was devoted to trying to put GNU/Linux in bad light against Windows-et-all, I just couldn't help myself and went in there to see what was showing up.&lt;br /&gt;&lt;br /&gt;They have this video where they show how IE8 renders "index" pages of popular sites. Apparently IE8 kicks ass on that (as a matter of fact the differences between rendering times of the browsers they compare is very little, sometimes the blink of an eye). And so they have the guts to affirm that IE8 is one of the &lt;span style="font-style: italic;"&gt;fastest browsers&lt;/span&gt; on earth. Is that really? Is rendering times for pages the real measure for browser speed? &lt;span style="font-weight: bold;"&gt;Come on&lt;/span&gt;! As applications are more and more "functional" and so becoming more Javascript intensive (yes, not VBScript intensive, but Javascript... thanks heaven) then I think Javascript performance is just as important.. or even more so that rendering times (specially if the difference in terms of rendering is so close between the browsers they showcase).&lt;br /&gt;&lt;br /&gt;And how does IE8 do on that front (on my box)?&lt;br /&gt;V8: 34.4&lt;br /&gt;SunSpider: 9164.4&lt;br /&gt;&lt;br /&gt;And, as you can see &lt;a href="http://maratux.blogspot.com/2009/02/browser-wars-js-performance-on-my-dated.html"&gt;here&lt;/a&gt;, that's a looooooooong shot from being &lt;span style="font-style: italic;"&gt;fast&lt;/span&gt;. So Microsoft, why don't you try to &lt;span style="font-style: italic; font-weight: bold;"&gt;get the facts&lt;/span&gt; right at least once?&lt;br /&gt;&lt;br /&gt;PS Were they saving that video for April Fool's day? I guess I just blew it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1647655709615025819-4178885893650335964?l=maratux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maratux.blogspot.com/feeds/4178885893650335964/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://maratux.blogspot.com/2009/03/get-facts-on-browsers.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/4178885893650335964'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/4178885893650335964'/><link rel='alternate' type='text/html' href='http://maratux.blogspot.com/2009/03/get-facts-on-browsers.html' title='&quot;Get the facts&quot; on browsers'/><author><name>Edmundo Carmona</name><uri>http://www.blogger.com/profile/12584230508687563031</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_aeaDXhkMgRg/S_nW9OXlluI/AAAAAAAAACQ/UpHhxQ3kO88/S220/Yo_la_vasca.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1647655709615025819.post-6484967369112053450</id><published>2009-03-19T08:13:00.000-07:00</published><updated>2009-03-23T15:38:49.699-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='sun'/><category scheme='http://www.blogger.com/atom/ns#' term='ibm'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'>IBM(+Sun) Vs Microsoft</title><content type='html'>Well well.... "History repeats itself" is something we hear sometimes.&lt;br /&gt;&lt;br /&gt;So &lt;a href="http://online.wsj.com/article/SB123735124997967063.html"&gt;IBM appears to be headed to buy Sun Microsystems&lt;/a&gt;. That's quite a move.... I have seen comments from people noticing how Solaris/OpenSolaris will affect/be affected by the merge... but I haven't seen people taking these other three things in consideration:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;- Java&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;- MySQL&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;- OpenOffice&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Lotus Symphony is based on OpenOffice so I guess it will be easily assimilated inside IBM. How will that affect OpenOffice development? It's being criticized before for being too Sun-centric. How will this affect the MS Office / OpenOffice saga?&lt;br /&gt;&lt;br /&gt;I don't know how MySQL will play out inside IBM. Now IBM would be in charge of DB2, Informix (bought in 2001) and MySQL. Will that be enough to wipe SQL Server out of this world?&lt;br /&gt;&lt;br /&gt;But &lt;span style="font-weight: bold;"&gt;Java&lt;/span&gt;! Java vs .Net is old news. And Java's development (as OpenOffice) had being criticized for being too Sun-centric. But now Java being pushed forward by IBM (in house).... that will be interesting to see.&lt;br /&gt;&lt;br /&gt;Are these things gonna take the IBM/Microsoft battle into another chapter?&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Sidenote&lt;/span&gt;&lt;br /&gt;I wonder what &lt;span style="font-weight: bold;"&gt;Darl McBride&lt;/span&gt; would have to say about this. :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1647655709615025819-6484967369112053450?l=maratux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maratux.blogspot.com/feeds/6484967369112053450/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://maratux.blogspot.com/2009/03/ibmsun-vs-microsoft.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/6484967369112053450'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/6484967369112053450'/><link rel='alternate' type='text/html' href='http://maratux.blogspot.com/2009/03/ibmsun-vs-microsoft.html' title='IBM(+Sun) Vs Microsoft'/><author><name>Edmundo Carmona</name><uri>http://www.blogger.com/profile/12584230508687563031</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_aeaDXhkMgRg/S_nW9OXlluI/AAAAAAAAACQ/UpHhxQ3kO88/S220/Yo_la_vasca.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1647655709615025819.post-7741590110209268488</id><published>2009-03-14T08:54:00.000-07:00</published><updated>2009-03-15T17:49:28.127-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='bzr'/><category scheme='http://www.blogger.com/atom/ns#' term='apt'/><category scheme='http://www.blogger.com/atom/ns#' term='qbzr'/><category scheme='http://www.blogger.com/atom/ns#' term='jsp'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='dpkg'/><category scheme='http://www.blogger.com/atom/ns#' term='GNU/Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='presentation'/><title type='text'>Give a presentation? Use a LiveCD!</title><content type='html'>Hi!&lt;br /&gt;&lt;br /&gt;Yesterday I had to give a presentation on the way (or say, &lt;span style="font-weight: bold;"&gt;my&lt;/span&gt; way) to develop a small (so far) web system. It's built on JSP and I'm working on Eclipse (no fancy thing... just yet). So I wanted to go there and show my &lt;span style="font-style: italic;"&gt;workflow&lt;/span&gt; in terms of branches (plain application, application+design, etc) plus I would have liked to control my home computer remotely (through ssh remotely... if possible).&lt;br /&gt;&lt;br /&gt;On top of eclipse (and java), I would have had to use &lt;span style="font-weight: bold;"&gt;bzr&lt;/span&gt; and &lt;span style="font-weight: bold;"&gt;qbzr&lt;/span&gt;... now... I wasn't going to be able to carry a computer with me, so I was going to get a box from the company I was doing the presentation for. Well.... what are my options? Expect to get a Güindous Computer ad start installing things on a computer that's not mine. That didn't sound cool. Another was to get a GNU/Linux box (perhaps) and start installing stuff (not cool either). But how about taking a LiveCD with me and carry along all things I'd need for the presentation (in case there's no internet access)? Let's give it a try.&lt;br /&gt;&lt;br /&gt;I use a Kubuntu Intrepid LiveCD (but the procedure will wok like that on any debian-based distro). I have one standalone installer of the JRE from sun and Eclipse in a compressed format, so that side of the story is covered. But then bzr/qbzr? I'd have to get them from packages with apt... but how do I know what packages I will need? Get your notebook.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Home Procedure&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Start the LiveCD, wait for it to finish starting. Then, add the stable repositories of bzr and qbzr in sources.list (that's because the &lt;span style="font-style: italic;"&gt;normal&lt;/span&gt; repos of ubuntu intrepid have very dated packages.. at least of qbzr). So far, so good. Now, the normal procedure to install bzr/qbzr:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-family:courier new;" &gt;$ sudo apt-get update&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-family:courier new;" &gt;$ sudo apt-get install bzr qbzr&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;By now, you have both packages installed in your LiveCD session.... but you want to be able to install them later on (like, at the company without an internet connection, right?). So, what can you do? Well.... let me tell you a little secret: If you didn't &lt;span style="font-style: italic;"&gt;clean &lt;/span&gt;after you installed the packages, you can grab all those beautiful .deb packages (bzr, qbzr and their dependencies) from this location: &lt;span style="font-weight: bold;"&gt;/var/cache/apt/archives/&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;So, hook up a pen drive, mount it and copy those .deb packages on it:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-family:courier new;" &gt;cp /var/cache/apt/archives/*.deb /somewhere&lt;/span&gt;/&lt;br /&gt;&lt;br /&gt;Now head for your presentation.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Company Procedure (or home test.... just in case)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;You arrive at the company and are presented with the computer you will give your presentation on. So let's get our hands dirty right away. Start your LiveCD, hook up your pen drive and mount it. Then, install all those .deb packages:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-family:courier new;" &gt;sudo dpkg -i /somewhere/*.deb&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;And you are done. &lt;span style="font-weight: bold;"&gt;bzr&lt;/span&gt; and &lt;span style="font-weight: bold;"&gt;qbzr&lt;/span&gt; are installed. You had the jre and eclipse files in the pendrive too.. two branches of the project too, so you do the installation procedure and can start my presentation right away. Finish your presentation, turn of the box, give it back.... nothing happened. End of Story.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;A little rant.... back in time...&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;I learned about this trick some time ago. About 3 years ago, I was going to a Cisco Accademy course (CCNA preparation) and I remember that when we reached the DHCP part, our teacher (by the way, and old friend of mine from my &lt;span style="font-style: italic;"&gt;going-to-the-youth-orchestra&lt;/span&gt; days, Juan Jakymec) told us that one of our fellow students was going to have one of the boxes converted into a Güindous Server so that we could see how it worked. I volunteered to have GNU/Linux used as a DHCP server too.&lt;br /&gt;&lt;br /&gt;Comes the day.. the other guy had showed up at the classroom who knows when in order to install Güindous Server on the computer. So, I'm told to go first, I use this trick that I described before to install the DHCP server, try to start it but it fails.... so I dig a little on the logs (or perhaps running it as a normal process to see its output... can't remember). I get the error cause of the IP addresses that the DHCP service is told to provide and the IP address of the network interface. So I change the configuration of dhcpd, start it.... we're ready to go. I even start tcpdump so that we can see what's going on between the server and the clients. All lovely. Less than 10 minutes after I was given the chance to do the show, I'm heading to my chair with a big ear-to-ear smile on my face.&lt;br /&gt;&lt;br /&gt;Time for the Güindous Server to show off.... well... let's just say that it wasn't pretty. You know how these things work in güindous when something fails. You get a small window telling you that something failed... no details. So he starts going (guessing, basically) here and there to see what happened... tries and retries.... well... some minutes go by and then he is able to start the service... no tcpdump, though. Bottom line:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Güindous = esoterism, GNU/Linux = determinism&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Come on.... think about it... I was able to do the whole thing in 10 minutes.... I left the computer as it was before I had a finger on it.... the other guy? he had to install a whole operating system beforehand in order to see a dhcp service working. Does it even make sense at all?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1647655709615025819-7741590110209268488?l=maratux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maratux.blogspot.com/feeds/7741590110209268488/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://maratux.blogspot.com/2009/03/give-presentation-use-livecd.html#comment-form' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/7741590110209268488'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/7741590110209268488'/><link rel='alternate' type='text/html' href='http://maratux.blogspot.com/2009/03/give-presentation-use-livecd.html' title='Give a presentation? Use a LiveCD!'/><author><name>Edmundo Carmona</name><uri>http://www.blogger.com/profile/12584230508687563031</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_aeaDXhkMgRg/S_nW9OXlluI/AAAAAAAAACQ/UpHhxQ3kO88/S220/Yo_la_vasca.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1647655709615025819.post-4323467230174104355</id><published>2009-03-12T08:53:00.001-07:00</published><updated>2009-03-12T09:16:26.346-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jaunty'/><category scheme='http://www.blogger.com/atom/ns#' term='apt'/><category scheme='http://www.blogger.com/atom/ns#' term='kubuntu'/><category scheme='http://www.blogger.com/atom/ns#' term='hack'/><title type='text'>Jaunty: Apt is broken? Move to another country!</title><content type='html'>Hi!&lt;br /&gt;&lt;br /&gt;You might remember that &lt;a href="http://maratux.blogspot.com/2009/03/from-intrepid-to-jaunty-with-no-room.html"&gt;I had switched to Jaunty&lt;/a&gt; to give it a test drive. Well, since yesterday I was having this problem with apt. It was throwing a &lt;span style="font-style: italic;"&gt;segmentation fault&lt;/span&gt; whenever I tried to work with its repos (upgrade would seg fault, and dist-upgrade, and the same for install). In other words.... a broken apt = an un-upgradable system. Not good. That's not something I wanted to face at all. Having X not start once in a while is something... but having a broken package manager is a whole different story.&lt;br /&gt;&lt;br /&gt;After &lt;a href="https://bugs.launchpad.net/ubuntu/+source/apt/+bug/341402"&gt;submitting the bug to launchpad&lt;/a&gt; and spending a little time at #ubuntu+1 one guy there (Thanks, IntuitiveNipple) noticed that one of the files that apt handles appeared to be broken (&lt;span style="font-weight: bold;"&gt;/var/cache/apt/pkgcache.bin&lt;/span&gt;). I removed the file, but the file stayed there on the FS (go figure!). After some attempts at it, I was able to remove the file. But then I tried to update again... and &lt;span style="font-weight: bold;"&gt;BOOM! SEGFAULT. &lt;/span&gt;It's not going to give itself away so easily.&lt;br /&gt;&lt;br /&gt;So.. after about 24 hours I'm stuck with no clue of what to do. I even had the crazy thought of reinstalling kubuntu from scratch (hell, I &lt;span style="font-size:180%;"&gt;&lt;span style="font-weight: bold;"&gt;hated&lt;/span&gt;&lt;/span&gt; that thought.... made me think of my long forgotten days of formatting every 6 months to reinstall güindous). But I did a simple test instead: Switched my repos to use the venezuelan repositories instead of the colombian ones:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-family:courier new;" &gt;$ sudo su&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-family:courier new;" &gt;# cd /etc/apt/&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-family:courier new;" &gt;# sed 's/co\./ve\./' sources.list &gt; sources.list.ve&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-family:courier new;" &gt;# mv sources.list sources.list.co&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-family:courier new;" &gt;# mv sources.list.ve sources.list&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-family:courier new;" &gt;# exit&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-family:courier new;" &gt;$&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;And voilà, apt is back on track. So the problem was the repos for colombia after all. Hope they solve it soon.... and why didn't apt complain about a discrepancy or something instead of exploding? &lt;span style="font-weight: bold;"&gt;Weird.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1647655709615025819-4323467230174104355?l=maratux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maratux.blogspot.com/feeds/4323467230174104355/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://maratux.blogspot.com/2009/03/jaunty-apt-is-broken-move-to-another.html#comment-form' title='4 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/4323467230174104355'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/4323467230174104355'/><link rel='alternate' type='text/html' href='http://maratux.blogspot.com/2009/03/jaunty-apt-is-broken-move-to-another.html' title='Jaunty: Apt is broken? Move to another country!'/><author><name>Edmundo Carmona</name><uri>http://www.blogger.com/profile/12584230508687563031</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_aeaDXhkMgRg/S_nW9OXlluI/AAAAAAAAACQ/UpHhxQ3kO88/S220/Yo_la_vasca.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1647655709615025819.post-7201692130206454980</id><published>2009-03-06T05:49:00.000-08:00</published><updated>2009-03-07T19:31:57.949-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux. ubuntu'/><category scheme='http://www.blogger.com/atom/ns#' term='jaunty'/><category scheme='http://www.blogger.com/atom/ns#' term='debian'/><category scheme='http://www.blogger.com/atom/ns#' term='kernel'/><category scheme='http://www.blogger.com/atom/ns#' term='GNU/Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='hack'/><category scheme='http://www.blogger.com/atom/ns#' term='chroot cage'/><category scheme='http://www.blogger.com/atom/ns#' term='chroot'/><title type='text'>Oops! Removed all kernels!</title><content type='html'>Hi!&lt;br /&gt;&lt;br /&gt;My last post on this blog was about &lt;a href="http://maratux.blogspot.com/2009/03/from-intrepid-to-jaunty-with-no-room.html"&gt;how to switch from intrepid to jaunty without having much room on hard drive&lt;/a&gt;. One &lt;span style="font-style: italic;"&gt;accident&lt;/span&gt; I had while doing this was that I removed all my linux kernels and so I ended up with a box that could do mem tests all day long or boot into windows (god forbid). So, here's how I got it back. I did it on kubuntu jaunty, but it could work almost the same if you tried on debian or any other distribution that has a package manager (or even without it, though the steps will change, of course).&lt;br /&gt;&lt;br /&gt;First thing, I booted the box with a Kubuntu LiveCD. After having booted, I mounted the root partition of my busted GNU/Linux:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;$ sudo su&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;# mkdir /mnt/tmp&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;# mount /dev/sda5 /mnt/tmp&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;After having mounted, let's get into a &lt;span style="font-style: italic;"&gt;chroot cage&lt;/span&gt; so I can manage packages from that mounted partition as if it were root:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;# chroot /mnt/tmp&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Well... it's basically like being on a terminal on the GNU/Linux that has no kernel. I'm at the root of that box, I have a working internet link..... so, let's just install the missing kernel package:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;# apt-get update&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;# apt-get install linux-image-generic&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;We let it do its stuff and reboot and &lt;span style="font-weight: bold;"&gt;tadaaaaaaaaaaaaaaaa&lt;/span&gt;, we're back on track. See? It wasn't that difficult, was it?&lt;br /&gt;&lt;br /&gt;PS If you have separate boot partitions or perhaps a separate /usr, perhaps you'll have to do more mounting before you do the chroot, but the concept remains the same.&lt;br /&gt;&lt;br /&gt;PS2 One reader left a comment where he said that he hated the terminal and wanted a GUI based application to get it done. I was going to post a picture of such an application: konsole. :-D I don't know if such application really exists. I think the situation I described is 1 fairly uncommon, 2 rather easy to fix (if you know where to look). But if you feel really lost, then email me. I'm always available to help. As a matter of fact, back in december I got a box of 9 bottles of italian wine for helping an italian guy recover some data from a broken RAID5 (I wish all people thanked that way... thanks, Marco!).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1647655709615025819-7201692130206454980?l=maratux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maratux.blogspot.com/feeds/7201692130206454980/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://maratux.blogspot.com/2009/03/oops-removed-all-kernels.html#comment-form' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/7201692130206454980'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/7201692130206454980'/><link rel='alternate' type='text/html' href='http://maratux.blogspot.com/2009/03/oops-removed-all-kernels.html' title='Oops! Removed all kernels!'/><author><name>Edmundo Carmona</name><uri>http://www.blogger.com/profile/12584230508687563031</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_aeaDXhkMgRg/S_nW9OXlluI/AAAAAAAAACQ/UpHhxQ3kO88/S220/Yo_la_vasca.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1647655709615025819.post-562007846775389144</id><published>2009-03-04T14:07:00.000-08:00</published><updated>2009-03-05T07:19:10.234-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='packages'/><category scheme='http://www.blogger.com/atom/ns#' term='jaunty'/><category scheme='http://www.blogger.com/atom/ns#' term='apt'/><category scheme='http://www.blogger.com/atom/ns#' term='upgrade'/><category scheme='http://www.blogger.com/atom/ns#' term='little room'/><category scheme='http://www.blogger.com/atom/ns#' term='kubuntu'/><category scheme='http://www.blogger.com/atom/ns#' term='intrepid'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><category scheme='http://www.blogger.com/atom/ns#' term='hack'/><category scheme='http://www.blogger.com/atom/ns#' term='dist-upgrade'/><title type='text'>From intrepid to jaunty.... with no room left</title><content type='html'>Hi!&lt;br /&gt;&lt;br /&gt;Today I decided to move my desktop to jaunty. It's still an alpha but I'm not afraid of having to face a non-working Xorg once in a while and having to use the VTs instead. Given the speed improvements I've read about... the time is now... there's just a &lt;span style="font-weight: bold;"&gt;tiny&lt;/span&gt; little problem. I have no room left to do the &lt;span style="font-weight: bold;"&gt;dist-upgrade&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-size:85%;" &gt;&lt;span style="font-family:courier new;"&gt;$ df&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;S.ficheros         Bloques de 1K   Usado    Dispon Uso% Montado en&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;/dev/sda5              5162796   4783244    117296  98% /&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;tmpfs                   508248         0    508248   0% /lib/init/rw&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;varrun                  508248       228    508020   1% /var/run&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;varlock                 508248         4    508244   1% /var/lock&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;udev                    508248      2824    505424   1% /dev&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;tmpfs                   508248        12    508236   1% /dev/shm&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;lrm                     508248      2004    506244   1% /lib/modules/2.6.27-11-generic/volatile&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;/dev/sda8              6190664   5793332     82864  99% /home&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Anyway... let's just try, ok? This is the second time i have to do this process. Why? Cause it's my wife's computer and I have a little space set up for GNU/Linux on it (and if people don't start using &lt;a href="http://www.cdfleamarket.com/"&gt;www.cdfleamarket.com&lt;/a&gt;, I'll have to repeat the process for Kinky Kangaroo... I mean, Karmic Koala as well.... so why don't you give me a hand and use the site? It's free anyway!).&lt;br /&gt;&lt;br /&gt;First, let's set up &lt;span style="font-style: italic;"&gt;apt&lt;/span&gt; to use the jaunty repositories instead:&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;font-family:courier new;" &gt;$ sudo su&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-family:courier new;" &gt;# cd /etc/apt&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-family:courier new;" &gt;# sed 's/intrepid/jaunty/' sources.list &gt; sources.list.jaunty&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-family:courier new;" &gt;# rm sources.list&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-family:courier new;" &gt;# ln -s sources.list.jaunty sources.list&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-family:courier new;" &gt;# exit&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;I like to keep the different versions of sources.list so I have a version of each ubuntu release sin &lt;span style="font-weight: bold;"&gt;edgy&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Now, let's try to dist-upgrade to see what happens:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;font-family:courier new;" &gt;$ sudo apt-get update&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-family:courier new;" &gt;$ sudo apt-get dist-upgrade&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-family:courier new;" &gt;1010 upgraded, 98 newly installed, 7 to remove and 1 not upgraded.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-family:courier new;" &gt;Need to get 1073MB of archives.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-family:courier new;" &gt;After this operation, 639MB of additional disk space will be used.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-family:courier new;" &gt;E: You don't have enough free space in /var/cache/apt/archives/&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Well.... that's a long &lt;span style="font-weight: bold;"&gt;no&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Ok... here's the deal: As long as you keep the package &lt;span style="font-weight: bold;"&gt;ubuntu-standard&lt;/span&gt; installed, you can remove basically everything else and the system will keep on working. So let's remove all this desktop packages (a lot of them at least) so that we have a system basic enough that we could dist-upgrade.&lt;br /&gt;&lt;br /&gt;You have to know &lt;a href="http://tldp.org/LDP/GNU-Linux-Tools-Summary/html/virtual-terminals.html"&gt;how to use a VT&lt;/a&gt; before you proceed, cause you won't be able to use the graphical environment for a while.&lt;br /&gt;&lt;br /&gt;If you are ready, just close your graphical session and head to one of the VTs.&lt;br /&gt;&lt;br /&gt;I use &lt;span style="font-weight: bold;"&gt;kubuntu&lt;/span&gt;, so the first thing is to remove the &lt;span style="font-weight: bold;"&gt;kubuntu-desktop&lt;/span&gt; package so that I get "permission" to automagically remove all the other packages that depend on it (if you use Ubuntu instead, then it's &lt;span style="font-weight: bold;"&gt;ubuntu-desktop&lt;/span&gt;):&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;font-family:courier new;" &gt;$ sudo apt-get remove --purge kubuntu-desktop&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;roughly 50 Ks freed. :-S&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;font-family:courier new;" &gt;$ sudo apt-get autoremove --purge&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Nothing :'(&lt;br /&gt;&lt;br /&gt;Oh well.... I didn't expect that. Seems like kubuntu-desktop has no dependencies... that could be because I use the repositories for KDE 4.2. So let's try with something a little more &lt;span style="font-style: italic;"&gt;straight-forward&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;font-family:courier new;" &gt;$ sudo apt-get remove --purge kde'*' openoffice'*' xfce'*' firefox'*'&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;168 packages to be removed&lt;br /&gt;771 MBs to be freed&lt;br /&gt;3 Mbs of data to install right away&lt;br /&gt;&lt;br /&gt;Much better now.&lt;br /&gt;&lt;br /&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;&lt;span style="font-style: italic;"&gt;$ sudo apt-get autoremove --purge&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;another 153 packages to eliminate&lt;br /&gt;235 Mbs to be freed&lt;br /&gt;&lt;br /&gt;Now I have about 1Gb of space, but apt-get update still needs to download&lt;br /&gt;718 MBs of data plus take another 530 MBs. I have to keep on cutting stuff out.&lt;br /&gt;&lt;br /&gt;Let's go with some other things that take a lot of room till I get enough free space:&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;font-family:courier new;" &gt;$sudo apt-get autoremove texlive'*' lilypond'*' --purge&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;I didn't know I could ask &lt;span style="font-weight: bold;"&gt;autoremove&lt;/span&gt; directly to remove packages and their unnecessary dependencies. You never know when knowledge will hit at your screen.&lt;br /&gt;200+ MBs freed&lt;br /&gt;Now the dist-upgrade would barely fit in there, but let's make a little more room just in case:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;font-family:courier new;" &gt;$ sudo apt-get autoremove xorg --purge&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;About 1.4 GBs are free by now.&lt;br /&gt;&lt;br /&gt;There are still a lot of packages that are not &lt;span style="font-style: italic;"&gt;basic&lt;/span&gt; still installed... but I won't care about them now.&lt;br /&gt;&lt;br /&gt;Let's try to dist-upgrade to see how it goes now.&lt;br /&gt;&lt;span style="font-style: italic;font-family:courier new;font-size:85%;"  &gt;sudo apt-get dist-upgrade&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Now it's a 500 MBs download plus 357 Mbs to take for installation. I'll let it do it like that, then I'll &lt;span style="font-style: italic;"&gt;clean&lt;/span&gt; and then I will install kubuntu-desktop so I get the environment back.&lt;br /&gt;&lt;br /&gt;I'll use lynx to read the latest news on another VT while the download takes place to see what I'll do next.&lt;br /&gt;&lt;br /&gt;After a text round of &lt;a href="http://www.linuxtoday.com/"&gt;www.linuxtoday.com&lt;/a&gt;, &lt;a href="http://www.osnews.com/"&gt;www.osnews.com&lt;/a&gt;, &lt;a href="http://www.eltiempo.com/"&gt;www.eltiempo.com&lt;/a&gt;, &lt;a href="http://www.noticias24.com/"&gt;www.noticias24.com&lt;/a&gt;, &lt;a href="http://www.talcualdigital.com/"&gt;www.talcualdigital.com&lt;/a&gt;, prelude of the Suite Antillaise of Francis Kleynjans (that'd be me playing guitar), Aire de Zamba and a little more guitar fiddling, it's downloaded. Now I have to see if the upgrading process asks me something (some more guitar fiddling).&lt;br /&gt;&lt;br /&gt;dist-upgrade is done. Let's run it one more time just in case. Ran it. Nothing is left to do. So let's reboot so I can uninstall this kernel I'm running from intrepid and continue the upgrading process.&lt;br /&gt;&lt;br /&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;&lt;span style="font-style: italic;"&gt;sudo reboot&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Now... booting was &lt;span style="font-weight: bold;"&gt;FAST&lt;/span&gt;! At least to the console login. Let's see if this wonder can keep that way after I install the desktop ;-).&lt;br /&gt;&lt;br /&gt;Let's remove the old kernel then:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-family:courier new;font-size:85%;"  &gt;ls /boot/vmlinuz*&lt;/span&gt;&lt;br /&gt;There I see that I have a 2.6.27-x kernel.&lt;br /&gt;&lt;br /&gt;Let's remove the 2.6.27-whatever:&lt;br /&gt;&lt;br /&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;&lt;span style="font-style: italic;"&gt;sudo apt-get autoremove --purge linux-image-2.6.27'*'&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Some more packages went away along with it. A total of over 280 Mbs are freed.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold;"&gt;Sidenote: I just discovered (next morning) that the new kernel went away with it, so perhaps it's a good idea to remove the linux-image-2.6.27-x-generic instead (providing the exact number in x instead... so watch out!).&lt;/span&gt;&lt;/span&gt; &lt;span style="font-weight: bold;font-size:85%;" &gt;Now... how do I install a new kernel on a non booting system? I'll be back!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Now, let's remove all the .deb files I've downloaded so far that are already installed so I free up that space as well (that won't uninstall the packages... just remove the .deb files that were used to install those packages). Before I clean, I have about 800 Mbs free.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;font-family:courier new;" &gt;sudo apt-get clean&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Now, I have about 1.3 GBs free.&lt;br /&gt;&lt;br /&gt;Next step? Let's bring back the desktop, shall we?&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;font-family:courier new;" &gt;sudo apt-get install kubuntu-desktop&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;257 Mbs to be downloaded, 825 MBs to be used on top of that. So be it.&lt;br /&gt;&lt;br /&gt;Here, I just hit my first problem. The network is down. Why? I just don't know right now. &lt;span style="font-style: italic;"&gt;ifconfig -a&lt;/span&gt; shows me &lt;span style="font-weight: bold;"&gt;eth1&lt;/span&gt; instead of the usual &lt;span style="font-weight: bold;"&gt;eth0&lt;/span&gt;,  tried reconfiguring the interface using &lt;span style="font-weight: bold;"&gt;/etc/network/interfaces&lt;/span&gt; but still won't come up. So I take it to the next lower level:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-size:85%;" &gt;&lt;span style="font-family:courier new;"&gt;sudo dhclient eth1&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I get the configuration from my ISP. So let's go on installing so I can focus on this problem later (and I won't publish the solution in this post.. perhaps in another post tomorrow or so).&lt;br /&gt;&lt;br /&gt;Again:&lt;br /&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;&lt;span style="font-style: italic;"&gt;sudo apt-get install kubuntu-desktop&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;It does work now. Install finishes and now let's go back to graphics mode.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;sudo /etc/init.d/kdm restart&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;And we're back in track. Now I have to install the packages that I use that were uninstalled in the process... but I'll do it as I need them.&lt;br /&gt;&lt;br /&gt;Now, see if you can do that from Vista to 7. :-)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;PS: I was able to reinstall the new kernel after having removed it. The keywords to fix it are: LiveCD + chroot.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1647655709615025819-562007846775389144?l=maratux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maratux.blogspot.com/feeds/562007846775389144/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://maratux.blogspot.com/2009/03/from-intrepid-to-jaunty-with-no-room.html#comment-form' title='3 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/562007846775389144'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/562007846775389144'/><link rel='alternate' type='text/html' href='http://maratux.blogspot.com/2009/03/from-intrepid-to-jaunty-with-no-room.html' title='From intrepid to jaunty.... with no room left'/><author><name>Edmundo Carmona</name><uri>http://www.blogger.com/profile/12584230508687563031</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_aeaDXhkMgRg/S_nW9OXlluI/AAAAAAAAACQ/UpHhxQ3kO88/S220/Yo_la_vasca.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1647655709615025819.post-2837063787557680027</id><published>2009-03-02T17:10:00.000-08:00</published><updated>2009-03-02T17:50:41.351-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Bill Gates'/><category scheme='http://www.blogger.com/atom/ns#' term='Steve Ballmer'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><category scheme='http://www.blogger.com/atom/ns#' term='GNU/Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='digital life'/><title type='text'>Bill Gates suffers from digital phobia</title><content type='html'>Yep... the same guy who is credited with creating the "&lt;span style="font-style: italic;"&gt;desktop computer&lt;/span&gt;" (or so they say) must be suffering from phobia to anything electronic.&lt;br /&gt;&lt;br /&gt;How can we tell? Well... I inferred that after knowing that &lt;a href="http://www.informationweek.com/blog/main/archives/2009/03/bill_gates_has.html"&gt;Bill Gates has banned iPods and iPhones at home&lt;/a&gt;... in the same page where we find that &lt;a href="http://money.cnn.com/magazines/fortune/fortune_archive/2006/04/03/8373041/index.htm"&gt;Steve Ballmer banned using google at home&lt;/a&gt;. We already know that &lt;a href="http://arstechnica.com/microsoft/news/2008/04/bill-gates-the-gpl-which-we-disagree-with.ars"&gt;Bill Gates hates GPL&lt;/a&gt;. But then, if everything that is &lt;span style="font-style: italic;"&gt;against&lt;/span&gt; Microsoft || Windows won't be used by these two (and their families), I can't help but wonder... will they really try to escape using GNU/Linux? Come on... it's like escaping big brother. It's &lt;a href="http://www.linux-foundation.org/weblogs/jzemlin/2009/01/12/the-year-of-the-linux-everything-else/"&gt;everywhere&lt;/a&gt;... even if you can't see it. Does Steve Ballmer use (did Bill Gates use) &lt;a href="http://www.linuxworld.com.au/article/143519/it_unofficial_microsoft_bets_business_linux?fp=2&amp;amp;fpid=1"&gt;Microsoft's Wireless&lt;/a&gt;? If he does, shame on him. Do they ban sites powered by anything but IIS? If that's the case, then poor guys.... they can only use about &lt;a href="http://news.netcraft.com/archives/web_server_survey.html"&gt;30% of the web&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;So.... are Bill Gates and Steve Ballmer's lives going to be increasingly restricted in terms of access to digital resources as time goes by and GNU/Linux makes more and more inroads into our daily lives in unnoticeable ways? I wish they were. It'll be cool to have them both (specially Steve) recluded in one of those monasteries that time has basically forgotten about.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1647655709615025819-2837063787557680027?l=maratux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maratux.blogspot.com/feeds/2837063787557680027/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://maratux.blogspot.com/2009/03/bill-gates-suffers-from-digital-phobia.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/2837063787557680027'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/2837063787557680027'/><link rel='alternate' type='text/html' href='http://maratux.blogspot.com/2009/03/bill-gates-suffers-from-digital-phobia.html' title='Bill Gates suffers from digital phobia'/><author><name>Edmundo Carmona</name><uri>http://www.blogger.com/profile/12584230508687563031</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_aeaDXhkMgRg/S_nW9OXlluI/AAAAAAAAACQ/UpHhxQ3kO88/S220/Yo_la_vasca.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1647655709615025819.post-2555914238840507137</id><published>2009-02-26T15:47:00.000-08:00</published><updated>2009-02-26T17:07:39.212-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='statistics'/><category scheme='http://www.blogger.com/atom/ns#' term='server market share'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><category scheme='http://www.blogger.com/atom/ns#' term='GNU/Linux'/><title type='text'>Server sales: If you're falling, dont' fall so hard</title><content type='html'>And I thought I wasn't going to post anything today.&lt;br /&gt;&lt;br /&gt;I just saw the article of ServerWatch on &lt;a href="http://http://www.serverwatch.com/stats/article.php/3806881"&gt;server sales on Q4'2008&lt;/a&gt;. I had been waiting for it for a while to see how bad the quarter had been given the economy.. but mostly I wanted to see how the GNU/Linux vs Windows battle on the server space is going.&lt;br /&gt;&lt;br /&gt;For Q2 2008 (the IT sector not in decline yet): Windows had a YoY gain of revenue of 1.38% (with market share down to 36.5% from 38.2 one year earlier), UNIX gained 8.22% (market share up to 32.7% from 32.06%) and GNU/Linux had a revenue gain of 4.55% (market share down to 13.4% from 13.6%). GNU/Linux + UNIX make up 46.1% of revenue market share.&lt;br /&gt;&lt;br /&gt;For Q3 2008: Windows had a loss of revenue of 2.86% (reaching 40.8% from 40.4%), UNIX lost -8.15% (&lt;span style="font-weight: bold;"&gt;ouch&lt;/span&gt;!.. down to 29.7% from 31.1%) and GNU/Linux barely made it even with a gain of 0.49% (reaching 14% from 13.4%) . GNU/Linux + UNIX held 43.7% of the market.&lt;br /&gt;&lt;br /&gt;Q4 was a poem (if you ask me... I doubt Steve Ballmer will agree): Windows nosedived with a loss of 17.07% (&lt;span style="font-weight: bold;"&gt;double ouch!!&lt;/span&gt;... down to 35.3% of the market from 36.6%), GNU/Linux had a loss of 7.92% (reaching 13.6% from 12.7%) and UNIX lost 6.52% (reaching 36.2% from 33.3%). GNU/Linux + UNIX got 49.8% of the market.&lt;br /&gt;&lt;br /&gt;The numbers and percentages can be a little misleading... so let me try to &lt;span style="font-weight: bold;"&gt;mislead&lt;/span&gt; you a little more: If you look at the amounts of &lt;span style="font-style: italic;"&gt;gross&lt;/span&gt; losses/gains of revenue, for example, you will see that in Q2 2008, Windows had an increase of YoY revenue of roughly US$ 70 million, GNU/Linux made a little more with 80 million (it's hard to know cause the numbers are rounded, so perhaps the difference could have been a little less or more) but UNIX had an increase of 350 millions (wow!). Q3 is another story: Windows had a decrease of revenue of 150 million, GNU/Linux broke even and UNIX had a decrease of 330 million. And Q4... well, this is not for the faint of heart: Windows had a YoY decrease of revenue of..... &lt;span style="font-weight: bold;"&gt;980 million&lt;/span&gt;, GNU/Linux had a decrease of 150 million and UNIX had a decrease of 340 million.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Bottom line&lt;/span&gt;: If on good times you are growing well, and on bad times you are shrinking less than &lt;span style="font-style: italic;"&gt;your enemy&lt;/span&gt;... I think you aren't doing so bad after all, don't you think?&lt;br /&gt;&lt;br /&gt;The &lt;span style="font-weight: bold;"&gt;second&lt;/span&gt; bottom line: These are statistics and we know that they can say whatever we want them to say.... so take those numbers with a grain of salt.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Disclaimer&lt;/span&gt;: The numbers, though I guess are right, could be wrong. I had to put together numbers from different sources (mostly IDC and Gartner) so that there could be a mistake here or there (though I wouldn't expect it to be so dramatic). Want to get the file I have with the numbers? Let me know and I'll email it to you.. perhaps we could improve it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1647655709615025819-2555914238840507137?l=maratux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maratux.blogspot.com/feeds/2555914238840507137/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://maratux.blogspot.com/2009/02/server-sales-if-youre-falling-dont-fall.html#comment-form' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/2555914238840507137'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/2555914238840507137'/><link rel='alternate' type='text/html' href='http://maratux.blogspot.com/2009/02/server-sales-if-youre-falling-dont-fall.html' title='Server sales: If you&apos;re falling, dont&apos; fall so hard'/><author><name>Edmundo Carmona</name><uri>http://www.blogger.com/profile/12584230508687563031</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_aeaDXhkMgRg/S_nW9OXlluI/AAAAAAAAACQ/UpHhxQ3kO88/S220/Yo_la_vasca.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1647655709615025819.post-3250066541599760411</id><published>2009-02-25T15:08:00.000-08:00</published><updated>2009-02-25T16:06:12.557-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='opinion'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><category scheme='http://www.blogger.com/atom/ns#' term='antivirus'/><category scheme='http://www.blogger.com/atom/ns#' term='GNU/Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='free software'/><category scheme='http://www.blogger.com/atom/ns#' term='pollution'/><title type='text'>Windows = Antivirus = Pollution?</title><content type='html'>I just read &lt;a href="http://www.ucalgary.ca/news/utoday/feb24-09/Itnotgreen"&gt;an article by the University of Calgary&lt;/a&gt; where the author claims (and I think he's correct) that IT is a huge pollutant. For example, we have hardware that becomes obsolete, we have to produce electricity to pump into our gadgets, etc.&lt;br /&gt;&lt;br /&gt;Not long ago I read another article where it's calculated (or so they say) &lt;a href="http://onlygizmos.com/harvard-research-every-google-search-emmits-7gms-carbondioxide/2009/01/comment-page-1/"&gt;how much pollution is produced by each search on google&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;But, man.... I just couldn't resist the temptation of asking myself "&lt;span style="font-style: italic;"&gt;... then how much power is spent on Windows implementing DRM protection mechanisms?&lt;/span&gt;". It has been disputed that it be a lot of energy to implement DRM mechanisms. It has been argued that this is not too much of an effort... that DRM in Vista is rougly a couple of LOC on the whole system. I just couldn't care less about it.. but then the next &lt;span style="font-weight: bold;"&gt;even more obvious&lt;/span&gt; question was "&lt;span style="font-style: italic;"&gt;then how much pollution is produced by the usage of antivirus?&lt;/span&gt;". And &lt;span style="font-weight: bold;"&gt;here&lt;/span&gt; you won't tell me that it's just a little effort. Antiviruses checking whole computers (millions of them) weekly (at the very least), an operation that can take a while to complete, plus the effort of checking every jpg file that gets into a system. And using the antivirus is no low-cpu-ussage activity. I know that when a computer running windows is dragging behind a turtle for no apparent reason, I could just check processes to see if the antivirus is &lt;span style="font-style: italic;"&gt;doing its stuff&lt;/span&gt;, if the box hasn't already being been invaded by the random virus that's hot at the time and that is eating all of the CPU sending all those beautiful Xmas mails.&lt;br /&gt;&lt;br /&gt;What bothers me the most is that windows users are still paying for the ultimately bad design that was implemented on Windows early on (every .exe you downloaded from internet could be executed right away, default user is administrator, programs that won't run unless the user is an administrator, Firewall? What's that?, the usually long etc.). Vista is barely trying to fix all those problems, and we all know the backslash that things like UAC has been for Windows Vista (at least in its inception).... but we know &lt;a href="http://osnews.com/story/20897/Vista_Adoption_in_Enterprises_Less_than_10_"&gt;where Vista is staying in user's preferences&lt;/a&gt;... so people are sticking with XP design flaws instead... and seems like it will be a little longer till it fades away into oblivion.&lt;br /&gt;&lt;br /&gt;So... coming back to the question: &lt;span style="font-weight: bold;"&gt;Windows = Antivirus = Pollution&lt;/span&gt;? Can anybody try to make a wild guess about how much pollution is produced by antiviruses?&lt;br /&gt;&lt;br /&gt;PS And I didn't mention hardware that's not capable of running today's systems. How many times have you being forced to buy more hardware (or another computer) just to get the latest incarnation of Windows to work acceptably well turning your perfectly working system (so far) into digital trash? That's another thing where at least GNU/Linux will help you avoid as well. As a matter of fact, I'm using the very latest release of Kubuntu, patched to use KDE 4.2 (using &lt;span style="font-weight: bold;"&gt;some&lt;/span&gt; of its 3D eyecandy, by the way) in a computer that's a little dated (I guess 4 or 5 years is a safe guess) on a box with a D865GVHZ motherboard (4 years old? Maybe 5?). I wonder if I could run Vista with Aero on this box. I guess that makes up another equation: &lt;span style="font-weight: bold;"&gt;Windows = New Hardware = Pollution?&lt;/span&gt; By the way, I'm sure other OSs will help you avoid those update cycles as well... but my experience is with GNU/Linux, so I won't speak for other OSs.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1647655709615025819-3250066541599760411?l=maratux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maratux.blogspot.com/feeds/3250066541599760411/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://maratux.blogspot.com/2009/02/windows-antivirus-pollution.html#comment-form' title='9 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/3250066541599760411'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/3250066541599760411'/><link rel='alternate' type='text/html' href='http://maratux.blogspot.com/2009/02/windows-antivirus-pollution.html' title='Windows = Antivirus = Pollution?'/><author><name>Edmundo Carmona</name><uri>http://www.blogger.com/profile/12584230508687563031</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_aeaDXhkMgRg/S_nW9OXlluI/AAAAAAAAACQ/UpHhxQ3kO88/S220/Yo_la_vasca.jpg'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1647655709615025819.post-8381152131240627652</id><published>2009-02-20T09:10:00.000-08:00</published><updated>2009-02-20T11:55:20.264-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='js'/><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='firefox'/><category scheme='http://www.blogger.com/atom/ns#' term='internet explorer'/><category scheme='http://www.blogger.com/atom/ns#' term='ie'/><category scheme='http://www.blogger.com/atom/ns#' term='browsers'/><category scheme='http://www.blogger.com/atom/ns#' term='ff'/><category scheme='http://www.blogger.com/atom/ns#' term='benchmarks'/><category scheme='http://www.blogger.com/atom/ns#' term='opera'/><title type='text'>Browser Wars: JS performance on my dated box</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_aeaDXhkMgRg/SZ8BBMvKCqI/AAAAAAAAAAU/IWZmaax_Gy4/s1600-h/V8.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 274px;" src="http://4.bp.blogspot.com/_aeaDXhkMgRg/SZ8BBMvKCqI/AAAAAAAAAAU/IWZmaax_Gy4/s320/V8.png" alt="" id="BLOGGER_PHOTO_ID_5304960006176246434" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_aeaDXhkMgRg/SZ8AyJYYy7I/AAAAAAAAAAM/5fDsHsvbEeE/s1600-h/SunSpider.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 274px;" src="http://2.bp.blogspot.com/_aeaDXhkMgRg/SZ8AyJYYy7I/AAAAAAAAAAM/5fDsHsvbEeE/s320/SunSpider.png" alt="" id="BLOGGER_PHOTO_ID_5304959747577400242" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Well.... let me put it in simple terms: What I'm about to write is not gospel. It's just the result of running a couple of tests on a number of Web Browsers on my rather dated computer. So I don't intend to convince you of dropping your usage of one browser and start using another. It's just another post in the already long (long, long, loooooooong) list of posts comparing the performance of said browsers. Hope you find it helpful &amp;amp;&amp;amp;|| informative (in any way).&lt;br /&gt;&lt;br /&gt;So... let's go down to our subject.&lt;br /&gt;&lt;br /&gt;I'm comparing IE8b1, IE7, Opera9 on Windows, Opera10 alpha on Windows, Opera9 on GNU/Linux, Opera10 alpha on GNU/Linux, FF3 on Windows, FF3.1 on Windows, FF3 on GNU/Linux (from packages), FF3.1 on GNU/Linux (downloaded from Mozilla's site) and Konqueror (from packages... updated to KDE 4.2). Unfortunately I didn't test Chrome cause when I tried to download its installer, I got the installer of Google Earth instead (go figure!).&lt;br /&gt;&lt;br /&gt;The hardware is like this:&lt;br /&gt;- Very dated PC with one Intel(R) Pentium(R) 4 CPU 2.80GHz (hyperthreading disabled), 1 GB of RAM. Do you need to know something else?&lt;br /&gt;&lt;br /&gt;The software environments are like this:&lt;br /&gt;- Windows XP SP2 (pretty much unpatched... as a matter of fact, I couldn't care less about it... and don't start nagging me saying that  I have to keep it updated. As I just said, I don't care for it. I don't use it).&lt;br /&gt;- Patched Kubuntu intrepid running on xfce for the tests.&lt;br /&gt;&lt;br /&gt;So, let's get down to the matter.&lt;br /&gt;&lt;br /&gt;I ran the &lt;a href="http://webkit.org/perf/sunspider-0.9/sunspider.html"&gt;SunSpider&lt;/a&gt; and &lt;a href="http://v8.googlecode.com/svn/data/benchmarks/v3/run.html"&gt;V8&lt;/a&gt; benchmark suites on all of those browsers.&lt;br /&gt;&lt;br /&gt;Here are my comments:&lt;br /&gt;- IE8 has been a tremendous improvement over IE7. Still, IE8 is behind every single browser, except for IE7 and Opera9 on GNU/Linux on the SunSpider test. So.... given that every &lt;span style="font-style: italic;"&gt;new&lt;/span&gt; browser is ahead of IE8, I can't help but wonder if Microsoft is going to provide IE8 with a digital casket along with it when it be released.&lt;br /&gt;- Opera has made an improvement in both tests from 9 to 10 on both GNU/Linux and Windows. But then, some days ago, there was a report on &lt;a href="http://tuxradar.com/content/benchmarked-firefox-javascript-linux-and-windows-and-its-not-pretty"&gt;FF being slower on GNU/Linux than on Windows&lt;/a&gt; and we see exactly the same thing going on with Opera. Is there a reason why this could happen on both browsers? I don't think the widget toolkits are to blame, as FF is built on Gtk+ and Opera is built on Qt (version 3, by the way... is it possible that building Opera on Qt4 would improve its performance on GNU/Linux?). On both platforms, Opera10 was the best performer on the V8 test.&lt;br /&gt;- FF3.1 had a better performance on both platforms on the SunSpider test (being the improvement more dramatic on Windows), however on V8 the results were mixed, on Windows there was an improvement, but on GNU/Linux there was a performance decrease (not too big, but still a decrease).&lt;br /&gt;- Konqueror certainly has to make great improvements to catch up with the other browsers.&lt;br /&gt;&lt;br /&gt;Let the flamefest begin! It's not my intention to start a flame war but I think everyone will want to add their own pepper to the mix. You're welcome to do so on the comments area... just keep it in the "&lt;span style="font-style: italic;"&gt;readable by kids&lt;/span&gt;" rhetoric.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1647655709615025819-8381152131240627652?l=maratux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maratux.blogspot.com/feeds/8381152131240627652/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://maratux.blogspot.com/2009/02/browser-wars-js-performance-on-my-dated.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/8381152131240627652'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/8381152131240627652'/><link rel='alternate' type='text/html' href='http://maratux.blogspot.com/2009/02/browser-wars-js-performance-on-my-dated.html' title='Browser Wars: JS performance on my dated box'/><author><name>Edmundo Carmona</name><uri>http://www.blogger.com/profile/12584230508687563031</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_aeaDXhkMgRg/S_nW9OXlluI/AAAAAAAAACQ/UpHhxQ3kO88/S220/Yo_la_vasca.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_aeaDXhkMgRg/SZ8BBMvKCqI/AAAAAAAAAAU/IWZmaax_Gy4/s72-c/V8.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1647655709615025819.post-5641517204724025253</id><published>2009-02-19T08:11:00.001-08:00</published><updated>2009-02-19T09:12:04.291-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='statistics'/><category scheme='http://www.blogger.com/atom/ns#' term='firefox'/><category scheme='http://www.blogger.com/atom/ns#' term='internet explorer'/><category scheme='http://www.blogger.com/atom/ns#' term='ie'/><category scheme='http://www.blogger.com/atom/ns#' term='browsers'/><category scheme='http://www.blogger.com/atom/ns#' term='floss'/><category scheme='http://www.blogger.com/atom/ns#' term='ff'/><category scheme='http://www.blogger.com/atom/ns#' term='market share'/><title type='text'>Has IE lost the hearts of IT people?</title><content type='html'>I like to see statistics, specially where FLOSS is gaining ground. I try to take them with the usual dose of a grain of salt (or a handful of salt... depending on the source).&lt;br /&gt;&lt;br /&gt;- Web browser market share&lt;br /&gt;- OS market share&lt;br /&gt;- Web server survey&lt;br /&gt;- Most reliable hosters&lt;br /&gt;&lt;br /&gt;They all have their problems to be measured, but still they do give an idea of trends, at least.&lt;br /&gt;&lt;br /&gt;It's not breaking news that FF has gained a lot of momentum on the browsers front. Some people even say that we are in the "Browsers Wars" all over again. Hitslink provides us with &lt;a href="http://marketshare.hitslink.com/report.aspx?qprid=0"&gt;some very attractive statistics&lt;/a&gt; on that. During January, IE reached 67.55% of browsing (down from 68.15%), FF reached 21.53% (up from 21.34), Safari reached 8.29% (up from 7.63%), Chrome reached 1.12% (up from 1.04%) and the remaining browsers had less than 1% each. That's fine and dandy, but that comes from a huge market of thousands of sites that are not particularly inclined to IT subjects (my guess). I have a hunch that in sites that are inclined to IT, usage statistics of FF are much higher than those provided by&lt;br /&gt;hitslink.&lt;br /&gt;&lt;br /&gt;I have been tracking one site that's devoted to web subjects and that's not inclined towards one browser or another. It's &lt;a href="http://www.w3schools.com/"&gt;www.w3schools.com&lt;/a&gt; and the &lt;a href="http://www.w3schools.com/browsers/browsers_stats.asp"&gt;statistics from it&lt;/a&gt; are... well, very different from hitslink's.&lt;br /&gt;&lt;br /&gt;Here we find that FF has reached over 45% and, as a matter of fact, for the first time, FF reached more market share than &lt;span style="font-weight: bold;"&gt;all versions of IE&lt;/span&gt; they display in the statistics.... &lt;span style="font-weight: bold;"&gt;combined&lt;/span&gt;. We see an ever growing usage of FF and a steady decline of IE.&lt;br /&gt;&lt;br /&gt;There are some things that I have noticed that would explain such a decline:&lt;br /&gt;- It's easier to find people that have heard of/used FF in IT circles.&lt;br /&gt;- People in IT would be more inclined to install other applications besides the ones that come bundled with whatever OS they get (I don't install other applications besides the ones bundled with the OS I get.... I install &lt;span style="font-style: italic;"&gt;another OS&lt;/span&gt;).&lt;br /&gt;- It's no secret that IE is a resource hog when compared with other browsers. Hell, even IE8 (which is in RC status) &lt;a href="http://www.zdnet.com.au/news/software/soa/Internet-Explorer-8-RC1-Photos/0,130061733,339294590-4s,00.htm"&gt;comes way behind in terms of performance&lt;/a&gt; when compared with any other mainstream browser. Side note: Would &lt;a href="http://tuxradar.com/content/benchmarked-firefox-javascript-linux-and-windows-and-its-not-pretty"&gt;FF on GNU/Linux&lt;/a&gt; be close to IE8? I guess there's material for an article there. :-)&lt;br /&gt;&lt;br /&gt;And that leads me to the question: &lt;span style="font-weight: bold;"&gt;Has IE lost the hearts of IT people?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I'm more than willing to see other statistics from sites that are technology inclined and that have platform agnostic (or multiplatform) content. Do you have a site like that and would like to share those statistics to the world? Then the comment area is waiting for you to guide us.... or guide me, at the very least.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1647655709615025819-5641517204724025253?l=maratux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maratux.blogspot.com/feeds/5641517204724025253/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://maratux.blogspot.com/2009/02/has-ie-lost-hearts-of-it-people.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/5641517204724025253'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/5641517204724025253'/><link rel='alternate' type='text/html' href='http://maratux.blogspot.com/2009/02/has-ie-lost-hearts-of-it-people.html' title='Has IE lost the hearts of IT people?'/><author><name>Edmundo Carmona</name><uri>http://www.blogger.com/profile/12584230508687563031</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_aeaDXhkMgRg/S_nW9OXlluI/AAAAAAAAACQ/UpHhxQ3kO88/S220/Yo_la_vasca.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1647655709615025819.post-7393969362141604902</id><published>2009-02-18T05:36:00.000-08:00</published><updated>2009-02-18T08:55:34.930-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='quickfix'/><category scheme='http://www.blogger.com/atom/ns#' term='netfilter'/><category scheme='http://www.blogger.com/atom/ns#' term='nat'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>Quickfix: My ISP is blocking connections to one of my ports</title><content type='html'>Hi!&lt;br /&gt;&lt;br /&gt;Recently, one friend of mine wanted to show me something he was creating that he had running on a web service at his own box. He was connected directly to the internet and so he provided me with his address like this:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;http://x.x.x.x/resource/&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;x.x.x.x being his public IP address. It failed miserably. I couldn't see what he had up there. He then told me that people could see it remotely when he was at home, but that he was at his workplace and didn't know what was going on. I told him that probably his ISP was blocking requests to port tcp 80 and that's why it didn't work. I told him (to make sure) to do a brief tcpdump to make sure that traffic wasn't arriving at his box on that port:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;tcpdump -i eth0 -n tcp and port 80 and host y.y.y.y&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;y.y.y.y being my public address, so that only the traffic I was about to send to his box would be displayed. -n is used so that tcpdump doesn't try to do a "reverse name resolution" of our IP addresses. I do this from my box:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;telnet x.x.x.x 80&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;After some seconds, his tcpdump output is completely mute. Well.... it's &lt;span style="font-weight: bold;"&gt;his ISP&lt;/span&gt; the source of the problem after all. I know that normally one ISP won't block all new requests to a destination port, only some ports are banned (for security reasons, I guess). So I wonder that we could simply use another port. I tell him to redo the tcpdump but listening on port 8080. But (&lt;span style="font-style: italic;"&gt;without having tried&lt;/span&gt;) he complained saying that he didn't want to change the configuration of apache to listen on another port. I tell him to relax and let go. He won't have to do that.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;tcpdump -i eth0 -n tcp and port 8080 and host y.y.y.y&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Then I redo the telnet to the new port:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;telnet y.y.y.y 8080&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;And there he had some output on tcpdump. I get a connection refused message (because he had no service running on that port). What it all means is that his ISP is not blocking that port. &lt;span style="font-weight: bold;"&gt;Tip&lt;/span&gt;: &lt;span style="font-style: italic;"&gt;tcpdump will show you traffic that arrives at a box, doesn't matter if you have netfilter rules on FORWARD or INPUT that will block that traffic or if there's a service running or not on that port&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Now comes the trick: &lt;span style="font-style: italic;"&gt;How to make apache listen on that port without changing its configuration?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 8080 -j REDIRECT --to-port 80&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The &lt;span style="font-weight: bold;"&gt;REDIRECT&lt;/span&gt; target of iptables is used to tell iptables to change the target of those packets, no matter what the target of those packets be, to the box that's processing those packets to a given port. And there you have it. After running that command, I could see what he wanted to show me without having to change anything on his apache configuration.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;http://x.x.x.x:8080/resource/&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;And the content was there.&lt;br /&gt;&lt;br /&gt;Oh, you are running windows and want to do the same thing, you say? I guess you have to get yourself an ISA Server to be able to do NAT (though I could be wrong, of course) or download some virus-ridden piece of freeware that you could find out there that will do that... plus turning your computer into a zombie, as a gift feature. In other words: &lt;span style="font-style: italic;"&gt;Why don't you get a nice LiveCD (didn't say what distro or what operating system) and start tinkering with a real OS? If you were able to figure out that it was your ISP that was blocking the requests to a port in your own box, it means you already have the basic ingredients.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Take care!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1647655709615025819-7393969362141604902?l=maratux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maratux.blogspot.com/feeds/7393969362141604902/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://maratux.blogspot.com/2009/02/quickfix-my-isp-is-blocking-connections.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/7393969362141604902'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/7393969362141604902'/><link rel='alternate' type='text/html' href='http://maratux.blogspot.com/2009/02/quickfix-my-isp-is-blocking-connections.html' title='Quickfix: My ISP is blocking connections to one of my ports'/><author><name>Edmundo Carmona</name><uri>http://www.blogger.com/profile/12584230508687563031</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_aeaDXhkMgRg/S_nW9OXlluI/AAAAAAAAACQ/UpHhxQ3kO88/S220/Yo_la_vasca.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1647655709615025819.post-6738026917326295740</id><published>2009-02-17T10:59:00.000-08:00</published><updated>2009-02-17T14:15:08.069-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='performance'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='security'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>A couple of things on PHP</title><content type='html'>Hi!&lt;br /&gt;&lt;br /&gt;As I promised yesterday on &lt;a href="http://maratux.blogspot.com/2009/02/bash-tricks-i-very-repetitive-tasks.html"&gt;Bash Tricks I&lt;/a&gt;, I would be making a spin off article on things related to PHP.&lt;br /&gt;&lt;br /&gt;I want to talk about two things, actually.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;1 - Performance: Are constants faster than variables?&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;2 - Security: My usage of a FS_ROOT constant (that could become a variable depending of the results of point 1) to hide all non-starting scripts from apache.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Variables vs Constants&lt;/span&gt;&lt;br /&gt;Yesterday I ran a script 1000 times to see if a script that handled a variable or a constant was faster. The one with the constant was a little faster. Let's redo the test but with 10000 times instead:&lt;br /&gt;&lt;br /&gt;variable.php (without the php starting tags):&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;$VARIABLE = 5;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;echo $VARIABLE . "\n";&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;constant.php:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;define('CONSTANT', 5);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;echo CONSTANT . "\n";&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Let's run them then:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;echo Variable; time ( i=0; while [ $i -lt 10000 ]; do php variable.php &gt; /dev/null; i=$(( $i + 1)); done ); echo Constant; time ( i=0; while [ $i -lt 10000 ]; do php constant.php &gt; /dev/null; i=$(( $i + 1)); done )&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Variable&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;real    12m49.269s&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;user    4m31.665s&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;sys     2m23.161s&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Constant&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;real    12m36.780s&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;user    4m28.013s&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;sys     2m27.241s&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Well.. not much difference, really.&lt;br /&gt;&lt;br /&gt;Now.... does this difference translate into a php script running on apache? To pull it off with bash, I will have to use one of my favorite (and most basic) tricks I've come to use when doing web development: Acting as a web client from a terminal. As a matter of fact, bash won't be the client... but I will certainly use bash in order to run the request a number of times. How does it work? As web developers most probably know, we can use telnet to make requests on a web server. Let's do a basic request: www.yahoo.com but on a yahoo.com and let's ask for the default web page to see what it says:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;telnet yahoo.com 80&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Trying 68.180.206.184...&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Connected to yahoo.com.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Escape character is '^]'.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;GET http://www.yahoo.com HTTP/1.0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;HTTP/1.1 301 Moved Permanently&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Date: Tue, 17 Feb 2009 19:15:04 GMT&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Location: http://www.yahoo.akadns.net/&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Connection: close&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Content-Type: text/html; charset=utf-8&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;The document has moved &lt;/span&gt;&lt;a style="font-style: italic;" href="http://www.yahoo.akadns.net/"&gt;here&lt;/a&gt;&lt;span style="font-style: italic;"&gt;.&lt;/span&gt;&lt;p&gt;&lt;br /&gt;&lt;!-- p3.rc.sp1.yahoo.com uncompressed Tue Feb 17 11:15:04 PST 2009 --&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Connection closed by foreign host.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;After I connected to the web service successfully, I made the requests &lt;span style="font-weight: bold;"&gt;GET http://www.yahoo.com HTTP/1.0&lt;/span&gt; followed by an empty line, and then the web service replied with the headers, an empty line and then the content of the web page.&lt;br /&gt;&lt;br /&gt;Cool.... but I won't be doing that 10000 times to test my scripts on apache, right? Instead of telnet, let's use another tool: &lt;span style="font-weight: bold;"&gt;netcat&lt;/span&gt;. Then we can send netcat the web request to its input stream, effectively sending it to the web server. Like this:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;{ echo GET http://www.yahoo.com/ HTTP/1.0; echo; } | netcat yahoo.com 80&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;HTTP/1.1 301 Moved Permanently&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Date: Tue, 17 Feb 2009 19:20:15 GMT&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Location: http://www.yahoo.akadns.net/&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Connection: close&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Content-Type: text/html; charset=utf-8&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;The document has moved &lt;/span&gt;&lt;a style="font-style: italic;" href="http://www.yahoo.akadns.net/"&gt;here&lt;/a&gt;&lt;span style="font-style: italic;"&gt;.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;!-- p3.rc.sp1.yahoo.com uncompressed Tue Feb 17 11:20:15 PST 2009 --&gt;Cool, now I can make as many requests as I want one after the other, and so I can see how long it takes to run to each of the scripts. So, let's see:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;echo Variable; time ( i=0; while [ $i -lt 10000 ]; do { echo GET http://localhost/variable.php HTTP/1.0; echo; } | netcat 127.0.0.1 80 &gt; /dev/null; i=$(( $i + 1)); done ); echo Constant; time ( i=0; while [ $i -lt 10000 ]; do { echo GET http://localhost/constant.php; echo; } | netcat 127.0.0.1 80 &gt; /dev/null; i=$(( $i + 1)); done )&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Variable&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;real    2m17.096s&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;user    0m58.724s&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;sys     1m8.092s&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Constant&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;real    2m7.158s&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;user    0m55.163s&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;sys     1m2.608s&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Well.... I notice two things here:&lt;br /&gt;1 There was a roughly 10% reduction when using constants&lt;br /&gt;2 This puts in perspective the &lt;span style="font-style: italic;"&gt;Spawning processes is expensive&lt;/span&gt; mantra, doesn't it? A reduction of roughly 75% when compared with running the script with the PHP binary.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Parenthesis: I tried with 1000 times instead of 10000 and something weird happened. The tests ran in under 7 seconds each (always with the constants as a winner), but that's almost 20 times faster (instead of the expected 10 times). Any explanations for it? End of parenthesis.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Now, if you wanted to use the value of the variable inside a function without passing it as a variable, you would have to use a "global" directive and then use the value, but there's no need to do that with a constant. Let's see how that changes the result:&lt;br /&gt;&lt;span style="font-size:130%;"&gt;variable.php&lt;/span&gt;&lt;br /&gt;   &lt;span style="font-weight: bold;"&gt;$VARIABLE = 5;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;        function printValue() {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;    global $VARIABLE;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;    echo $VARIABLE . "\n";&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;        }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;        printValue();&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;constant.php&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;        define('CONSTANT', 5);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;        function printValue() {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;                    echo CONSTANT . "\n";&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;        }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;        printValue();&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Le's run the scripts 1000 times:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;echo Variable; time ( i=0; while [ $i -lt 10000 ]; do { echo GET http://localhost/variable.php HTTP/1.0; echo; } | netcat 127.0.0.1 80 &gt; /dev/null; i=$(( $i + 1)); done ); echo Constant; time ( i=0; while [ $i -lt 10000 ]; do { echo GET http://localhost/constant.php; echo; } | netcat 127.0.0.1 80 &gt; /dev/null; i=$(( $i + 1)); done )&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Variable&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;real    2m20.279s&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;user    0m59.952s&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;sys     1m7.548s&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Constant&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;real    2m11.901s&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;user    0m57.440s&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;sys     1m3.176s&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Again the constants are winners with a little less than 10% reduction in time. So I guess that's it on this subject. Constants are winners over and over again.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;My usage of FS_ROOT&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;After so much time dealing with PHP and requires/includes, I came to use a constant that always tells me where the root of the project is on the File System. This value along with a number of others (HTTP_ROOT, DB settings and so on) is in a single script (strangely enough, it's called &lt;span style="font-style: italic;"&gt;conf.php&lt;/span&gt;). Now, no matter where I start the execution of the script, I know where to find conf.php &lt;span style="font-style: italic;"&gt;relative to this starting point&lt;/span&gt; and then I just don't care about where the others scripts are... I always call them using FS_ROOT as the root directory of the others scripts:&lt;br /&gt;&lt;span style="font-style: italic;"&gt;require_once FS_ROOT . "/model/one_model.php";&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;require_once FS_ROOT . "/utilities.php";&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;You get the idea. I guess that's not rocket science.... but then something weird happened. I was integrating &lt;a href="http://phpweby.com/software/ip2country"&gt;phpweby's ip2country&lt;/a&gt; into my new project. This module has a script that can update the ip2country information on the DB that has to be deleted for security reasons... and then, it hit me: That script, which is not supposed to be called from the web, could be outside of the space mapped by apache and then I wouldn't have to delete it, would I? And that brought me to another thought: How about if I didn't have to publish &lt;span style="font-weight: bold;"&gt;ANY&lt;/span&gt; of the scripts that I use in my project, besides the &lt;span style="font-style: italic;"&gt;starting scripts&lt;/span&gt;? And that's when FS_ROOT becomes vital. By using FS_ROOT to locate all the other scripts, they could just be outside of the apache mapped files and so the project is "safer", don't you think?&lt;br /&gt;&lt;br /&gt;So, now the project I'm working with has like 20 scripts "inside" apache, and all the other scripts (a whole bunch of them) are safely protected outside of apache's reach. Now, I've never used &lt;span style="font-style: italic;"&gt;root cages&lt;/span&gt;, so I don't know if a cage would allow this kind of behavior. What do you think of the trick?&lt;br /&gt;&lt;br /&gt;Well. That's it for today. I hope you can take advantage of this information.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1647655709615025819-6738026917326295740?l=maratux.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://maratux.blogspot.com/feeds/6738026917326295740/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://maratux.blogspot.com/2009/02/couple-of-things-on-php.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/6738026917326295740'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1647655709615025819/posts/default/6738026917326295740'/><link rel='alternate' type='text/html' href='http://maratux.blogspot.com/2009/02/couple-of-things-on-php.html' title='A couple of things on PHP'/><author><name>Edmundo Carmona</name><uri>http://www.blogger.com/profile/12584230508687563031</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_aeaDXhkMgRg/S_nW9OXlluI/AAAAAAAAACQ/UpHhxQ3kO88/S220/Yo_la_vasca.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1647655709615025819.post-8570152211669091236</id><published>2009-02-16T06:27:00.000-08:00</published><updated>2009-02-16T08:48:48.618-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programmiing'/><category scheme='http://www.blogger.com/atom/ns#' term='bash'/><category scheme='http://www.blogger.com/atom/ns#' term='GNU/Linux'/><title type='text'>Bash Tricks I: (very) Repetitive tasks</title><content type='html'>Hi!&lt;br /&gt;&lt;br /&gt;I'll create a series (don't even know the number of items in the series) where I share with my loyal readers (in mathematical terms, that's an &lt;span style="font-style: italic;"&gt;empty set&lt;/span&gt;) some handy tricks I've found when working with bash. Probably some of the tricks won't be the most efficient way to carry something out... but I can attest that, at the very least, they do work.&lt;br /&gt;&lt;br /&gt;So, here we go.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Repetitive tasks&lt;/span&gt;&lt;br /&gt;Sometimes, you might want to repeat a task a number of times. For example, right now I want to find out which one is faster on PHP: Using variables or defining constants&lt;br /&gt;&lt;br /&gt;I have two script where I define a constant/variable (depending on the script) and I write its value to &lt;span style="font-weight: bold;"&gt;stdout&lt;/span&gt;. Let's say I want to run the variable.php script 1000 times. What I do is:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;i=0; while [ $i -lt 1000 ]; do php variable.php &gt; /dev/null; i=$(( $i + 1 )); done&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;But what does all that stuff mean? Let's decompose it:&lt;br /&gt;&lt;span style="font-style: italic;"&gt;i=0&lt;/span&gt; We are creating a variable called &lt;span style="font-style: italic;"&gt;i&lt;/span&gt; with the initial value of &lt;span style="font-style: italic;"&gt;0&lt;/span&gt;. Tip: When declaring the variable, &lt;span style="font-weight: bold;"&gt;don't&lt;/span&gt; use the preceding $ and don't use spaces between the variable name and the &lt;span style="font-weight: bold;"&gt;=&lt;/span&gt; sign.&lt;br /&gt;&lt;span style="font-style: italic;"&gt;while [ $i -lt 1000 ]; do &lt;/span&gt;This is fairly common talk to a programmer. We are telling bash to repeat the following commands (until it finds the closing &lt;span style="font-style: italic;"&gt;done&lt;/span&gt;). &lt;span style="font-style: italic;"&gt;while&lt;/span&gt; will &lt;span style="font-style: italic;"&gt;test&lt;/span&gt; if the conditional betwen the &lt;span style="font-style: italic;"&gt;[]s&lt;/span&gt; is true to make another cycle. &lt;span style="font-style: italic;"&gt;$i -lt 1000&lt;/span&gt; There you are comparing the value in &lt;span style="font-style: italic;"&gt;i&lt;/span&gt; with 1000. &lt;span style="font-style: italic;"&gt;-lt&lt;/span&gt; means &lt;span style="font-style: italic;"&gt;less than&lt;/span&gt;. You have more operators available (more than, equal, less or equal, more or equal and so on. Check the man page of &lt;span style="font-style: italic;"&gt;test&lt;/span&gt; to know the kinds of things you can place as the conditional).&lt;br /&gt;&lt;span style="font-style: italic;"&gt;php variable.php &gt; /dev/null&lt;/span&gt; We are executing the script I created and sending its output to &lt;span style="font-style: italic;"&gt;/dev/null&lt;/span&gt; so that I don't get to see it (I couldn't care less about it, as I already know what will show up).&lt;br /&gt;&lt;span style="font-style: italic;"&gt;i=$(( $i + 1)) &lt;/span&gt;Here we increment the value of the variable &lt;span style="font-style: italic;"&gt;i&lt;/span&gt;. &lt;span style="font-style: italic;"&gt;$(( )) &lt;/span&gt;is a bash construct to do mathematic evaluation. As in the assignment of the variable i to 0, remember not to &lt;span style="font-weight: bold;"&gt;&lt;/span&gt;leave spaces between the variable and the = and also to skip the $.&lt;br /&gt;&lt;span style="font-style: italic;"&gt;done&lt;/span&gt; We are telling bash to close the while.&lt;br /&gt;&lt;br /&gt;Now, let's time the execution of both scripts (variable vs constant):&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt;echo Variable; time ( i=0; while [ $i -lt 1000 ]; do php variable.php &gt; /dev/null; i=$(( $i + 1)); done ); echo Constant; time ( i=0; while [ $i -lt 1000 ]; do php constant.php &gt; /dev/null; i=$(( $i + 1 )); done )&lt;/span&gt;&lt;br /&gt;Variable&lt;br /&gt;&lt;br /&gt;real    0m40.515s&lt;br /&gt;user    0m22.217s&lt;br /&gt;sys     0m13.109s&lt;br /&gt;Constant&lt;br /&gt;&lt;br /&gt;real    0m39.409s&lt;br /&gt;user    0m22.557s&lt;br /&gt;sys     0m13.277s&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;As you can see, it's almost the same (40.515 vs 39.409). I will do some more PHP tests that will lead to a spin off of this article... but that will arrive tomorrow and it's not related to bash, so let's go on with another trick.&lt;br /&gt;&lt;br /&gt;Another kind of repetitive task you could find yourself doing (specially when programming) is replacing one string pattern for another... and the substitution could span various files.&lt;br /&gt;&lt;br /&gt;Say that you need to change the string "mysql_" for "mydb_" (if you are thinking that I did it to change some mysql calls to agnostic calls on a php project, let me say that you might be right). Now, any IDE worth its salary would do it on a fly, but that doesn't mean that we can't do it with bash. I know that &lt;span style="font-style: italic;"&gt;sed&lt;/span&gt; can change patterns on the fly, so how can we do that on various files? First, let's see how many times the pattern shows up in the files in this directory:&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt;find ./ -type f -exec grep -Hni mysql_ {} ';' | wc -l&lt;/span&gt;&lt;br /&gt;352&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Now, let's run the substitution command:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt;find ./ -type f | while read filename; do sed 's/mysql_/mydb_/' $filename &gt; tmp.php; mv tmp.php $filename; done&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;What did we tell bash to do there? Let's decompose it again:&lt;br /&gt;&lt;span style="font-style: italic;"&gt;find ./ -type f&lt;/span&gt; We are ask
