How many planets are there in the universe?

[quads id=5]

Translated from my original publication in Spanish

Every time we look at the sky we always see the stars that appear throughout the night, some are planets, others a cluster of stars and others are like our sun, but we always ask ourselves how many stars there are in the universe, but why not? how many planets there will be, and we also wonder, how many have living beings.

There is an equation to calculate the number of existing civilizations, but I will not focus on those aspects, since I am not a mathematician, and in that equation there are many unknown parameters and they are only suppositions, that equation is the Drake equation.

Now we will calculate curious facts by means of basic mathematics, without a scientific method, since it is absurd to do it when we do not have the real parameters, so I will only do some leisure with the data that we know through the observation that has been made of the universe for years.

It is estimated that there are one hundred billion (100,000,000,000) galaxies in the observable universe, from these galaxies there are several classifications in terms of the number of stars that exist in them, ranging from dwarfs, with 107 (10,000,000 ten million), to the giants, with 1012 (1,000,000,000,000 one trillion) but since we do not have an exact figure of how many dwarfs or giants we will take the average number that would be 109, which would be 1,000,000,000, a billon stars per galaxy.

We already have that there are 100,000,000,000 one hundred thousand million galaxies on the Universe of which each galaxy has (1,000,000,000) at least billion stars, so with a multiplication we would have to: 1011 x 109 = 1020 one hundred trillion stars in the universe (100,000,000,000,000,000,000).

Now we will remove the average planets per star, for this I will not get into much trouble; if we suppose that our solar system has 8 planets and 5 dwarf planets (those known until today 24-March-2012, Ceres, Pluto, Haumea, Makemake and Eris) we will take into account that most extrasolar systems that have been detected do not surpass the number of planets in our planetary system, perhaps due to lack of observation, that does not mean that they have less number, but so far is what we know, we will take as a reference half of our planetary system to get the number of planets, by which would have on average 5 planets plus 3 dwarf planets by planetary system, then we would have by a few simple multiplications to remove the planets of the universe:

1020 x 5 = 5020 five hundred trillion planets (500,000,000,000,000,000,000) and

1020 x 3 = 3020 three hundred trillion dwarf planets (300,000,000,000,000,000,000)

So in the universe with the data we know, there are approximately 3020 + 5020 = 8020 eight hundred trillion planets (800,000,000,000,000,000,000).

800 trillion planets of which if we assume that of every 15 one has life (fifteen planets of our solar system and only one has life) then:

8020/15 = 5319 fifty-three trillion habitable planets (53,000,000,000,000,000,000)

Although I do not think that of every 15 there is one alive but the number must be much smaller, but as we see that amount even though the number is huge, maybe there may be life in several satellites but those do not take them into account since the number would grow radically.

In summary:

  • In the universe there are 100,000,000,000 one hundred billion galaxies
  • Of which each galaxy has 1,000,000,000 billion stars
  • This gives us 100,000,000,000,000,000,000 one hundred trillion stars in the universe
  • Of which each star has an average of 8 planets (5 planets and 3 dwarfs)
  • This gives us a total of 800,000,000,000,000,000,000 eight hundred trillion planets in the universe.
  • Of which at best 53,000,000,000,000,000,000 fifty-three trillion planets alive in the universe

This last data is exaggerated but the point of this article is not to be exact, we should also take other factors such as how long a civilization or a planet lives and things like that, but the purpose of this article is to take as a curious fact, that In spite of our planet that seems enormous, the universe is too big, that only when one starts to see things carefully, we begin to see that we are only a grain of sand in this ocean, called the Universe.

As a detail since we are with this number and multiplication, the number of planets that exists approximately in the universe if for each planet we use the measure of a grain of sand (1 millimeter) and put each grain one on another forming a building, our structure would measure close to the width of the Milky Way.

Writted by Hector de Leon Guevara (2012)

 

 

SAT, cfdi 3.3, facturación electrónica, la opinión de un desarrollador de software PARTE II – Beneficio

[quads id=5]
Si no has leído mi primer entrada sobre mi opinión te invito a que leas dando clic aquí.

Les recuerdo que esto solo es una opinión de alguien que tiene desarrollando software por más de 10 años y por lo menos 5 años involucrado en el tema de facturación electrónica, igual no dejo de ser programador y no soy experto fiscalista, ni experto contador.

Quizá no sea la primera vez que leas que la facturación electrónica 3.3 te beneficia a ti como contribuyente, es imposible que no lo hayas leído en otra parte, ya que el SAT nos bombardeó con publicidad por todos lados hablando de que el beneficiado es el contribuyente. Valga broma.
El único beneficiado aquí es el SAT y vamos a verlo a continuación.

¿Quién gasta al adaptarse?

