Buenas, desde el blog std-io.com, les traigo una publicación sobre algo que le preocupa a muchos, generalmente me pregunta ¿Cuánto tengo que cobrar por  hacer X cosa? ¿Cómo les cobro? generalmente son nuevos en esto de la venta de código y software y suelen hacer este tipo de preguntas, así que basándome en una publicación bastante vieja que leí muy interesante por cierto de Leandor A. (una lástima que programe en vb).

Elegí esta foto por un motivo en específico, en esta entrada entre otras tantas cosas voy a hacer alusión a como crear un árbol que de dinero, esta foto es conocida pero mi intención es darle otro punto de vista al lector...

Para comenzar voy a comentarles como se cobra soft, hacer soft es algo complejo, lleva tiempo, y uno no puede ponerle un precio a una entidad de soft si no puede estipular el tiempo que llevó hacerla, en otras palabras, para poder vivir de esto, el factor tiempo es algo sumamente importante, a la hora de hacer un presupuesto uno tiene dos alternativas, o le dice al cliente cuanto es el honorario por hora de trabajo, o cuanto es el precio final que estimamos para un producto completo.
Por supuesto al cliente generalmente le agrada más la idea del costo del producto final, no obstante es más complejo sacar ese presupuesto, yo ayer estuve sacando un presupuesto de unos 1900 dolares aproximadamente, que ya lo entregué, era algo muy sencillo que no tenía complejidad así que fue bastante simple para mi conseguir un precio justo para el cliente y vendedor.

Si recién empiezas sacar un precio para un producto es complejo, y probablemente no te sirva porque vas a sacar un precio muy elevado o muy barato con respecto al trabajo que conlleva x tarea, por lo que muy probablemente luego te arrepientas o no te acepten el trabajo.

Debes ponerle un precio a tu hora de trabajo, y en base a eso calcular cuanto te tomará hacer x producto y multiplicarlo por el precio de tu hora de trabajo.
Pero en esta modalidad hay varios inconvenientes, empezando porque estimar cuantas horas nos llevará hacer x cosa, es bastante complejo, hasta para mi que llevo haciéndolo bastante tiempo.
Lo mejor al principio es decir, mi hora de trabajo cuesta x, y para desarrollar esto, yo creo que mas o menos tardaré x, y luego le comentas que no tienes una clara idea pero que irás cobrando a medida que avances, de modo que si a tu cliente no le convence la velocidad frenan todo y no es una metida de pata astronómica.

¿Cómo calcular la hora de trabajo?
Inicialmente puedes poner por ejemplo 5 dolares, por decir algo, a medida de que tomes experiencia y empiezas a tener en cuenta otros factores pues simplemente vas subiendo el costo, además si haces uso de los criterios de calidad y otras cosas, tu ganancia será cada vez mayor por más que no subas el costo horario.
Por motivos tales como que para hacer x cosa ya tenes la mitad armada pero igual la cobras (gracias a reusabilidad).-
Cuando tomas experiencia de las cosas que no hay que hacer y las que si, cuando aprendes como poner una seguridad razonable a tus códigos, cuando los clientes ya te conocen y saben que sos responsable y cumplidor, podes ir elevando tu precio por hora, hasta que llegues a lo que consideres suficiente como para manejarte.

Es como un árbol, debes regarlo, al principio no tendrá frutos, porque es chiquito, no tendrás tanta ganancia ni se si tendrás para vivir, pero cuando el árbol crezca por los distintos factores como la experiencia y de maces verás los frutos del árbol.

Tienes que saber que no eres el único programador, y tus clientes podrían cambiar de programador, pero a la larga te tendrán confianza y cambiar de programador les significará que se arriesguen a que no sepa, o que les cause problemas, si contigo están bien, le puedes subir un poco el precio que aún así no les convendrá trabajar con otro programador. Cuando adquieres experiencia es lo mismo, te pueden pagar a ti x o menos a un programador poco experimentado que seguro que meterá la pata hasta el fondo en algún momento y dejará mal parado al cliente, y en caso de que cambien de programador, a la larga volverá por este tipo de errores que se evitaba con vos.

En fin, ponerle un precio al soft, que sea razonable tanto para el programador como para el cliente, no es para nada una tarea fácil.

Saludos!
Leer Mas
Como todos los días, ya se me hizo costumbre al levantarme ver mis feeds e ingresar a Underc0de y revisar lo ultimo que se mueve en la red para que no andar obsoleto, como tambien a medio  que ya se volvió un habito diario hoy ingresando a Underc0de leí un interesante post de kn0w  el cual lo traigo al blog.

Así quedó mi cara después de meter mis narices en esta cuestión...


Ante todo, "hola" (que caballero soy..) 

Todo comenzó un día cuando estaba certificando MTCNA de mikrotik, y el certificador al final de una de las clases dijo lo siguiente: 


