Printer Discovery from Android Device

This time I will show you how to discover Printers over a wifi network, to do this we need to use the jmDNS Java Library which is an implementation of Multi-Cats DNS, a network service discovery service.

First of all we need to create a Printer Object which is here:

This class represents an instance of a Printer in the Local Network.

Then we need to implement the ServiceListener, here it is for you:

We instantiate it on our main activity

And finally we start it and stop it onResume and onPause respectively:

We should see on the Log something like this:

Remember to add this permissions in your manifest:

<uses-permission android:name=”android.permission.INTERNET”/>
<uses-permission android:name=”android.permission.ACCESS_WIFI_STATE” />
<uses-permission android:name=”android.permission.CHANGE_WIFI_MULTICAST_STATE” />

Patrones y Anti-patrones de diseño móvil – Chart Junk

El término chartjunk fué establecido por Edward Tufte en 1983 en su libro The Visual Display of Quantitative Information:

The interior decoration of graphics generates a lot of ink that does not tell the viewer anything new. The purpose of decoration varies — to make the graphic appear more scientific and precise, to enliven the display, to give the designer an opportunity to exercise artistic skills. Regardless of its cause, it is all non-data-ink or redundant data-ink, and it is often chartjunk.

 

Chart Junk


Patrones y Anti-patrones de diseño móvil – Idiot Box

Alan Cooper en su libr0 About Face 3: The Essentials of Interaction Design describe el siguiente escenario:

Cuando una persona entra en un estado mental altamente productivo trabajando en armonía con sus herramientas mantiene un flujo natural y la gente entra en ese estado sin muchos problemas. Interrumpir ese flujo sin una buena justificación es parar la productividad con estupidez, además es una forma muy disruptiva de hacerlo.

El concepto de Idiot Box se le atribuye a Bill Scott , el ejemplo mas representativo lo encontré en la aplicación de Photobucket para IOS.

En el momento de escribir este post me suscedió lo siguiente:

Después de llenar como 10 campos, algunos de ellos obligatorios. Aprieto el botón “I Agree, Sign Me Up!” y aparece la siguiente pantalla.

idiot box

Registro de Photobucket

Oh, si estoy segúro que quiero crear una cuenta, ¿será por eso que me molesté llenando todos los campos y apreté el botón verde grandote?

También la app de Bestbuy se basa en Idiot Boxes para confirmar que un producto há sido agregado a el carrito de compras. Un método menos disruptivo y mas efectivo sería simplemente incrementar el badge (número) de elementos en el carrito, este número está siempre visible sobre el ícono del carrito.

BestBuy shpping kart


Nueva demostración sobre Dios

-Yo soy Dios, todo poderoso. No hay cosa alguna que no pueda hacer – Dice Dios.

Pero dice el hombre – Ahh si? Entonces ¿tiene usted el poder de crear una roca tan pesada de tal manera que ni usted mismo pueda levantarla?. Quod erat demostrandum.

-!Valgame dios! – dice dios – no Habia pensado en eso.

Y subitamente desaparece en un soplo de lógica.

Java Obsoleto???

Java o Python
He sido  programador profesional durante más de 2 años. He trabajado en proyectos grandes y pequeños, que van desde Java Web Services para Perl-CGI, sitios web y J2EE  JavaScript prototypes. Puedo decir que tengo experiencia suficiente para saber cómo acercarse a la mayoría de los aspectos de la programación en la industria y las cuestiones relacionadas con el trabajo. Dicho esto, voy a explicar por qué creo que el lenguaje de programación Java se estáquedando  obsoleto  en una industria madura con lenguajes nuevos y viejos.

Trasfondo Personal

Antes de empezar, quiero explicar mi experiencia de programación con Java y otros lenguajes para que este post no sea considerado como otro “Flamer”.