Cuando se nos obligó a facturar con la versión 3.2 todos tuvimos que gastar, claro el SAT nos dio un súper sistema gratuito para facturar (esta será otra entrada, el cómico sistema gratuito 3.3), un sistema que igual hacia su trabajo, al cual llamaban factura fácil, y era todo menos fácil, y mucho menos contemplaba todo lo que se refiere a facturación electrónica. Yo lo utilice algunas veces, jamás supe cómo se agregaba una addenda, o un complemento de impuestos locales, o vaya, no sé si existió un formulario para crear la nómina electrónica gratuitamente (disculpen, si es que existe háganmelo saber). En pocas palabras, SAT te da un sistema mediocre para hacer las facturas electrónicas, facturas que por lo mucho llevan un concepto ya que al momento de agregar más de 5 conceptos se comienza a volver engorroso.

Ahora, SAT ofrece una nueva solución la cual te felicita cada que haces algo bien (para que el contribuyente se sienta felicitado claro).

Ya utilice esta nueva versión de facturación gratuita que otorga el SAT, y yo que soy afín a la tecnología tarde varios minutos en encontrar el botón para crear nueva factura. No se diga para crearla. No quiero imaginar personas de tercera edad haciendo la factura ahí.

Ahora analicemos quien es el que gasta, el SAT otorga una herramienta que estimándola de lejos sale menos de 100 mil pesos su desarrollo, una herramienta para sus contribuyentes a nivel nacional, la cual te hace la factura versión 3.3 pero la hace de una manera tediosa, tardada y sin una buena interfaz de usuario que sea intuitiva. Esto tiene un plan con maña ya que el SAT te da algo mediocre para que hagas tu factura pero casi te está diciendo “pues es lo que hay”.
Yo me pregunte, porque será que el SAT no ofrece un buen servicio, que tenga calidad y no se caiga todos las quincenas ¿Porque hace esto el SAT? Pues muy simple, porque el mismo SAT crea un océano azul (dirían los mercadologos), crean un negocio, un giro donde no existía, un giro el cual es un negocio en el que en la cima de la pirámide está el mismo SAT, veamos:

  • SAT crea un requerimiento el cual es obligatorio para sus millones de contribuyentes.
  • SAT otorga una herramienta mediocre.
  • Los amigos del SAT crean herramientas más sofisticadas, pero estos amigos del SAT llamados PAC, le pagan al SAT dinero (mucho dinero) para tener el permiso de timbrar. Ademas existen servicios web los cuales solo los PAC tienen privilegio como: recuperar facturas emitidas, recuperar facturas canceladas, recuperar facturas recibidas etc.
  • El contribuyente al estar cansado de utilizar la mediocre herramienta, paga a un PAC para poder realizar su facturación de manera ágil.

Entonces concluimos que el único que se beneficia es el SAT, creando un negocio donde no existía, no sé si exista transparencia para todo ese dinero que recibe, desconozco si ese dinero se utiliza para algo, que para beneficiar al contribuyente no lo es. Y lo genial de este negocio es que si ellos quieren, pueden obligar nuevamente a una nueva facturación electrónica 3.4, 3.5 etc etc. Y así seguir sacando mucho mas dinero.

¿Qué es lo mínimo que debió otorgar el SAT? El SAT por lo menos debió dar puntos de venta gratuitos los cuales ayudaran a sus contribuyentes a llevar la facturación, y digo lo mínimo, ya que si tu como institución obligas a tus contribuyentes a realizar un trámite, debes agilizárselo. Es triste que nadie se queje directamente sobre todo este tema. Entiendo que no todo es malo con la facturación electrónica 3.3, existen puntos buenos pero a medias, ya que si esto por arriba del iceberg de lo que dice servir es ayudar al contribuyente es lo menos que se está haciendo. Si esto es para detener negocios fraudulentos que no facturan, creo que está creando más dificultades por lo cual las personas mucho menos se darán de alta.

Esto solo es una opinión de un programador de software, disculpen si hay errores, es desde mi visión como programador todo el escrito anterior.

8 inventos descabellados de Nikola Tesla

Nikola Tesla es uno de los científicos olvidados, los cuales realizaron demasiados avances en la ciencia, uno de sus logros siendo la corriente alterna, el radio, la luz neón y más de 700 patentes, en esta entrada hablaremos de 8 de los inventos mas descabellados de este gran científico.

1.- La Torre Tesla

También conocida como la torre Wardenclyffe, fue construida entre los años 1901 y 1917, y su propósito era demostrar la transmisión de energía sin cables.

Su construcción nunca termino por falta de presupuesto, y la torre fue demolida al iniciar la primera guerra mundial.
Se dice que la torre era el inicio para una idea que tenia Tesla sobre transmitir la electricidad por medio de la atmósfera, y así economizar la energía para todo el mundo. Por cualquier cosa, nunca logro a cumplirse este proyecto, aunque, en los últimos meses está circulando el renacimiento de este invento, dos rusos (los hermanos Plekhanov) buscan fondos para revivir la Torre Tesla. Quizá seamos testigos de ver uno de los sueños de Tesla, hecho realidad.