"No pierdan sus archivos de backups, porque sino será imposible recuperar las claves de admin".....




Lo primero que pensé es..  esto será cierto?

Comenzó como una inquietud y decidí accionar al respecto:   (uhh que tipo accionador que soy..) 

Primero: Necesitaba un archivo de backup, pero como siempre me ha gustado usar las cosas ajenas de la gente y no las mias (shhh, no lo repartan), decidi buscar alguno en don googlepero.. existirá alguien tan estupido como para  subir un archivo de backup de su router Mikrotik a internet?
La respuesta es un : SI, SEÑOR!! (asi como en la milicia..)





Usando un par de google dorks... aparecíó lo siguiente:


Una vez obtenido el archivo de backup, decidi echarle un vistazo como un hexeditor y encontré lo siguiente:


Yes!!! usuario y clave de changeip.... y bueno, veamos que hay dentro!! 


Ahá! efectivamente es un Mikrotik, y está activo  (ping)

 MMm.. con toda esta info ya me dan ganas de entrar a este misterioso equipo, pero no tengo las claves? como hago?

 Claro!!!  pero tengo el archivo de BACKUP!

A crackear amigos!  ---> buscando por ahi me encuentro con ésta web, "Mikrotikpasswordrecovery", la cual nos da las credenciales haciendo un upload desde un archivo de backup!!


OHHHH my god!! (grito asi estilo pelicula xxx..) ...     ya tengo las credenciales.. : Admin ven a mi!!... solo me queda probar si esto funciona... en 3,2,1.. kboom!!


me encanta cuando sale: logged in!!!   

Yes! Estoy dentro, y miren que cosas tan interesantes mas hay... passwords de tuneles (backdoor? ha!) , maquinas para pivotear... además de que el admin usó las mismas claves para unas 10 maquinas mas enlazadas desde ese router via wireless y vpn con mikrotik...


Espero lo hayan disfrutado, y ahora repitan tras de mi el siguiente juramento: 

                      "NO SUBIRÉ A INTERNET MIS ARCHIVOS DE BACKUP DE MI ROUTER MIKROTIK..."    amén!

Kn0w13dg3 


Post Original: Underc0de 
Autor: kn0w

Regards,
Snifer
Leer Mas
Hola! esta es mi primera entrada, espero que les guste.

En una entrada en mi blog yo estube hablando un poco sobre la industria del soft, y sobre los componentes, hoy en día, pensar una industria que no trabaje basando su desarrollo en componentes, por las evidentes razones que mensioné en la entrada anterior.

En casos conocidos, podemos apreciar como windows a partir de 98 tiene su modelo de componentes bien formado, y empieza a basar todo su sistema en componentes, empaquetados en archivos conocidos como dlls.

Podemos apreciar sus ventajas con las actualizaciones automáticas, donde gracias a estas dlls es posible implementar extensibilidad en su correcta expresión, de modo que modificar una dll para que haga una tarea bastante diferente y reemplazar una vieja sin tener que modificar el programa es muy simple.

Antes de ayer asistí a una charla en un Instituto de Formación Técnica Superior, que daba Gabriel Pimentel, donde demostró la simplicidad y utilidad de las dlls, creó un programa que utilizaba una dll que también creó para fines demostrativos (todo ésto en c++) cargó la dll y la utilizó en su programa original, compiló el programa, y luego cambió completamente la dll para que hasta cambie de ser modo consola a modo visual creando una ventanita, reemplazó la dll anterior por la nueva, y el programa original la utilizó sin inconvenientes utilizando las nuevas funciones de dicha dll.


Lo interesante de la cuestión es como separó de una forma muy impresionante la dll que emulaba un sensor y el programa que usaba dicho sensor, creó un pequeño modelo de componentes para demostrar la funcionalidad de ésto, luego simplemente cambió el código de la dll, lo compiló, y reemplazó la anterior, y como por "arte de magia" todo su modelo de componentes "comprendió" que estaba ante una nueva versión que incluía una ventana entre otras cosas, para notificar que había llegado al máximo el sensor.
Sin tirar ningún error utilizó dicha dll con la nueva funcionalidad.

Notarán en éste ejemplo algo muy interesante, nos permite pensar a los componentes y a los que usan componentes como lineas separadas de producción, como en una cadena de fabricación de autos, hay una linea de creación de puertas, una linea que fabrica carrosería, y luego se pueden comprar las ruedas a otra empresa, todo esto pasa por una linea de ensamblaje y llega al producto final.

Es muy parecido a lo que es una industria cualquiera, se puede crear un componente y evolucionar por forma propia independientemente de cómo y para qué lo use quien lo use, y si el que usa dicho componente cambia, no va a haber problemas. porque todo se ensambla, además se puede comprar nuevos componentes a otros fabricantes y aquí empieza la industria del software.

