<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="../assets/xml/rss.xsl" media="all"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>.:: Marcos Dione/StyXman's glob ::. (Posts about rants)</title><link>https://www.grulic.org.ar/~mdione/glob/</link><description></description><atom:link href="https://www.grulic.org.ar/~mdione/glob/categories/rants.xml" rel="self" type="application/rss+xml"></atom:link><language>en</language><copyright>Contents © 2025 &lt;a href="mailto:mdione@grulic.org.ar"&gt;Marcos Dione&lt;/a&gt; </copyright><lastBuildDate>Sat, 15 Nov 2025 20:52:04 GMT</lastBuildDate><generator>Nikola (getnikola.com)</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><item><title>Can I haz libfoo</title><link>https://www.grulic.org.ar/~mdione/glob/posts/can-I-haz-libfoo/</link><dc:creator>Marcos Dione</dc:creator><description>&lt;p&gt;In my last job I had to do a complex Python script for merging several git histories
into one. I used Python because I needed to do a lot of high level stuff I was sure
&lt;code&gt;bash&lt;/code&gt; would be a pain to use, like building trees and traversing them. My options
for managing the underlaying &lt;code&gt;git&lt;/code&gt; repositories were two: either do an ugly hack to
execute &lt;code&gt;git&lt;/code&gt; and parse its output; or use the ugly hack that already exists, called
&lt;a href="https://github.com/gitpython-developers/GitPython/"&gt;&lt;code&gt;GitPython&lt;/code&gt;&lt;/a&gt;. The first was not
an option, and the second meant that in some corner cases I had to rely on it just
to execute particular &lt;code&gt;git&lt;/code&gt; invocations. It was not pleasant, but it somehow worked.&lt;/p&gt;
&lt;p&gt;While developing &lt;a href="https://github.com/StyXman/ayrton"&gt;&lt;code&gt;ayrton&lt;/code&gt;&lt;/a&gt; I'm using
&lt;a href="https://github.com/paramiko/paramiko/"&gt;&lt;code&gt;paramiko&lt;/code&gt;&lt;/a&gt; as the &lt;code&gt;ssh&lt;/code&gt; client for implementing
semi transparent remote code execution.
The problem I have with it is that it's mostly aimed at executing commands almost
blindly, with not much interaction. It only makes sense: its main client code is
&lt;a href="https://github.com/fabric/fabric"&gt;&lt;code&gt;fabric&lt;/code&gt;&lt;/a&gt;, which mostly uses it in that context.
&lt;code&gt;ayrton&lt;/code&gt; aims to have a &lt;code&gt;ssh&lt;/code&gt; client as transparent as the original &lt;code&gt;openssh&lt;/code&gt; client,
but bugs like &lt;a href="https://github.com/paramiko/paramiko/issues/302"&gt;this&lt;/a&gt; and
&lt;a href="https://github.com/paramiko/paramiko/issues/593"&gt;this&lt;/a&gt; are in the way.&lt;/p&gt;
&lt;p&gt;What those two situations have in common? Well, there are two incomplete Python
libraries to emulate an existing program. At least in the case of &lt;code&gt;GitPython&lt;/code&gt; they
have a backdoor to call &lt;code&gt;git&lt;/code&gt; directly. My complaint is not their
incompleteness, far from it, but the fact that they have to do it from scratch.
It's because of that that they're incomplete.&lt;/p&gt;
&lt;p&gt;Take &lt;code&gt;ayrton&lt;/code&gt;, for instance. It's mostly an executable that serves as an interpreter for
scripts written in that language (dialect?), but it's implementation is so that the
executable itself barely handles command line options and calls a library. That
library implements everything that &lt;code&gt;ayrton&lt;/code&gt; does for interpreting the language, to
the point where most unit tests are using &lt;code&gt;ayrton&lt;/code&gt; library for executing &lt;code&gt;ayrton&lt;/code&gt;
scripts. &lt;code&gt;ayrton&lt;/code&gt; is not alone, others do similarly:
&lt;a href="https://github.com/PyAr/fades/"&gt;&lt;code&gt;fades&lt;/code&gt;&lt;/a&gt;, and at some point all those other Python
modules like &lt;code&gt;timeit&lt;/code&gt; or &lt;code&gt;unittest&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;So that's my wish for these Christmas, or Three Wise Men day&lt;sup id="fnref:1"&gt;&lt;a class="footnote-ref" href="https://www.grulic.org.ar/~mdione/glob/posts/can-I-haz-libfoo/#fn:1"&gt;1&lt;/a&gt;&lt;/sup&gt;, or my birthday next month;
I would even accept it as an Easter Egg: have all these complex pieces of software
implemented mainly as a public library (even if the API changed a lot, but that right
now should be fairly stable) and very thin frontends as executables. I wish for
&lt;code&gt;libgit&lt;/code&gt; and &lt;code&gt;libssh&lt;/code&gt; and their Python bindings.&lt;/p&gt;
&lt;div class="footnote"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;In my culture, kids get presents that day too. &lt;a class="footnote-backref" href="https://www.grulic.org.ar/~mdione/glob/posts/can-I-haz-libfoo/#fnref:1" title="Jump back to footnote 1 in the text"&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description><category>python</category><category>rants</category><guid>https://www.grulic.org.ar/~mdione/glob/posts/can-I-haz-libfoo/</guid><pubDate>Wed, 02 Dec 2015 16:03:24 GMT</pubDate></item><item><title>Acer Iconia A200</title><link>https://www.grulic.org.ar/~mdione/glob/posts/acer-iconia-a200/</link><dc:creator>Marcos Dione</dc:creator><description>&lt;p&gt;&lt;em&gt;Disclaimer: rough language ahead.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;So we bought an Acer Iconia A200. Reasons are not important, and I was
hesitating about an Android device. But features are good, I can't indefinitely
deny that Android is the option to Apple. A clear case of choosing the lesser of
all evils.&lt;/p&gt;
&lt;p&gt;Today it came. I did the classic deboxing photo shooting, and that was that. I
opted out from all the options that were presented to me that meant telling
google what I was doing or where, got the wifi working, upgraded to 4.0.3, and
started testing.&lt;/p&gt;
&lt;p&gt;First things first, play with the widgets. There's a 4 square panel one that uses
the top 2 panels for showing the hour, the lower right one for the date (which is
not a shortcut to the agenda... WTF?) and the lower left one has a small
sun-and-clouds-and-sky image that suggested a weather applet. So I hit it and it
tells me that because I opted out from using wifi spots as alternative ways to
find the device on the surface of our unique world planet, I can't simply use
the applet. I mean, there is no way to tell the applet, "hey, you know what? for
no particular reason I want to know the weather in, let's say,
Saint-Symphorien-du-Mahun, France". I can either enable the "network Location
Service" (or something like that, I set the device in Spanish) or not use it.&lt;/p&gt;
&lt;p&gt;So I forget about it. Next step, install a real map application. For that, of
course,  I had to yield a Google account. I have one, or several, laying
around, so I use one of those to let Google Play install things. That's already
shitty. But then what does it do? It also uses that account for configuring the
gmail client. Who the fuck told it to do it? I was expecting to set it up with my
girlfriend's account. I hope I will be able to do it later. Do these people ever
thought that a tablet could be used by more than one person? &lt;sup id="fnref:1"&gt;&lt;a class="footnote-ref" href="https://www.grulic.org.ar/~mdione/glob/posts/acer-iconia-a200/#fn:1"&gt;1&lt;/a&gt;&lt;/sup&gt; Also, account sync
got activated. I had to go to the settings and turn everything off. Still, the
gmail app keeps being linked to that Google account.&lt;/p&gt;
&lt;p&gt;At some point, too, a multimedia server went on. WTF from? Who set it up? Why is
it enabled by default? Who decides these things? Ok, this is getting close to a
rant. I see a tag coming. It also comes with an app that shows in the "task
list" (there is no concept of app in Android) which is actually a "apps you last
used up to certain value of «last»" or something like that; the app is called
VirusScan. When I try to activate it, it gives me back to the home screen. Go
figure.&lt;/p&gt;
&lt;p&gt;So back to Google Play. I had already skipped the yielding of credit card info.
Now it's time to opt out of being spammed about news and offers from Google
Play. I think I see a pattern here, but at least some things are being asked, "can I,
pretty pretty please?". Most of the time, my answer will be "No!", sometimes
followed by "Go to your bedroom, no dinner or dessert!".&lt;/p&gt;
&lt;p&gt;I select Maverick, which I remember from the time I had a Motorola Droid from
work. I choose it because it can handle offline maps. This tablet has a GPS, but
it does not have GPRS. The rights it asks for are a little permissive (for
instance, taking photos and videos), but I hope it's just a matter of not using
those features and that's it.&lt;/p&gt;
&lt;p&gt;I fire it up. I choose OSM maps and it works just fine. The guide for the
&lt;a href="http://help.codesector.com/MapsCache"&gt;offline maps&lt;/a&gt; is nice, not fancy, but it
doesn't have to be. It only needs an µSD, VFAT formatted, which I don't have (I
lost an 8Gb recently with a lot of wine labels from wines that I liked. It's hard
to live in a country where wines sold by features completely orthogonal to what
you're used to). Makes me wonder why I bought a 32GiB device. I'll have to fix 
that soon.&lt;/p&gt;
&lt;p&gt;For some reason I try the image viewer. Of course it went to the picassa account
associated to that Google account. That was really a bad move. Even the calendar
is tied to that account. I'll have to check how to reset that shit. Probably
I'll have to reset it to shipping state. Not that I did a lot in it. Also, I
missed some privacy settings, like the backup in Google servers, which at least
deactivating them erases that data from Google servers... or so they say &amp;gt;:-)&lt;/p&gt;
&lt;p&gt;Android apart, the tablet is nice. Not very heavy, looks good, responsive, can
act as USB master, has internal GPS as I already said, and whatever else. I will
be actively looking for an app that lets me embed another two, so I can use it
as a GPS and media center in the car, which is the primary goal that I had for
my non-charging-from-USB-anymore N900 :(&lt;/p&gt;
&lt;p&gt;So last tests: The GPS didn't got a good signal in my balcony (My god it's cold
outside. What's the temperature? I don't know &lt;sup id="fnref:2"&gt;&lt;a class="footnote-ref" href="https://www.grulic.org.ar/~mdione/glob/posts/acer-iconia-a200/#fn:2"&gt;2&lt;/a&gt;&lt;/sup&gt;, the weather applet does not
work, the second one I put in the home screen reset itself to NYC (!??!) and I
didn't try the third I installed), but at least it found it fast. The first
guess put me some 80 meters from my actual position, but it slowly got it right.&lt;/p&gt;
&lt;p&gt;Now audio: let's see how well it plays MP3s, OGGs and FLACs. I connect it via
USB and simultaneously I get two surprises: a) the tablet does not seem to charge
via USB. Now, sincerely, WTF? I corroborate this by plugging it to a wall USB
charger. Nothing. I should had suspected something when I saw at first that the
wallwart has a cylindrical connector. And b) it announces via MTP device, not an
USB mass storage as others do, with an option of PTP for the photos. Amarok can
handle MTP devices, but then Amarok tries to bee too clever and handling a
big-ish collection with lots of missing data and inconsistencies is a nightmare,
so I skip it. &lt;code&gt;mtpfs&lt;/code&gt; is somehow broken in Debian Sid, and I don't have the
willpower to compile &lt;code&gt;kio-mtp&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;So that's it: I have a nice 11" tablet with a operating system I knew I hate,
which in spite it has GPS can't charge via USB and is not even a USB mass
storage, when it can act as a USB master. Probably the bottom line is: I should
have investigated better the device before buying it. If only my N900 would
charge via USB again &lt;sup id="fnref:5"&gt;&lt;a class="footnote-ref" href="https://www.grulic.org.ar/~mdione/glob/posts/acer-iconia-a200/#fn:5"&gt;5&lt;/a&gt;&lt;/sup&gt;...&lt;/p&gt;
&lt;div class="footnote"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;Ok, yes, it &lt;em&gt;has&lt;/em&gt; support for several Google accounts, or at least Gmail ones. &lt;a class="footnote-backref" href="https://www.grulic.org.ar/~mdione/glob/posts/acer-iconia-a200/#fnref:1" title="Jump back to footnote 1 in the text"&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:2"&gt;
&lt;p&gt;It's 15°, according to the weather applet in my notebook. How difficult
    would it be to install GNU/Linux on this beauty &lt;sup id="fnref:3"&gt;&lt;a class="footnote-ref" href="https://www.grulic.org.ar/~mdione/glob/posts/acer-iconia-a200/#fn:3"&gt;3&lt;/a&gt;&lt;/sup&gt;? &lt;a class="footnote-backref" href="https://www.grulic.org.ar/~mdione/glob/posts/acer-iconia-a200/#fnref:2" title="Jump back to footnote 2 in the text"&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:3"&gt;