2.- Energía a partir del vacío

Tesla fue uno de los pioneros de la idea de energía de punto cero, esto quiere decir, que el vacio quizá posea cantidades de energía infinitas. Si esto es realidad, existiría energía en todo el universo la cual espera a ser utilizada.
Esta idea parecía violar la primera ley de termodinámica (principio de conservación de la energía), pero nuevos estudios sugieren lo contrario.
Los científicos han analizado datos procedentes de satélites en el espacio, y han llegado a la conclusión de que el 75% del universo tiene energía oscura, energía de un vacio puro. Esto quiere decir que el mayor almacén de energía, es el espacio entre las galaxias. Tesla tenía razón en que existe energía en el vacío, el único problema es que en nuestro planeta, la cantidad existente es demasiado pequeña, insuficiente para el fin que tenia este científico.

3.- Teslascopio

El teslascopio, un aparato que podía captar las señales electromagnéticas. Tesla pretendía con este invento comunicarse con vida extraterrestre.
Todo comenzó en 1899, se encontraba Tesla investigando la electricidad producida en la atmosfera, cuando comenzó a recibir señales repetitivas y con un patrón que no parecía azar, lo cual indujo a pensar que era un mensaje inteligente, esto dio inicio a la creación del teslascopio, invento que más tarde fue protagonista de muchas burlas, por parte de la comunidad científica.


Tesla afirmaba que se comunicaba con los habitantes de Marte (alguna vez menciono Venus), y a pesar de las burlas, murió convencido de ello.

4.- Teleforce (Rayo Mortal)

Tesla decía haber creado un rayo que podía destruir 10,000 aviones a una distancia de 350 kilómetros.
Se trataba de un proyector de partículas cargadas inspirado en el generador Van de Graff.Nunca fue visto este invento, pero el FBI se lo tomo tan en serio, que al momento de su muerte, tomo posesión de todas las notas de Tesla, los cuales en su mayoría siguen bajo llave).

5.- Modificación del clima

Tesla observando que la ionosfera mantenía un potencial positivo, formando un circuito con tierra, llego a la conclusión de que las nubes se podían manipular, si se modificaba el circuito global.


Enviando potentes ondas electromagnéticas dependiendo el clima deseado, se podría tener un control del ambiente (esto huele a HAARP).

6.- Iluminación del desierto del Sáhara.

En sus últimos años, con la idea de que se comunicaba con vida extraterrestre, Tesla propuso iluminar el desierto más grande del mundo, el desierto del Sáhara, para así dar una señal a los extraterrestres de Marte que en el planeta Tierra, también existía vida.

7.- El avión de Tesla

Tesla había ideado una maquina la cual se elevaba verticalmente, realizando pruebas de despegue mucho antes que los hermanos Wright. El proyecto no tomo forma, a pesar de haber nacido en una época que no existían los aviones, quizá porque Tesla perdió el interés y se enfoco a nuevas cosas, pero nunca lo sabremos.

8.- Maquina de terremotos

Esta invención sucedió según Tesla en el año de 1889, el dispositivo era pequeño, pero su sistema (desconocido), era suficientemente fuerte para hacer temblar todo el edificio donde lo probó en su laboratorio en Manhattan. Observando el peligro de seguir con este proyecto, decidió destruirlo tomando un mazo, y despareciéndolo para siempre.

Nikola Tesla, un científico que no suele aparecer en los libros escolares, pero un genio que poco a poco es más conocido por todos, y este articulo tiene ese fin, no olvidar a los que tenían una visión de crear una humanidad mejor.

Ultimo post del año (2017)

Según google analytics este año han entrado 102,943 visitas únicas, un número no tan enorme, pero para mí significa mucho, ya que todos los post que escribo es para compartir información que en alguno momento a mi como desarrollador de software me arranco algunos cabellos, información que no muchas veces esta en foros de programación, y espero que por lo menos de esos 102,943 personas que ingresaron este año, por lo menos el 10% le haya servido alguno de mis post, mi software gratuito o todas esas cosas que plasmo en este blog.

No soy mucho de festejar el cambio de año, ni de festejar estas épocas, pero me pareció interesante sacar el total de visitas y darme una idea de cuantas personas son las que ingresan.

Continuare escribiendo post el siguiente año, e igual publicare la versión tan esperada del sistema de gimnasio 2.0.
Y lo único que les deseo es que si sus combobox que han puesto en sus sistemas de manera directa sin utilizar un DateTime.Now, pues es momento que vayan cambiándolos ya que el lunes les va a tronar su sistema.
Nos vemos en el 2018, el año del .Net Core.

8 curiosidades sobre las neuronas

