Java: what’s the point?

What’s the point of being type-strict if you can typecast anyway?

What’s the point of being object-oriented if the language is so byzantine it forces you into procedural hacks every second step?

What’s the point of having such a huge class library when at the end of they day, your Java implementation doesn’t behave consistently? (j2me, i’m talking to you and your Hashtable and Vector classes and their lack of toArray).

What’s the point of the compiler being so pesky and anal if it can’t even catch scope-related variable disappearance? in a method, a variable declaration will override an instance variable. I mean, if the compiler complains about *everything* else, why in hell doesn’t it complain about THIS?

Bleh.

El Chapubomber

Ahora resulta que el terrorismo y los bombazos llegaron a México, personificados en el infame chapubomber, que explotó en avenida chapultepec intentando demoler las oficinas de la ssp, parece que le falló la sincronia con el amigo que tenía el detonador. A quien quieren engañar? Toda la escena fue grotesca y completamente actuada, lo mas divertido fue la chambonez del personaje que no atinó a salvarse de su propio bombazo. La verdad si estos son los terroristas en México, estamos bastante a salvo.

Esta situación puede analizarse de tres maneras. La primera, asumiendo que “el terrorismo ha llegado a Mexico”. Si es el caso, como menciono, es poco de preocuparse, ya que si todo lo que pueden hacer los supuestos terroristas es inmolarse con un mínimo de daños materiales y humanos, no es de preocuparse; y si de hecho son tan torpes como para caer en esto, es cuestión de tiempo  antes de que simplemente los atrapen y se termine el asunto.

Si, por otro lado, es simplemente una puesta en escena; sea de quien sea, gobierno local o federal, cosa que es lo MÁS probable, resulta simplemente patético el caer en estos extremos tan ridículos para pretextar la acción que sea: militarización, criticar al GDF por su mala política de seguridad, pretender que México está en el primer mundo por el triste hecho de ya tener bombarderos suicidas. Curiosamente esta es la hipótesis más plausible, ya que ¿que otro fin podría tener este espectáculo? analicemoslo: el bombardero no acertó a su supuesto objetivo, y lo que es peor, ni siquiera tuvo víctimas de consideración (salvo él). Esto deja ver que el objetivo real era simular el ataque y sembrar el pánico y la incertidumbre. Cualquier terrorista por idiota que sea sería capaz de explotar en un vagón del metro atiborrado de gente y causar daños reales mucho más graves. Pero en este caso, el daño buscado, que es causar el miedo, ya está logrado.

Es triste ver que esta cruzada la emprenden las autoridades contra la gente, en vez de hacerlo contra quien debe hacerse. La tercera hipótesis diría que, dado que el objetivo supuestamente era la SSP, seguramente el perpetrador era algún grupo de delincuencia organizada; ni tardos ni perezosos los investigadores apuntan a las bandas de “Tepito” porque una de las víctimas del bombazo vive por ese rumbo, lo cual equivaldría a decir que yo soy terrorista porque vivo en Iraq o algo por el estilo. SI fuera el caso, preocupa que dichas organizaciones se sientan tan envalentonadas como para traer la guerra directamente a las calles; en ese caso lo que es obvio es que las autoridades están perdiendo la guerra contra el crimen; seguramente las organizaciones de malosos están envalentonadas al ver cómo unos miserables cárteles de narcotráfico le paran los embates al ejército.

Si fuera este el caso la situación tal vez es de cuidado porque seguramente los malosos irán afinando la puntería por así decirlo. Sin embargo en este caso la responsabilidad sigue siendo de las autoridades a quienes, véase por donde se vea, les ha quedado grande el trabajo de garantizar la seguridad en el país.

Bluetooth PAN on Linux – howto?

So, I bought a cheap-ass (115 pesos) bluetooth adapter, thinking I might use it to establish a PAN between my macbook and my desk computer; this is due to a) no CAT5 cable and no IP address for my laptop on the lan, b) no WLAN coverage up here. I know Bluetooth will be kind of slow but it beats having the macbook with no connection at all.

I followed the excellent HOWTO written by Zdenek Bouresh and things didn’t seem to work; the macbook wouldn’t find the Linux PC and so couldn’t pair to it.

It turns out that having ISCAN (whatever the hell that is) on your bluetooth device is imperative for it to be found. You can check if you have it by running hciconfig and you get something like this (look for ISCAN and INQUIRY on the third line; if like in this example you don’t have it, then something’s still wrong):

So how to enable ISCAN?  Oddly, /etc/bluetooth/hcid.conf already contains a line that says:

iscan enable; pscan enable;

However it looks like it doesn’t work. So what I did (quick & dirty) is add this command to /etc/rc.local:

hciconfig hci0 piscan

Also, it appears as though the default startup script starts pand too quickly, and hcid hasn’t had a chance to initialize yet; as a result, your log file will show :

pand[5218]: Failed to connect to the local SDP server. Connection refused(111)

What I did was insert a 5-second sleep in /etc/init.d/bluetooth,  at the beginning of the pan_start function.

Voilá, now my macbook sees the linux computer, a passkey exchange is initiated (and managed on the linux box via kbluetooth, I highly recommend it). The Mac gives a list of “services you want to use with your device”. If you enable PAN only, it will probably say “there were no supported services found on your device”. I guess if you also enable Bluetooth DUN you’ll see this service. Regardless, when you click “continue” a cheery message says “congratulations” and states “your computer and device were configured with the following services” and “use as a personal area network” will be shown.

As you dismiss this dialog, the bluetooth icon on the status bar will sprout a new option, “join network on whatever”. Clicking this will initiate a connection attempt.

Again, the HOWTO refers to creation of a dev-up script but I found I also needed a dev-down.  so in /etc/defaults/bluetooth:

PAND_OPTIONS=” –listen –role nap -u /etc/bluetooth/pan/dev-up -o /etc/bluetooth/pan/dev-down”

/dev-down contains:

#!/bin/sh

ifdown bnep0

sleep 2
/etc/init.d/dhcp3-server stop

and it looks to be working now 😉