&lt;p&gt;Just kidding &lt;sup id="fnref:4"&gt;&lt;a class="footnote-ref" href="https://www.grulic.org.ar/~mdione/glob/posts/acer-iconia-a200/#fn:4"&gt;4&lt;/a&gt;&lt;/sup&gt;. &lt;a class="footnote-backref" href="https://www.grulic.org.ar/~mdione/glob/posts/acer-iconia-a200/#fnref:3" title="Jump back to footnote 3 in the text"&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:4"&gt;
&lt;p&gt;Actually, not so much. I mean, the device runs an Google/Linux system. &lt;a class="footnote-backref" href="https://www.grulic.org.ar/~mdione/glob/posts/acer-iconia-a200/#fnref:4" title="Jump back to footnote 4 in the text"&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:5"&gt;
&lt;p&gt;For EUR 300 I probably could buy a not refurbished-but-sold-as-new one. But
then, I'm not the only intended user for this device. &lt;a class="footnote-backref" href="https://www.grulic.org.ar/~mdione/glob/posts/acer-iconia-a200/#fnref:5" title="Jump back to footnote 5 in the text"&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description><category>android</category><category>google</category><category>rants</category><guid>https://www.grulic.org.ar/~mdione/glob/posts/acer-iconia-a200/</guid><pubDate>Thu, 08 Nov 2012 11:55:34 GMT</pubDate></item></channel></rss>