Las neuronas son la base del procesamiento del cerebro, y forman una red en la cual se desarrolla la funcionalidad motora y comportamiento de los seres vivos.

En las ciencias computacionales forman parte como la base de lo que conocemos como redes neuronales, las cuales funcionan simulando el comportamiento de las neuronas, las células de la mente.
En este artículo veremos 8 hechos sobre las neuronas.

1. Son células

Son un tipo de célula, las cuales forman una red de comunicación en el cerebro del reino animal. Su número es variable, se puede encontrar en gusanos cantidades de 300 neuronas hasta cien mil millones en el ser humano.

2.- Su descubrimiento

Las neuronas fueron descubiertas a finales del siglo XIX por Santiago Ramón y Cajal, un español que más tarde gano el premio nobel por este descubrimiento. Dentro de su descubrimientos, por medio del microscopio, observo que entre cada neurona rara vez se tocan directamente, mas tarde esto tomaría gran relevancia en el manejo de los mensajes comunicados neurona a neurona.

3.- La conexión

La conexión de las neuronas se realiza por medio del axón y las dendritas, dos ramificaciones que realizan el papel de emisor (axón) y receptor (dendrita). La zona de interacción de las neuronas se llama sinapsis, y lo que pasa en esta sección sirve para explicar las acciones del cerebro, tanto motoras como de comportamiento.
Existen a su vez dos tipos de sinapsis, una es eléctrica y otra química, siendo la segunda más compleja, y es donde se han encontrado relaciones de los procesos realizados con las emociones.

4.- La química de las neuronas.

La sinapsis eléctrica de las neuronas es una conexión directa, la cual ocurre instantáneamente, pero la sinapsis química, tiene más complejidad y es donde hay más material de estudio para comprender como funciona el cerebro.


Como mención anteriormente, las neuronas se conectan por medio de una ramificación llamada axón la cual lleva el mensaje, y las dendritas las cuales reciben el dato. La parte final del axón contiene varias estructuras sinápticas de nombre vesículas, estas son unas bolsistas que guardan los neurotransmisores, por su parte las dendritas tienen una proteína que actúa como receptor, al momento de la sinapsis, las vesículas reciben el mensaje que conlleva el axón y dependiendo el tipo de llamada, arrojan el neurotransmisor adecuado, el cual es recibido por la proteína en la dendrita. Continuando el ciclo hasta llegar al fin de la red, ya sea un musculo o una parte del cerebro.

5.- Los Neurotransmisores

Los neurotransmisores son moléculas químicas, existen tres tipos de estos: aminoácidos, aminas y péptidos.
Dependiendo el neurotransmisor enviado de la neurona mensajera, existe un receptor adecuado para recibirla. Antes se pensaba que solo existía un tipo de receptor para cada tipo de neurotransmisor, pero estudios recientes han demostrado que existen distintos tipos de proteínas receptoras, por lo cual el número de combinaciones de funcionalidad crece.

6.- Efectos de los venenos

Las neuronas controlan el sistema motor, entre ellos el sistema respiratorio. Algunos venenos (El de la cobra por ejemplo) han evolucionado a tal grado de imitar a un neurotransmisor, pero con la diferencia de no eliminarse, si no queda pegado en la proteína receptora de las dendritas. Imagina que una llave queda atascada en la puerta, la puerta ya no puede recibir una nueva llave para abrirse. De esta manera el veneno bloquea la sinapsis, es por ello que si no se atiende a tiempo, el veneno se expande por la red neuronal, taponeando los receptores, y a su vez impidiendo las instrucciones como respirar, es por ello que las personas con mordedura de cobra, mueren por paro respiratorio.

7.- Efectos de las drogas

Al igual que los venenos, las drogas actúan como neurotransmisores, elevando placer o adrenalina, gracias a que pueden aumentar el envió de neurotransmisores que producen placer.
El problema de las drogas es que conocemos poco aun de cómo actúan los neurotransmisores, por ello ocasionan efectos secundarios. Esto es, por que un neurotransmisor que sirve para una cosa, puede servir para otra, todo depende la proteína receptora que lo reciba. Así que si la droga no induce un incremento de dopamina (neurotransmisor para el control de estados depresivos), la misma dopamina es empleada por las neuronas para el control motor, por lo cual pueden producir taquicardias, o vómitos.

8.- Muerte de las neuronas

Cada día mueren más de 10 mil neuronas, es un pequeño número para la cantidad que tenemos. Estas comienzan a morir en el caso de los humanos, cuando se cumplen los 20 años. Hay un grupo pequeño de neuronas que tienen la función de dividirse y crear nuevas, pero el grupo es muy pequeño, las demás mueren debido a un proceso natural. Existen casos en los cuales se acelera el asesinato de las neuronas como enfermedades que aceleran su destrucción, como el Parkinson o Alzheimer, o ingerir drogas.