Estoy Certificado como Sun Java Certified Programer, y he programado profesionalmente durante 2 años. He trabajado para dos empresas de gran tamaño (sin nombres) que me han dado una excelente experiencia con el lenguaje de programación Java y su uso a nivel EE. Además de Java, se me ha requerido  desarrollar en SQL (Oracle y MySQL, así como MS-SQL), Perl (CGI y secuencias de comandos), Bash y el diseño web habitual / lenguajes de desarrollo PHP, HTML, ActionScript, Javascript y CSS. Recientemente he tenido que aprender Python, y su programación orientada a objetos dinámicos de alto nivel , y al hacerlo me ha llevado a publicar este artículo.  Actualmente trabajo para una empresa de gran tamaño en la que tengo que desarrollar utilizando Java EE, pero actualmente estamos mudando parte de nuestros servicios a Python.

Falsas Ideas y paradigmas

Muchos de los que dudan de Java por ahí tienden a soplar la misma trompeta, cantar la misma melodía;  es decir, todos dicen ‘ Java Sux!! 11′.  El problema con esto, es que Java esta compuesto de tres partes: un lenguaje de programación,  un compilador, y la máquina virtual / intérprete. Esto significa que aquellos blabberings acerca de cómo el ‘Java sux’ no inducen sus observaciones lo particular, la parte que les desagrada, es decir, si odian la sintaxisa, el compilador o intérprete. No sólo es este “Flaming” una cosa inexacta, pero por lo general me enojo por aquellos que tienen muy poca o ninguna experiencia con el lenguaje de programación o de sus usos. A lo sumo, que han tratado de ejecutar un programa en Java y debido a su propia falta de comprensión o una mala configuración, noles compila. Muchas veces algunas personas que “flamean” ni conocen el idioma ni sus componentes y por lo tanto solamente tienen una opinión inducida o educada.

Otra de las cosas que es odiada de Java es que es lento. Bueno, están en lo correcto. Bien, pero hay mas que  velocidad. Los primeros lanzamientos de Java eran muy lentos. Realidad. Sin embargo, las últimas versiones (Java 5 y 6) han añadido características del lenguaje que aceleran la ejecución en ‘run-time’  como son parametrización de tipos, autoboxing / unboxing de los primitivos, – chequeos en ‘compile-time’. Si bien estas características aceleran un poco las cosas, Java sigue siendo relativamente lento.

Ahora, a Flamear!! … errr, la crítica constructiva.  x)

Java es demasiado estricto

Java se ha enorgullecido de dos características – Estricto diseño orientado a objetos (OO) y ‘Write Once, Run Anywhere’ la disponibilidad en multiplataformas, – las cuales han sido a la vez aceptadas y rechazadas, en cuanto al los pros y contras de estas características. Realmente no veo nada malo en el diseño orientado a objetos. De hecho, es mi método preferido de desarrollo de software. El problema con el estricto diseño OO  de Java, es que es muy difícil de programar de otra manera. Estás obligado a adherirte a prácticas OO ya sea haciendo un pequeño programa de pruebas, o una aplicación Entrerprise. Esto no es el caso de Python. Es tan dinámico y productivo al escribir, que puede ser utilizado para escribir un script de copia de seguridad rápido o grandes servicios de back-end.

Java es también un ‘strict-typed language’. Esto significa que en creación de instancias, los objetos se le da un tipo (o “class”) y el compilador hace cumplir esto. Si un objeto tiene que cambiar el tipo, debe hacerlo a través del “polimorfismo”  enfoque de diseño orientado a objetos. Esto lo aplica Java en tiempo de ejecución. Es otra característica de Java no permitir tomar la decisión sobre qué enfoque de software de diseño que se va a tomar – procediral u orientado a objetos – por lo que uno queda atrapado desde el primer día.

Lenguajes como Python y Ruby no son estrictamente typeados. Esto significa que el programador tiene más flexibilidad (pero tiene la responsabilidad de garantizar determinados tipos en tiempo de ejecución) sobre la forma específica los aspectos de un programa de tratamiento de la información.