Y aquí aparece calidad, uno no puede desarrollar un componente que no cumpla con los criterios de calidad, porque solo generaría un monton de inconvenientes, lo mismo pasa en general, si programas aunque no estés basado en componentes, sin calidad, tu código te dará muchos problemas a la hora de evolucionar, ampliarse o cambiar de contexto.

Programar sin calidad, es como hacer malabares con granadas sin tener el seguro puesto, y es una fábrica de monsters (puede ver la referencia aquí para saber de que hablo cuando comento esto).

Hay dos tipos de criterios de calidad, los criterios externos e internos, es una mera forma de clasificarlos para que se den una idea, los externos son aquellos criterios que el usuario del sistema ve, tales como si tiene una interfaz buena y simple que no vuelva loco al usuario, si responde a las necesidades del usuario, etc. Pero estos criterios en realidad no son los que definimos, ya que no tienen mucho sentido.
Los importantes son los criterios de calidad que nosotros vemos, si nosotros armamos un código sin calidad o con calidad, los únicos que apreciaremos esto somos nosotros.

Hay muchos modelos de criterios de calidad, pero en resumen y juntando todo lo más importante podemos definir los siguientes 7:


Corrección

Robustez
Extensibilidad
Reusabilidad
Compatibilidad
Eficiencia
Otros factores.

Cada uno de ellos serán explicados en futuras publicaciones.

Saludos y espero que haya sido de agrado la introducción al tema.
Leer Mas
Ante la pregunta del post! yo aprendi a programar en VB6.0 incluso a un tengo algunos programas que hice en el, para poder aprender a desarrollar en el vale la pena pero hasta cierto punto por ello ando 50% a favor del analisis que veremos a continuacion y el otro 50%, pero porque no ustedes sacan sus conclusiones..

Aquí el análisis de mi amigo numeritos (79137913) lies recomiendo que le den una leida asi que vamonos.


VB6 el gran Dilema.

Muchas veces me plantean si conviene o no aprender o utilizar VB6 en estas épocas, y realmente nunca hay una respuesta concisa, empiezan Flames y otras cosas que levan al hilo a un trolling total, en este posteo voy a dar mi visión sobre el tema desde el punto mas imparcial que pueda, considerándome sin hacer alarde un usuario avanzado de VB6.

Aspectos a analizar:

Trayectoria e Historia: VB6 fue lanzado en 1998 y si saben hacer cuentas ya tiene 15 años, casi 16, para un lenguaje que se vio remodelado (VB.Net) es mucho tiempo para que la gente lo siga usando, pero ¿Por qué VB6 sigue vivo?, yo creo que por la gran comunidad de programadores que se sienten cómodos con este lenguaje y ellos son los responsables de que siga funcionando, ya que, buscan maneras de instalar el ide en los nuevos sistemas, trucos con Apis para que se puedan utilizar opciones de los nuevos SOs, Código VBs para utilización de los frameworks y por ultimo ASM inline (Insertar código Maquina dentro de las aplicaciones para realizar acciones específicas). Con todo esto solo me queda decir que la trayectoria y el arrastre de VB6 han sido y son muy grandes, aunque, todo llega a un final, y eso está cerca.

Compatibilidad: Por ahora los ejecutables realizados en VB6 siguen siendo compatibles con los últimos sistemas operativos pero siendo programas en 32 bits y con el standard actual de 64 bits podemos predecir que como paso con los ejecutables de 16 bits al cabo de unos años ya no podrán correr en las nuevas máquinas, Windows está intentando quitar las dependencias básicas de sus nuevos SOs por lo cual cada vez nuestras aplicaciones deberán llevar más Dlls y Ocx con ellas.

{Dato Extra: En VStudio 2010 ya no esta la herramienta para migrar proyectos de VB6 a VB.Net}.

Apariencia: Como todos dirán, los programas hechos en VB6 tienen formas muy cuadradas y grises pero… hay skins que le dan una apariencia renovada aunque no actual (con un skin obtendríamos una interfaz muy 2004-2009) pero, hay otras alternativas, la gran comunidad de desarrolladores de VB6 ha creado una serie de Controles de Usuario y OCX que quedan a la par o a veces mejoran los modelos más actuales.

Compilación: Este es uno de los aspectos que hace que VB6 siga siendo bueno, cada vez más lenguajes optan por no compilar a código máquina, por que utilizan Frameworks o simplemente se ejecutan en una máquina virtual, ustedes dirán, ¿qué problema hay con ello?, el problema es que las aplicaciones se vuelven más lentas por el doble procesamiento de la información Maquina->Framework-> programa o Máquina->Máquina Virtual->Programa… a todo esto también estarán pensando en los famosos comentarios de hace años que dicen que VB6 es lento, pero esto lo analizaremos en el siguiente ítem.