Estos son 8 hechos sobre las neuronas, la unidad del cerebro, que conforme pasa el tiempo más sabemos de ellas, pero aun estamos en la etapa larval en descifrar el órgano más complicado, el cerebro.

Un poco de canvas en este 2018

A lo largo de mi vida profesional he conocido pocos programadores que se involucran realmente en el desarrollo de videojuegos, con la llegada de HTML5 se nos facilitó el desarrollo de juegos gracias a canvas (algo inventado por Apple en el 2004), pero hoy ya más de 10 años después pocos lo conocen realmente, un propósito que tengo el siguiente año es dominarlo a la perfección, no tanto por aspectos laborales sino por un hobby que viene desde mi niñez, crear videojuegos.

Ya he realizado algunas cosas con canvas, pero como todo no por hacer unos cuantos gráficos o animaciones quiere decir que sea un experto (muchos por hacer algo ya ponen en su CV que son expertos), y no es para que todos los desarrolladores se involucren en esta tecnología ni hacer una revolución de ella la cual ya lo fue hace algunos años, sino simplemente dejar este escrito aquí para ser leído por mí un año después.

Por lo pronto abajo dejo un código que hice ahorita en 10 min para que los acompañe cuando tomen hongos o alguna otra droga psicodélica.

Código HTML

 <canvas width="500" height="500" id="myCanvas" > </canvas>

Código JAVASCRIPT


var context = document.querySelector("#myCanvas").getContext('2d');
context.beginPath();
context.arc(250,250,200,0,2*Math.PI,false)
context.fill();
context.stroke();
context.closePath();


    var i=0;
    setInterval(function(){

        DibujaPoligono("#myCanvas",3,i);
       
        if(i==360)
            i=0;  
        i++;

   },10);
    

    function DibujaPoligono(canvas,sides,iTurn){

        var context = document.querySelector(canvas).getContext('2d');
       
        context.beginPath();
        context.fillStyle = "white";
        context.strokeStyle="black";
        
        //pentagono
        var numberOfSides = sides,
            size = 200,
            Xcenter = 250,
            Ycenter = 250,
            step  = 2 * Math.PI / numberOfSides,//para pintar la figura calculamos la posicion
            shift = (Math.PI / 180.0) + iTurn; //giro


        for (var i = 0; i <= numberOfSides;i++) {
            var curStep = i * step + shift;
            
            context.lineTo (Xcenter + size * Math.cos(curStep), Ycenter + size * Math.sin(curStep));
        }


      
        context.fill();
        context.stroke();
        context.closePath();

}

SAT, cfdi 3.3, facturación electrónica, la opinión de un desarrollador de software PARTE I – Adaptación

Esta entrada fue impresa en el número publicado en Marzo 2018 de la revista Talento Empresarial.

Mi experiencia con facturación electrónica viene desde el desarrollo de la plataforma www.facturacenter.com.mx, posterior a ese desarrollo he hecho miles más que van desde servicios web, consultoría a empresas y algunos municipios del país, y lo último la migración de cfdi 3.2 a 3.3 de algunos sistemas.
Tratare de dar mi punto de vista como desarrollador de software, no soy experto en contabilidad ni temas fiscales, yo solo soy un desarrollador de software por lo cual puedo desconocer algunos temas a la perfección. En esta entrada me enfocare en la adaptación de los usuarios a este mecanismo.

¿Por qué facturación electrónica?

Entiendo las ventajas que significan para SAT que los contribuyentes emitan facturas electrónicas, ya que esto da mayor control a todo movimiento que hacen las pequeñas y grandes empresas, y poco a poco quitando el trabajo de los contadores de calculadora, y todo electrónico sin gastar papel, ni renovar los folios y todo el engorro que se hacía hace años. Lo malo del asunto es haber optado por sacar una versión 3.2 con tanta deficiencia la cual quieren tapar con la nueva versión 3.3 (la cual creo que complica todo al contribuyente, ahorita vamos para allá). No sé a quién consulto SAT para realizar la facturación electrónica en cuanto a sus secciones y formatos, catálogos, atributos, complementos etc. Hay características buenas como todo, pero las deficiencias que tenía la versión 3.2 quisieron mejorarlas teniendo un mayor control en lo que captura el contribuyente, cambiándolo todo (o casi todo) a claves, esto asegurando que el emisor no captura discrepancias, todo suena perfecto y como programador lo aplaudo, pero esto debió ser parte de la versión 3.2 no de la 3.3. ¿Qué es lo que pasa ahora con todo el tema de la migración? Que todos los sistemas fueron hechos para la versión 3.2 una versión que fue perfeccionándose y si la comparamos con la versión 3.3 hace un caos en los sistemas y en los usuarios que utilizan dichos sistemas.

CFDI 3.2