Java tiene mucha “palabrería” –  a.k.a Sintaxis

La naturaleza del diseño orientado a objetos significa que el código está escrito más para definir los objetos y sus conexiones relativas. Java lo hace muy bien, con una jerarquía de objetos agradables, pero es una víctima de su propio diseño y convenciones – los accesors / mutatorsdores (‘gets’ y ‘sets’), principalmente -, mientras que en lenguas como el pitón, la convención no es utilizar este enfoque, pero para exponer las propiedades de un objeto directo, ya sea por la notación de punto, o lo definen como un diccionario. Esto también puede hacerce  en Java, pero obj[‘val’]’ es mucho más fácil escribir que ‘obj.getValue () ‘. Es posible que muchos vean esto como un punto discutible, algo que es puramente específico a la aplicación , pero en la realidad todo aquel que  sabe cómo escribir Java, se adherirá a la convención estricta de que los objetos deben ocultar su implementación. Esto es definitivamente un buen enfoque para el diseño de software, pero en la práctica se convierte en  una carga que pesa sobre un programador para escribir y usar estos aspectos de diseño. Sin mencionar que no ayuda mucho a la regla de los 80 caracteres por línea …

Otro ejemplo de la “mucha palabrería de la sintaxis de Java ‘ es la API de colecciones. Una vez fué conocida como su logro glorioso, el API de colecciones de Java fue un excepcional conjunto de objetos destinados proporcionar objetos – una extensión al array típico – que proporcionan acceso fácil, OO y rápido  a una colección de objetos.

Sin embargo, con la aparición de otros lenguajes, el API de colecciones de Java se ha quedado bastante estancado debido a la falta de  de la sintaxis dinámica. A continuación se presentan dos ejemplos, uno de la definición y la iteración de una lista en Java 1.5 y el otro sobre la iteración de una lista en Python 2.5:

List<String> list = new List<String>();// define a List that contains only String objects
list.add("Herro");
list.add("Moo");
list.addAll(myOtherList);
for (String str : list)
System.out.printf("Item: %s\n",str);

Y exactamente lo mismo en Python 2.5:

list = ['herro','moo']
list.extend(my_other_list)
for item in list:
print "Item: %s\n" % item

4 líneas de código, o 6? Imaginense eso con una aplicación grande (que aplicación en estos días no usa listas o mapas?) en la probablemente tendremos 4000 lineas de código en Python contra 6000 en Java.  Se puede ver que el código escrito en Java se vuelve muy grandes, simplemente por el hecho de la sintaxis del lenguaje.  A los programadores les gusta programar, no les gusta tener que escribir más de lo necesario. Python  permite  escribir exactamente lo que se necesita, y sin tener que escribir 100 palabras para hacerlo.

Write once, debug anywhere’

La capacidad de ejecutar una aplicación en cualquier sistema operativo sin necesidad de recompilar es una buena idea. Es punto de venta principal de Java es que tiene esta capacidad. Inicialmente se trataba de una característica útil y deseada del lenguaje porque no sólo por que si funcionaba, sino por que fue en una época en que la Web estaba en auge (tecnologías pre-2000) y nuevas tecnologías estaban naciendo. Hoy en día, la plataforma es la Web. Esto significa que no son necesarias las habilidades multi-plataforma de un lenguaje y un compilador / intérprete. Sólo necesitas un navegador web que funcione y una conexión a Internet. De hecho, con la rápida adopción de AJAX (Asynchronous Javascript and XML), los sitios web estarán sustituyendo a las aplicaciones de escritorio. Software de  servicio (SAAS) es ahora la vanguardia del desarrollo de software y los objetivos de negocio, y la necesidad de aplicaciones de escritorio se hace cada vez menor a medida que más y más sitios web ofrecen abundantes características del navegador web – solo hay que mencionar GMail, Google Maps o EyeOS – y cualquiera experimentará el funcionamiento de aplicaciones ricas, todo en la comodidad de tu navegador web.