Velocidad: La velocidad es relativa al algoritmo que cree el programador y como utilice los recursos del lenguaje para optimizar al máximo su rendimiento, introduzco con esa frase para que comprendan, he visto programas hechos con C++ que funcionan mas lento que programas hechos en VB6, pero ¿Por qué? Porque el programador de C++ hizo mal o implemento de manera ineficiente su algoritmo, yo diría que no, lo que sucede en estos casos es que la mayoría de las veces los programadores de VB6 se pasan en optimización de código porque quieren exprimir el lenguaje al máximo ya sea utilizando análisis byte a byte, operaciones binarias en cambio de sumas y restas, sumas en vez de multiplicaciones o multiplicaciones en vez de potencias, ASM inline o utilización de Apis… haciendo todo esto es posible que aunque VB6 es considerado un lenguaje RAD (Rapid Aplication Development) no sea tan rápido como Arrastrar controles y escribir 3 líneas, serán muchas líneas de código y muchos controles que habrá que buscar hasta encontrar los indicados.

Concluyendo, podría explayarme más pero creo que ya deben haber comprendido mi punto, VB6 actualmente puede hacer lo que hace cualquier lenguaje actual aunque dentro de pocos años no podrá, me han preguntado si deberían aprender VB6, mi recomendación es que no, porque lamentablemente es tan amigable intuitivo y bueno que no hay ningún lenguaje que lo equipare en esas cosas a mi parecer y luego te hará complicado aprender otros lenguajes porque te resultaran tediosos y molestos, aparte, no podrás utilizarlo por mucho tiempo más… “Pero quiero aprenderlo”, si querés aprenderlo está bien, te va a gustar y te vas a sorprender con lo que vas a llegar a desarrollar, pero será todo una fantasía que se desvanecerá cuando veas hacia dónde va el mundo… “Pero lo voy a utilizar en mis computadoras viejas con Windows XP y coneccion de red por IPV4 para siempre” Si lo que quieres hacer es eso, está bien, aprende que te va a servir y mucho… “¿Y yo que ya he aprendido VB6 antes de leer esto que hago?” Y, deberías aprovecharlo mientras puedas y buscar otro lenguaje de tu preferencia para cuando no lo puedas utilizar mas.

Sinceramente no quiero concluir esta texto porque se que hay miles de cosas que no dije y demás, pero prefiero despedirme asi de un lenguaje tan bueno como VB6.-

¿Conviene utilizar VB6 para mis proyectos?

Si, pero sabe que tendras un momento en el que vas a migrar todo el sistema o moriras usando Windows XP y sin conocer IPV6.

¿Conviene aprender VB6?

No, para nada, no te recomiendo que aprendas VB6 aunque me parezca una experiencia hermosa.

¿Te sentís viejo hablando de esto? 

Si, totalmente, “en mis tiempos” nos reíamos de lenguajes como Fortran o Cobol diciendo que eran anticuados y no sabíamos por que la gente los seguía usando, hoy me pongo en sus zapatos y puedo entenderlos.


Aprendan los lenguajes de su época, no quieran revivir a los muertos.-

Momento! objeciones! y demas.. podemos ver de Alex Harkonnen autor del blog blog.std-io  la contraparte y un excelente debate del tema en Underc0de

Tu que opinas es recomendable aprender VB6 o no???
Leer Mas
Hola que tal mas de 1 mes sin escribir en el blog, no es que haya dejado por completo este mi pequeño rincon, si no que desde el mes de septiembre se me vino a full el trabajo luego un reto para la empresa donde trabajo y me siento orgulloso, certificandonos con la ISO 27001 fue algo gratificante participar y aun mas tomar en cuenta que la protección de datos no se basa solo en el trabajo si no va mas allá de ahí, es un diario vivir.

Que mas, aparte de todo ahora ando en una certificación CISO para poder crecer un poco el conocimiento ser mas técnico ya que me falta mucho por aprender, y como actualmente la sociedad influye a que sin cartón uno no tiene conocimientos ¬¬°,

Estuve por 4 dias cortos con mi familia, y ayer me puse a jugar con amigos del trabajo, pero sorpresa luego de todo me puse mal :(, algo raro pasa en mi organismo que solo es cuestión de cuidarse y seguir dando duro a lo que venga con una sonrisa  y positivismo, espero ya esta semana en si mañana retornando a La Paz comenzar nuevamente con las entradas en el Blog y recuperar la salud.

Ahora se viene otro paso importante el de prepararme para una certificación en seguridad se viene por aqui!!


Ahora solo queda crecer y mejorar la salud a parte de todo no pienso dejar lo que amo, primero mi familia Rizel y todos los que aprecio por ello a darle duro y vamos que se puede.
Leer Mas