Un usuario que estaba acostumbrado: 10,20 quizá 30 o más años a hacer sus facturas con papel se le obliga a realizar facturación electrónica, ya que no fue opcional sino obligatoria al final, esta persona nunca ha utilizado una computadora, meses después el usuario comienza a crear su factura, y de repente le toca un cliente al cual le obliga hacer una addenda, el usuario no tiene ni idea que es una addenda, lo peor aún, el sistema que utiliza el usuario no tiene dicha addenda(si porque cada receptor puede hacer su addenda), el usuario llama a su proveedor de software y le dicen que la addenda estará lista en unos días. Por fin llega el día y el usuario ve que para hacer una factura para ese cliente en particular (ya que si la factura está mal no recibe su pago) debe llenar más datos y cuando por fin logra hacer la factura, se encuentra con una nueva sorpresa, el cliente le dice que la factura debe subirse a una página web la cual validara la addenda, y al subirla el sitio del cliente le dice que su factura no es válida; la persona nuevamente llama a su proveedor de software y se vuelve un ciclo prueba y error hasta que resuelve una problemática que no tenía cuando solo utilizaba papel. Este es un pequeño ejemplo de la problemática que pasó un contribuyente al migrar de papel a facturación electrónica. ¿Sera verdad que con la facturación electrónica se beneficia el contribuyente? O ¿Quién se beneficia realmente? El contribuyente en lugar de beneficiarse ha gastado en un software caro y en más tiempo del que utilizaba para hacer algo que hacía en minutos.

CFDI 3.3

Después de 6 años cuando los contribuyentes por fin llevan una vida más o menos tranquila en cuestión de facturación (a veces falla el pac, se caducaron sus sellos), y sale la súper noticia de la migración a la nueva súper poderosa facturación electrónica 3.3 la cual contiene miles de mejoras, más organizada, lo mejor que le pudo pasar al contribuyente, y arrojan como 20 catálogos los cuales deben ser utilizados ahora en lugar de que el usuario capture lo que siempre capturaba. Ahora para capturar conceptos el SAT obliga a que capture el usuario el producto y una clave que proporciona el bondadoso SAT, y lo dicen como si el usuario solo buscara la clave entre más de 50 mil (un numero absurdo y más adelante veremos porque) y rápidamente le resolviera su vida pero aquí es por lo cual dije con anterioridad, estos catálogos debieron salir en la anterior versión, las personas ya utilizan sistemas donde tienen hasta miles de productos, los contribuyentes viven al día, y ahora para hacer una factura deben ir producto por producto buscando la clave más o menos adecuada (ya que hay ambigüedades) esto en el caso de los conceptos, ah pero si te equivocas el SAT te dará perdón unos meses porque los contribuyentes son unos pecadores por no saber cuál es la clave de sus conceptos. Ahora veamos lo absurdo de este famoso catalogo:

  • Clave 92111704 – Guerra de guerrillas
  • Clave 25151501 – Nave espacial tripulada
  • Clave 11131602 – Semen
  • Clave 92112100 – Guerra nuclear
  • Clave 92112207 – Guerra ambiental
  • Clave 92112403 – Guerra nuclear
  • Clave 92112404 – Guerra basada en el espacio
  • Clave 92111806 – Mercenarios

Estos son unos ejemplos, y es cuando me pregunto ¿En realidad eran necesarios más de 50 mil elementos? Además esto está lleno de huecos, hay bastantes ambigüedades, y otro problema es que ese catálogo debe seguir creciendo a la lógica del SAT, ya que habrá cada vez nuevos productos, creo que si querían absorber todo producto posible se metieron en un problema enorme. Se debió contemplar una categorización menor, no más de 1000 elementos, esto ayudaría bastante al usuario, pero yo casi estoy seguro que este catálogo tiende al fracaso. El simple hecho de evaluar si corresponde lo que capturo el cliente con la clave ya es algo engorroso, así que no dudo que el siguiente año se elimine o se reduzca este catálogo así como el de unidad que también es otra maravilla.

Hablar de facturación electrónica es un tema para más de una entrada, es por ello que me enfoque en la adaptación en estos años, en otras entradas hablare de los monopolios existentes, nomina electrónica, y también del famoso y paradójico complemento de pago.
La facturación electrónica también tiene sus puntos buenos y puede mejorar la forma en como está organizada, lástima que SAT teniendo recaudaciones enormes (2015: 300 mil millones de pesos) no invierta ni el 1% de eso para su departamento de sistemas (siguen utilizando applets, yo amo java, no las applets).
Nos vemos en siguientes entradas.

SAT, cfdi 3.3, facturación electrónica, la opinión de un desarrollador de software PARTE II – Beneficio.

Un poco de abstracción en la programación no hace daño