¿Y ahora qué?

Sin duda Java seguirá siendo una parte importante de la industria dentro de los próximos años.  Sun es una empresa grande y potente,  son buenos manteniendo las cosas vivas. No sólo eso, sino que  se lanzó Java bajo la GPL, así que le queda de un rato todavía. Algunos podrían decir que esto era parte de una campaña de marketing inteligente para que la gente vuelva a usar Java. De cualquier manera, realmente yo sólo puedo ver su desaparición como algo más dinámico, cuando  tecnologías confiables de código abierto tomen las riendas.

Java sigue teniendo un lugar importante en el mercado empresarial. Según este sitio, es el primer lugar (en términos de oportunidades de empleo, third party vendors y cursos),  pero como con todas las estadísticas,  eso ha de tener su pizca de sal por parte de Sun.

En Conclusión

Yo no soy un enemigo en Java,  ha pagado mis facturas de los últimos años, así que le debo algo de crédito, de hecho me gusta mucho Java, su syntaxis, su portabilidad, no mucho su velocidad, es solo que debido a mis recientes aventuras con Python, enseguida vi las fallas en Java. Python hace que las cosas sean rápidas de escribir. Es potente, maduro y más concreto, es de código abierto. Java se quedará un buen rato, pero sus méritos originales no son lo que lo mantendrán con vida.

Amig@

Que eres para mi

Una alegre mirada, una tierna sonrisa

Por un encanto estoy atrapado

Un toque gentíl, un cálido abrazo

Eso lo conosco muy bién

Una suave voz, un amor no hablado

Atravez del camino veo

Un agradable rostro, una belleza interior

Eso es lo que eres para mi.

Lo escribí medio dormido a las 5 de la mañana.

Mientras pensaba  en algunas personas…

100 Buenas razones para ser Ateo, Agnóstico o No Creyente

.