Este es un tema muy subjetivo pero el cual es tan importante como el conocer el lenguaje de programación y herramientas de terceros.
La abstracción es un concepto filosófico que comenzó por las reflexiones filosóficas de aquel pensador llamado Aristóteles (dudo que hubiera sido el primero), y se resume como las propiedades y funciones que hacen un objeto (esos griegos ya sabían POO). En palabras simples, la abstracción es aquello que hace que un triángulo no sea un cuadrado, y si un sujeto entiende un triángulo a la perfección y otro sujeto también lo entiende a la perfección deberían ver el concepto de triángulo de la misma forma. Claro esto es yéndonos al extremo de abstracción.
¿Entonces todas estas cosas marihuanas a que nos llevan o para que nos sirven en la programación? Pues sirve prácticamente para trabajar menos.
Los requerimientos son los que definen un problema y para resolver ese problema es para lo que nos pagan, cuando tenemos un par de años trabajando desarrollando software es más fácil identificar los requerimientos parecidos y por lo cual es más fácil aplicar funcionalidades compartidas, en sí, estamos aplicando abstracción funcional al desarrollo, por lo cual trabajaremos menos pero pensaremos más (cuando digo más no hablo de tiempo aplicado sino de complejidad).
Un poco de abstracción no hace daño, un poco de herencia, sobrecarga y rehusó de funcionalidad ayuda a crear más estética en nuestro código, pero como todo, el exceso es malo, el balance de cuanta abstracción utilizar es decisión de uno, y cuando hablo de saber cuánto rehusó de funcionalidad utilizar, hablo por los cambios de requerimientos que a veces van desde una funcionalidad única en solo un módulo la cual nos hace re-codificar mucho.
Como conclusión, la abstracción es algo que se aprende por uno mismo con la experiencia, ni un curso ayudara a tener mejor abstracción, ni gurus, ni evangelistas, lo único que nos hará mejorar el nivel son los distintos problemas nacidos de distintos requerimientos.

Ver – Abstracción en la programación 

¿Cuál es el mejor lenguaje de programación?

Este artículo lo hago para romper muchos dogmas que existen en el área de desarrollo de software. Primero hablare de conceptos básicos y al final daré la conclusión y mi punto de vista. También hablare de lenguaje de programación encasillando: lenguaje de programación, framework, librería, Software-Stack etc.
Siempre los desarrolladores de software creen que los lenguajes que utilizan son los mejores ya que son los que utilizan. También existe el dogma de creer que el lenguaje de programación de moda (véase Ruby en el 2012, véase Mean últimamente) es el lenguaje más potente de todos.
Siempre defenderemos el lenguaje que sabemos utilizar ya que es el que nos da de comer, pero no por ello quiere decir que es el mejor. Los lenguajes de programación son como los colores, un gusto por el verde no lo hace mejor que el azul. O algo más acercado es, los idiomas con los que nos comunicamos, no por estar escrito el Quijote en inglés es mejor que el japonés. Para entender un poco el fin de este artículo, centrémonos en esto último.
Un libro nos cuenta una historia la cual pasa de generación en generación. Esta historia puede ser traducida y no por eso pierde su simbolismo. En los lenguajes de programación se cuentan al igual historias las cuales pueden ser traducidas de un lenguaje a otro (de programación); algo hecho en java del lado del servidor puede ser traducido a node.js o a php, y el lector de la historia (front-end por ejemplo) recibirá el mismo resultado. Aquí vemos un punto clave: la solución del problema es lo que le importa al cliente. Pero también le importa el tiempo en que es escrita la historia.
El tiempo en que se escribe una historia (programa) es parte de por qué nuestra elección sobre un lenguaje de programación nos hace pensar que es el mejor, pues es el que conocemos. Obviamente lo defenderemos a capa y espada. Aquí ya tenemos dos puntos clave: la historia y el tiempo en que esta es escrita, o a su vez, la solución del problema (historia plasmada en libro) y el tiempo de desarrollo (escritura de la historia).
Ahora ya que hablamos de la similitud de libros y programas, hablemos de otros puntos clave. Existen libros que son malos pero cuentan una historia que es entretenida más o menos, y existen libros que son buenos y cuentan una historia que entretiene, divierte, motiva, bueno es una obra de arte. Esto relacionado a los lenguajes de programación es lo siguiente: existen programas que son lentos, mal hechos pero resuelven el problema más o menos, y existen programas que resuelven el problema pero a su vez hace verlo como una obra de arte por su rapidez, y sobre todo la manera que parece que hace magia con el modelo de negocio del cliente. Es aquí el punto más importante: no importa en qué lenguaje de programación hagas las cosas, lo que importa es que hagas bien las cosas.
Otro punto clave es la antigüedad, la mayoría de las veces un lenguaje viejo es un lenguaje obsoleto (yo no veo a nadie escribiendo libros en griego o en hebreo). Pero no siempre es el caso, es mejor decir que un lenguaje es obsoleto cuando no evoluciona (nunca se implementó lambda, no tiene orms, no tiene plugins que hacen el desarrollo más rápido, etc).