1) No te tienes que preocupar por un dogma.
2) Tu dinero es para tí y no para tu comunidad religiosa.
3) Puedes pensar objetivamente.
4) Eres dueño de tu propia vida.
5) Puedes elegir tus valores morales, sin que nadie lo haga por tí.
6) Puedes estudiar ciencias sin temor a que contradiga tus creencias.
7) Si oyes voces lo puedes relacionar con esquizofrenia, y vas al psicólogo en vez de al cura.
8)  Ningún tratamiento médico va en contra de lo que crees.
9) Tienes mucho menor tendencia al divorcio.
10) Tienes muchísimo menor tendencia a la criminalidad.
11) Tienes menor tendencia a la violencia.
12) No tienes que odiar grupos por motivos que no conoces.
13) Puedes admitir lo que te gusta sin temor de ir en contra de tu dogma.
14) Puedes fundar amistades con cualquier persona, sin importar su ideología.
15) Tus amigos que estudiaron no se burlan de tí a tus espaldas.
16) Es muy dificil burlarse de tu ideología.
17) Sabes que las mayores mentes del mundo no fueron creyentes.
18) Tienes todo el Domingo para tí solo.
19) No te ofenden las festividades de ninguna índole.
20) No le temes a maldiciones ni a trucos de magia.
21) No te ofenden los comediantes ateos, que son muchos.
22) Puedes ver con sentido del humor las imágenes de alguna deidad.
23) Dogmas nunca nublan tu juicio.
24) Puedes comer lo que quieras, pues nada te prohibe ningún libro, aunque sea pascua.
25) Aguantas bromas sobre tu ideología sin estallar en furia.
26) No te preocupas del Infierno.
27) Puedes disfrutar tu vida al máximo, sin tener que prepararte para una vida eterna mágica.
28) Puedes entrar a sitios de Monselvol, URI, Chuck Norris, Bob, etc, ya que no te ofenden.
29) No te tienes que arrancar partes de tu cuerpo si cometes un pecado.
30) No te tienes que preocupar por los oscuros secretos de la historia, pues no desbaratan lo que crees.
31) Puedes asentir a todo esto que estoy escribiendo.
32) No te tienes que conformar con la posición del misionero.
33) Puedes ver Neon Genesis Evangelion sin tener un ataque nervioso.
34) Es dificil estafarte con astrología, demonología y demás creencias de poderes mágicos en los humanos.
35) No eres misógino.
36) Aceptas a las razas que sean sin decir que una u otra no tiene alma.
37) No tienes la obligación de quemar la aldea del que no cree como tú.
38) Te da gusto en vez de ira cuando la ciencia descubre algo.
39) No crees en supersticiones.
40) No te importa que te maldigan.
41) Gente con tu ideología va en aumento en el mundo.
42) Nadie te obliga a ser homofóbico.
43) No tienes prejuicios contra diversas investigaciones genéticas, médicas y biológicas.
44) Puedes fingir ser de cualquier ideología sin que esto te parezca molesto o degradante.
45) Sabes que los virus evolucionan y tomas tus precausiones.
46) No tener que preocuparte por una vida infinita que sabes que terminará volviéndote loco, pues la mente humana está programada para aburrirse de la vida alrededor de los 80 años.
47) No tienes que contarle tus intimidades a un cura para que te perdone.
48) No tienes que asistir a ceremonias aburridas por obligación.
49) Puedes estar en unión libre con una pareja.
50) Puedes tener sexo antes del matrimonio.
51) Tener la certeza de que el IQ del ateo es en promedio varios puntos más altos que los del creyente.
52) No tienes una mitología favorita y eso te deja disfrutarlas todas.
53) No dependes de un ser imaginario para darte soporte emocional.
54) No tienes que estudiar catecismo.
55) No tienes que memorizar oraciones para repetirlas cual perico.
56) La gente puede estar segura de que no eres masón.
57) No tienes la obligación de generar más convertos.
58) No tienes obligaciones sociales para con los miembros que compartan tu ideología.
59) Sabes que estas al mando de tu vida.
60) No te tienes que preocupar cuando alguien encuentra otra contradicción en tu libro sagrado.
61) Cada vez que haces algo que te gusta, no te tienes que cuestionar si es pecado.
62) Tu visión del mundo no cambia radicalmente cuando la de tu lider religioso lo hace.
63) Puedes aceptar las teorías que quieras, nadie te dice cuales aceptes y cuales no.
64) No te vas a suicidar por una ideología.
65) Puedes poner lo racional sobre lo emocional.
66) No le tienes que tener miedo a la tentación de ningún demonio imaginario.
67) No tienes que adorar a ningún ser supremo.
68) Tu decides que es lo más importante en tu vida, y no nadie más.
69) Sabes que tu grupo nunca ha hecho guerras religiosas.
70) Puedes usar anticonceptivos sabiendo que no son malignos ni del diablo.
71) No le temes a ningún mundo paranormal.
72) Los símbolos malignos no representan mucho para tí.
73) Tu moral no estará condicionada bajo ningún libro.
74) Los dinosaurios y registros fósiles no te causan un dolor de cabeza para racionalizarlos y hacerlos compatibles con tu creencia.
75) Resuelves tus problemas tu mismo, sin esperar que se resuelvan mágicamente.
76) Tienes mucho menos posiblilidades de ser miembro de un culto o secta.
77) No haces el bien hipócritamente creyendo que te espera una recompenza.
78) Puedes ignorar las supersticiones populares.
79) Puedes decir que no tienes nada en común con Judas.
80) No tienes miedos irracionales.
81) Puedes confiar en la medicina.
82) Tus amigos son en verdad tus amigos, no gente que comparte tu ideología.
83) Tu mente en general está mucho más abierta.
84) Tus hijos no son influenciados desde la infancia hacia ninguna creencia.
85) No tienes que explicarte las cosas irracionales como el alma o espíritus.
86) Puedes admitir abiertamente tus deseos.
87) No tienes que seguir un comportamiento patrón.
88) Eres menos propenso a crisis emocionales y existenciales.
89) No tienes prejuicios hacia ningún tipo de música.
90) No te tienes que dar complicadas explicaciones a tí mismo sobre las consipiraciones y el lucro que representan las religiones mayoritarias.
91) Aceptas los hechos como son y la realidad como es, sin adornarla.
92) No afirmas poseer la verdad absoluta.
93) South Park, Dragon Ball, Family Guy, y un largo etcétera.
94) No hay divergentes de tu ideología que te hagan dudar.
95) No hay gerarquías en tu ideología, así que no estas por debajo de nadie y ves a todos los humanos iguales.
96) Tienes la dignidad de no vivir de rodillas ante algo.
97) Incluso las grandes mentes de la televisión son ateas. El ejemplo más grande es Gregory House.
98) Ser libre en tu mente, y no estar convencido de que hasta tus pensamientos son pecaminosos.
99) Tu mente es más racional que pasional, no guiandote por convicciones o corazonadas, sino por hechos y evidencias.
100) Te es más fácil escribir el cien razones sobre las ventajas de tu ideología que de otras…