Para concluir yo aconsejo que se debe conocer un lenguaje de programación con el cual estés cómodo, y después te hagas experto, más tarde en 1 o 2 años, ve conociendo más lenguajes, esto te ayuda a comparar la forma en que otros lenguajes resuelven lo que tú ya has resuelto, esto lograra que tu abstracción crezca y te ayudara a pensar de manera más ágil. Lo que más importa no es el lenguaje de programación sino la abstracción y creatividad que tengas para resolver las cosas.

Ningún lenguaje de programación es el mejor, sino el cómo tú piensas y resuelves el problema, eso es lo que en realidad importa.

Como detectar un verdadero programador senior

Este tema es un poco rebuscado, ya que muchos de los que trabajan en el ambiente de contratar personal desconocen los aspectos técnicos y es por ello que se crea la problemática de no poder diferenciar un programador experto tan fácilmente.

guagua

Yo soy de los que tienen la idea que un currículum es una carta de mentiras donde uno puede ser un súper héroe pero existen puntos clave que te sugiero puedas tomar en cuenta para detectar si un programador es senior o no:

  1. El currículum: el currículum es un medio que presta a la persona a cometer mitomanía pero igual puede la persona misma ahorcarse sola por medio de este. Un currículum lleno de lenguajes de programación es la primera señal de que la persona no tiene nada de senior, así de simple.Es más factible un currículum lleno de herramientas, frameworks o librerías que se engloben a 2 o 3 lenguajes de programación, que todo un libro de colección de lenguajes de programación que no lo hace un experto solo un mentirosillo.
  2. El trabajar en equipo: es poco común que una persona indique en una entrevista de trabajo, cuanto y como ha trabajado en equipo. El trabajar en equipo es de las cosas primordiales, la mayoría de desarrollos son en equipo, y si la persona demuestra que ha trabajado con equipos en lugar de ser un programador solitario (esos programadores que se sienten estrellas) es otro punto extra para demostrar que es un programador senior, un programador senior no es un súper hombre es solo una persona que sabe hacer las cosas bien.
  3. Arquitectura de Software: el conocer conceptos fundamentales de la arquitectura de software, desde básicos como el UML, tipos de arquitecturas, patrones de diseño es tan importante como el saber programar, y a un nivel de senior es algo que debe conocerse por ley.
  4. Base de datos: un senior sabe diseñar una base de datos de cero, también sabe utilizar procedimientos, triggers y funciones en un lenguaje relacional, eso es básico, no digo que sea un DBA pero si tener el nivel de diseñar bien la estructura de la base de datos. Si no sabe hacer esto, esta lejísimos de ser un senior.
  5. Tipos de sistemas: las personas pueden ser senior cuando han resuelto distintos tipos de sistemas, si una persona se la ha pasado haciendo puntos de venta que siempre es lo mismo, el mismo tipo de problema, eso lo aleja demasiado a ser un senior. Un programador senior ha creado sistemas distintos, viéndose en la problemática de diferentes escenarios a los cuales pudo resolver.
  6. Modelo de procesos: si la persona no conoce un modelo de procesos ya sea CMMI, MoProSoft u otro, es probable que no realice software de calidad (es probable porque he conocido personas que no utilizan nada de esto pero crean su propio modelo de procesos sin saberlo y su software es bueno, no excelente pero si es bueno). El no separar el desarrollo del software en procesos indica un sinónimo de ser novato.
  7. Control de versiones: un senior sabe y conoce distintos programas o herramientas de control de versiones de código, si la persona en su vida ha utilizado esto, está lejos de ser un senior. También está lejos de ser un senior una persona que conoce programas de control de versiones pero no le sirve de mucho, nunca sube sus avances (he conocido muchos así y que han perdido hasta 3 semanas de trabajo porque se descompuso su computadora).
  8. Documentar: las personas que no documentan no respetan su trabajo, por lo tanto no son senior (abre un software creado por ti sin documentar hace 2 años, y veras a que me refiero). Documentar el software es tan importante como codificar (esto incluye los comentarios en el código), no documentar el software es crear algo que más tarde nadie sabrá cómo se realizó y se deberá invertir tiempo en ingeniería inversa (como los platillos de marcianos de Roswell).
  9. Honestidad: la honestidad de decir: “No, ese tiempo de entrega es imposible”, la honestidad de decirle al líder de proyecto o al cliente: “eso no está dentro del presupuesto”. La honestidad de saber las limitaciones personales representadas al tiempo del desarrollo son más benéficas que decir si a todo, se beneficia el cliente por no esperar algo que no se le dará, se beneficia el equipo de desarrollo por no involucrarse en tareas imposibles respecto al tiempo, y se beneficia la empresa ya que no quedara mal con nadie. Un senior es honesto en este aspecto.

Existen algunos otros puntos, pero estos para mi son lo primordial para identificar a un senior de un mentirosillo.