Demostración sobre Dios

-Me niego a demostrar que existo – Dice Dios – Por que la demostración anula la fe, y sin fe no soy nada.

Pero dice el hombre – El ser humano es una revelación brusca, ¿no es así? No puede haber evolucionado al azar, es una coincidencia extrañamente improbable que algo tan impresionantemente complejo pueda haber evolucionado al azar. Esto demuestra que voz existís, y por lo tanto, según vuestros propios argumentos, Vos no. Quod erat demostrandum.

-!Valgame dios! – dice dios – no Habia pensado en eso.

Y subitamente desaparece en un soplo de lógica.

Mi vida como Diseñador Gráfico

Y esque muchas veces me preguntaban:

-¿Que hacias cuando eras Diseñador Gráfico?-

Una imagen vale mas que mil palabras

Bueno, pues aqui esta este discurso con el cual muestro lo que tiene que hacer un diseñador gráfico. (Las obras acontinuación son una recopilación de internet) .

Maquillaje, cirujia plástica, rejuvenecimiento, etc…


De esta última hay un video en el videotubo.

Estos dos que siguen son trabajos de http://www.gregapodaca.com/

Cirujia Plástica:

Lipo:

Mejorar el Cutis:

Pintar ojos:

También se puede hacer lo contrario:

Lo que le hace un Diseñador Gráfico a su hijo:

Cuando se entra en el aburrimiento:

Y por último, cuando la regamos XD :


Le falta la rayita divisoria.


Al reducir la cintura movieron el fondo.


WTF!


La imagen del espejo le gusta tener diferente color de cabello.


Que piratas XD, Este error despues fué corregido.

Bueno, espero haya sido muy informativo y entretenido XD.

Hola Mundo

Realmente alguien lee estas cosas?

“Hello World”:

Palabra o string usada en programación para crear un programa de ejemplo que solo imprime eso, pero por que se usa “Hello World” , por que no poner “Test Program”? o algo así. Hello world

Hola Mundo…

hola a alguien…

mundo… ¿puedes oirme?…

aquí estoy, existo…

hay… ¿alguien ahi?…

Tal vez sea lo que piense un programa o el análogo a pensar de un programa recien creado si existe semejante cosa.

En realidad este es el segundo post de este blog, el primero ya estaba escrito cuando instalé el blog, lo pueden ver por ahí, se titula “Hello World” y casi pensé que me habia quitado la oportunidad de crear mi propio post de prueba “Hola Mundo”, pero aún asi lo hice, es este que en teoria es un post prueba pero en la práctica resultó mas que eso.

Pues es así como comienzo mi primer blog, ignorando si algun día alguien lea esto, tal vez siempre termine hablando conmigo mismo, tal vez estoy solo, tal vez nunca sea escuchado.

Pero por si acaso:

HOLA MUNDO!!