Semestre i, las secuelas.

Este cuarto semestre de universidad, tuvimos la “oportunidad” de cursar la nueva modalidad de semestres del Tec, Semestre I. Oportunidad está entre comillas porque no nos dieron a escoger, y básicamente nos forzaron las materias, pero ese no es el punto. Pese a el muy amargo inicio, y la incertidumbre, este semestre me enseñó muchas cosas. Muchas de estas a la mala, pero son cosas que no se aprenden en un semestre normal.

La primera enseñanza que me deja este semestre es a controlar tus emociones, muchas veces cuando estás trabajando en un proyecto, o en algo, te dejas llevar por tus emociones, y no puedes trabajar al cien. No te puedes concentrar, haces las cosas mal, y terminas trabajando demasiado tiempo a medias. Si las cosas se atoran, o no salen como esperas, tomate un descanso y respira. En nuestra área ingenieril es muy común trabajar en la computadora, el problema con esto es que nuestros “descansos” muchas veces son dejar de trabajar, y meternos a Facebook, o hacer otra cosa, pero sin dejar la computadora. Si necesitas descansar, pon la computadora a un lado y camina, despabílate, come algo, platica con alguien. No te quedes sentado en la computadora, solo te vas a frustrar más y terminar más cansado. Muévete, en esos momentos necesitas que las ideas fluyan.

La segunda enseñanza es aprender a manejar los tiempos. Algo muy difícil de este semestre es la flexibilidad que hay para las fechas de entrega, y la ausencia de fechas límite de entrega. Yo estoy muy acostumbrado a trabajar bajo presión, y muchas veces si no tengo presión, simplemente no me dan ganas de trabajar, y termino procrastinandome de una manera impresionante. En esta clase de proyectos en los que te dan mucha libertad, hay que tener una agenda, y una ruta crítica, si no se puede tener una ruta crítica, como en nuestro caso, mínimo hay que planear por semana. En proyectos grandes como este, es muy útil usar herramientas de planeación de proyectos, como son Trello, o Asana, para organizarte. Estas herramientas ayudan a definir objetivos, y a planear el proyecto. Una pequeña anécdota es que nosotros empezamos el semestre con Google Keep para planear las cosas. Fue un gran error. Lo más llamativo de Google Keep, eran los colores, y lo bonito del diseño, pero le hacen falta muchas herramientas, como la asignación de objetivos a personas, y vistas generales del proyecto. Hay que encontrar motivación, hacer las cosas en tiempo y cumplir con los objetivos.

Tercera, es impresionante lo que un mal planeamiento puede causar. Esto lo aprendí por dos razones. La primera fue por cómo se llevó a cabo este semestre. Parece que tuvieron una semana para planearlo, y que dejaron todo para el final de esa semana. Los tiempos mal planeados, muchos profesores sacados de onda. Cabe mencionar que NO es culpa de ellos, sino de la falta de alguna asesoría. La otra manera por la cual me di cuenta fue por la primera inmersión. En esta no planee absolutamente nada, y digo las cosas salieron bien, pero a coste de desvelos y desgastes. Cualquier cosa que se haga siempre sale mejor planeada, porque de esta manera se puede prever cualquier asunto.

Y la cuarta no es tanto una enseñanza, sino algo que me dejó semestre I. Dejando a un lado todo, este semestre me ha dejado cuatro amigos, con los que sé que puedo contar. Me permitió conocer más a fondo a los de mi carrera, y tambien a algunos de ISC. Muchos de mis compañeros se quejaron de ver las mismas personas todos los días. Fue muy raro, me sentí en secundaria, pero me gustó la experiencia.

A todos los Tec de por ahí, si les recomiendo tomar semestre i, solo que este correctamente planeado, y por favor, que no sea forzado. Este semestre si nos dejó una experiencia amarga, pero dentro de todo aprendimos.

Semestre I una breve historia

Semestre I, un semestre algo polémico en el sistema Tec, ya que las clases cambian de manera radical. Este semestre tuve la “oportunidad” de cursar un semestre en esta modalidad. Nótese las comillas, ya que no tuvimos opción. Después de muchos corajes por la manera en la que nos enteramos del semestre, creo empecé muy emocionado por este semestre, ya que nos iban a poner un reto, e iba a ser como trabajar por un semestre.

Empezamos algo raro, ya que no supimos ni el reto, ni el horario hasta el primer día de clases. Las únicas cosas que sabíamos antes de eso, era que el reto estaba relacionado a Internet de las Cosas, y que el horario iba a ser dinámico. Para los alumnos, y los profesores esto rompía paradigmas, entonces tomó trabajo el acostumbrarse al ritmo de trabajo, y a los diferentes módulos. El primer día hicimos los equipos con los que íbamos, y estamos trabajando todo el semestre. Los profesores nos dieron la opción a nosotros de hacer los equipos, y nuestro equipo fue el más grande, cinco personas; Pietra, Edwing, Diego, Wicho y yo. Al principio estuvo chistoso, ya que yo solo conocía bien a Diego y Edwing, nunca pensé lo bien que me iban a caer los demás.  El trabajo en equipo es normal en el Tec, lo que no es normal, es trabajar en equipo todo el tiempo.

El primer “parcial” fue extremadamente confuso, ya que sabíamos cual era el reto, y sabíamos como resolverlo, pero solo a grandes rasgos, no teníamos idea de como plantear una solución que estuviera bien planteada, y fuera viable, pero medio a ciegas y a como pudimos salimos. Lo que se me hacía más extraño de este parcial, era obviamente el horario cambiante, pero tambien la materia de redes, o mejor dicho materias. Digo materias ya que llevamos redes I y redes II al mismo tiempo, por los requisitos del reto. Lo extraño de esta coalición de materias era que teníamos a dos profesores, y al principio era confuso diferenciar, entre las dos materias. No fue hasta después de la primera inmersión que nos dimos cuenta de que casi toda la primera parte era redes I, y redes II vino después.

En fin, llegamos a la primera inmersión sin saber que esperar. Yo en lo particular estaba muy nervioso, ya que siempre nos describían inmersión como un matadero. Nos dieron los requerimientos un viernes antes, y los leí, no era tan difícil como pensé. Llegamos el lunes, inicio de la semana de inmersión, al kick off. Nos dieron instrucciones más detalladas de entregables, y las metas de la semana, y nos pusimos a trabajar. Tengo que decir que mi equipo me impresionó. Cuando llegué Diego se había hecho cargo del servidor apache, Pietra, investigó todo lo necesario de redes, para casi solamente llegar a copiar los comandos, y Wicho, había hecho más de la mitad del código del microcontrolador. Por primera vez en mi vida, no tenía nada que hacer de trabajo práctico. Edwing y yo nos dedicamos a la investigación, presentación, y todo lo de redes. El problema fue que nos confiamos. Para el miércoles habíamos terminado casi todo, faltaban cosas, pero no hicimos tanto caso. Cuando menos nos dimos cuenta, ya estábamos en viernes, y la presentación era en quince minutos. En ese entonces yo pensaba que nuestra presentación era a prueba de balas, ahora me rio de ese pensamiento. Empecé a presentar yo, y me puse demasiado nervioso, no? Solo los que me vieron entenderán, creo que nos fue decente, pero yo no quería decente, yo quería muy bien. Terminamos la presentación, me quité el saco, y estaba empapado en sudor de los nervios. Hasta ahora no sé porque me puse tan nervioso, ya que la presentación era para nuestros maestros.

Termina primera inmersión, nos dan la retro, empezamos de nuevo a trabajar, pero ahora para la siguiente inmersión. El cambio más radical fue que ya teníamos la idea completa del proyecto, y ya teníamos claro todo. Volvimos al trabajo habitual, y las cosas se estabilizaron. El tiempo fluía más rápido y empezamos a disfrutar más las cosas, todo se acomodó. Pero empezó a surgir un problema, perdimos las ganas de trabajar. Nos empezamos a hartar del proyecto, y del semestre, llegamos a decir que este semestre lo tiramos a la basura. Creo que la razón por la apatía fue principalmente por dos razones. La primera, fue que nos encajonaron. El proyecto de nuestro semestre empezó siendo muy amplio, y nos daban la libertad de resolver el proyecto de la manera en que quisiéramos, pero conforme pasó el tiempo, los proyectos empezaron a parecerse cada vez más hasta ser casi idénticos. Creo que esto creó un ambiente de competencia entre nosotros, e incluso llegó a afectar nuestras relaciones. La segunda razón, fue que nos estancamos. No podíamos avanzar en el proyecto porque dependíamos de las materias, y no sabíamos que hacer. Coincidió también que la asesora nos descuidó mucho, nos sentíamos en el limbo. Teníamos algo tangible y funcional, pero no lo terminábamos. Eventualmente las cosas hicieron sentido, pero algo cambió, no volvimos a tener las ganas de hacer el proyecto. Sabíamos desde al principio que era un proyecto ficticio, pero antes no importaba, ahora simplemente no había ánimos para avanzar. Un factor muy importante para esta “apatía” fue la ausencia de nuestro “papá cisco”, nuestro socio formador, que para ser sincero en este momento no sé si es Cisco, o si es el maestro Oscar.

Seguimos trabajando en los módulos del semestre, y el proyecto continuó estancado hasta la semana antes de inmersión. En este periodo la claridad empezó a volver, y reiniciamos el trabajo en el proyecto. Nos organizamos, y llegó inmersión, trabajamos a toda máquina, y nos dividimos el trabajo. Fue una semana muy pesada, por los requerimientos del reto de la semana, pero seguimos adelante. Algo muy chistoso, y muy contrastante del ambiente ingenieril, es que el trabajo verdadero empezaba hasta tarde. Había días en los que llegábamos a las 10, y el trabajo empezaba a fluir hasta después de comer, por ahí de las 3. Y seguíamos hasta en la noche, o hasta que nos corrían. Empezamos a avanzar y llegó la presentación. Para esta segunda inmersión hicimos dos presentaciones, una teórica, y otra práctica. Presentamos dos veces, nos dieron la retro, y a seguir trabajando, otra vez a retomar el trabajo “normal”.

Dos semanas después, estamos aquí. El trabajo ha cambiado, ya que la teoría en los módulos es poco, y el trabajo en el proyecto aumenta, y exponencialmente. Es el último tirón, nos quedan dos semanas de clases, y la semana final de inmersión, en otras palabras “tres semanas de inmersión”. Lo vuelvo a decir, es el tirón final, el semestre ha estado lleno de experiencias, buenas y malas, el ambiente en el salón es extraño, porque ya todos son mis amigos, no solo mis compañeros. Todos compartimos un sentimiento de apatía, y de molestia. Pero no hay que detenernos, ya falta poco y pese a todo lo que ha sucedido, hay que salir adelante. Faltan tres semanas, tenemos una oportunidad de probarnos a nosotros mismos que si podemos, a pesar de muchas cosas que pasaron, y que estamos en 4to semestre, y que es el primer semestre i en nuestra carrera (no me estoy martirizando, solo es lo que pasó), si podemos. No hay que detenernos ahora, es el último tirón.

 

Experiencias un tanto…. diferentes.

Como dije en mi blog pasado hemos llegado al final del semestre. Y no me quiero ir sin antes decir lo que pienso acerca de la clase de Ken Bauer.

Para empezar su clase es muy diferente a las clases normales que hay en el Tec. Todos los que han llevado clases con el me van a dar la razón. Me gustó mucho esta experiencia, pero hay un problema. Yo soy de esas personas que necesitan que todo tenga una estructura. Y de verdad me gustó el concepto de la clase de Ken, solo que siento que de alguna manera no me funciona tan bien. No es que no me guste… solo que necesito que alguien me explique en el pizarrón.

Agradezco mucho que Ken nos haya alentado a no ponernos limites, y a aprender todo lo posible. Gracias a el aprendimos a usar muchas herramientas que no sabiamos que teniamos, como Ubuntu, Slack, GitHub, etcetera.

Quiero tomarme esta oprtunidad para agradecerle por enseñarnos esta materia, y por que no le da miedo ser diferente y probar cosas nuevas.

 

Ya terminamos el semestre…

Hoy fue el último dia de clases para todos los estudiantes del Tecnológico, pero más que un último dia de clases, fue un logro. Hemos terminado nuestro primer semestre en la universidad. No morimos, ni nos dió ningún ataque de estrés (o bueno esa última parte solo a mi). Lo que si es que hemos terminado un semestre lleno de muchas experiencias y aprendizajes, personas y amigos nuevos, sentimientos y logros. En pocas palabras, ya casi hemos terminado nuestra primera prueba fuerte del Tec.

Yo tengo la bendición de decir que este primer semestre me ha encantado, no a todos les gustó por variadas razones, y espero que mínimo les haya servido de algo.  Pero a mi se me gustó, y mucho, pese a las noches de estudio, las tareas olvidadas, el estrés constante de parciales, y la presión de mantener la beca. Yo me quedo feliz no solo por todo lo que aprendí, sino también por esas personas que antes eran desconocidas y que ahora son casi mi familia. Me quedo con todas las gratitudes y alegrías que viví en este semestre. Pero no solo la felicidad, tambien las tristezas, enojos y angustias. Ya que de estas de verdad aprendemos a seguir adelante y a ser más fuertes.

Quiero agradecer a todos mis profesores, que me han enseñando, y a todos mis amigos tanto nuevos como viejos.

Gracias.

Mucha suerte en finales

Diccionarios

//giphy.com/embed/l0HlOBZcl7sbV6LnO

via GIPHY

Contiene una serie de objetos (en su mayoría strings) que estan ligados a una llave que los identifica. Es casi igual que una lista, solo difieren en la llave.

Usa los simbolos «{ }»

Podemos ver a los diccionarios como una especie de mini base de datos para el programa. Los diccionarios no necesitan un orden especifico, ya que la manipulación y/o consulta de sus elementos, se hace a traves de la llave asignada.

Ejemplo

estados= {
“Jalisco”: “JAL”,
“Sinaloa”: “SIN”,
“Sonora”: “SON”,
“Nayarit”: “NAY”,
“Colima”: “COL”
}

Como vemos en este ejemplo asignamos las iniciales de los estados, a los estados mismos. La sintaxis es Nombre_diccionario={«objeto_1″;»obj1″,»objeto_2″,»obj2»}

Hay que tomar en cuenta que cuenta algun valor sea string, se tiene que poner entre comillas.

 

https://learnpythonthehardway.org/book/ex39.html

 

Rangos…

Los rangos son una rapida manera de imprimir números deseados. Estos son entre los valores que le pusimos.  Estos rangos son utilizados en los ciclos for, para poder dar los parametros del ciclo.  El comando es de esta manera:

  • for var in range(num inicial, num final, saltos)

Python el primer parametro es el número con el que empieza, el segundo es el número con el que termina, y trecero es cuanto va a saltar.

Por ejemplo:

zettayotta1

Aqui queremos hacer una lista que vaya guardando los valor del contador.  En este caso el número inicial es 1 y va contando de dos en dos hasta que llega a 29. Recordemos que Python tomaría como número inicial al 1 y como final al 29. El número final escrito no se incluye, solo se incluyen valores menores que este. De aqui sale que tomaría hasta el 29.

El resultado de este programa es una lista.

holshols

MAS INFO AQUI

 

Python’s range() Function Explained

Programación para principiantes…

Actualmente la programación está pasando a ser parte de los conocimientos de informática básica que tenemos. En algunos lugares incluso les están enseñando a los niños a programar. ¿La razón? A parte de que de esta manera los niños y jóvenes pueden crear herramientas ad hoc a sus necesidades, y a esto le sumas que es una habilidad más.

Como todos saben hay muchos tipos de programación, siendo la más famosa la que dirigida a aplicaciones móviles. Pero algo que me causa conflicto es que la gente no se da cuenta de todo el potencial que tiene tener esta habilidad. El programar no es solo el saber hacer aplicaciones, es el saber ordenar procesos, el saber optimizar, el poder arreglar partes defectuosas o deficientes en procesos comunes. El programar te puede ampliar la percepción de las cosas.

También la programación no solo se limita a las aplicaciones móviles, o a hackear y demas cosas, actualmente la programación está en todos lados, desde un automóvil, hasta llegar a casa completas. Como estudiante de Tecnologías Electrónicas, me enfoque será en la programación a bajo nivel, o la programación enfocada a objetos. Esto es algo que me encanta, ya que es el hacer sistemas embebidos, es decir crear algo. Crear algo diseñado para una función, o como un complemento de algo más grande.

El programar ya no solo es sentarse en una computadora a escribir, o el pasar muchas horas buscando errores muy pequeños. Programar es ampliar tu visión, es innovar, es crear. Si sabes programar, puedes crear desde cero cosas impresionantes.

http://lifehacker.com/six-life-lessons-ive-learned-from-programming-1502077380

Como dice en la liga, de programar puedes aprender a vivir mejor.

 

Texto, texto, texto, pero no binario

Python tiene la capacidad de poder abrir y editar archivos que sean de texto solamente. Como son los formatos .txt y .csv. Estos solo tienen valores, y no tienen ningún código binario de formato como lo tienen los archivos .doc o .docx de Microsoft Word.

La sintaxis de este comando es extremadamente facil.

Por ejemplo, para poder asignar el texto de un archivo a una variable se utiliza este comando: f=open(«archivo.txt»).

Lo que hace esto es asignar a «f» el texto del archivo.

Pero tambien con Python podemos escribir en un archivo de texto…

file = open(«newfile.txt», «w»)

file.write(«hello world in the new file»)

file.write(» and another line»)

file.close()

En este caso en el archivo newfile.txt, vamos a escribir «hello world in the new file and another line»

http://opentechschool.github.io/python-data-intro/core/text-files.html

 

giphy

Strings, una gran cadena

Como ya hemos visto los strings son cualquier valor de texto asignado a una variable. Este valor es inmutable, y como su nombre lo dice, es una cadena de caracteres. Estos valores se pueden escribir de diferentes maneras, siendo la más famosa las comillas (» «). Lo que sea que se encuentre entre las comillas, será un string.

t3_1wrjjx

Los strings sirven para almacenar cualquier caracter, ya se para imprimirlo, o solo guardarlo. Algo que hay que tener en cuenta cuando usamos strings, es que son operables, pero no al grado de los números. Si se tiene un valor numerico guardado como string, no lo vamos a poder operar o comparar. También cabe mencionar que si tenemos un número integer o float, necesitamos convertirlo a string para poderlo imprimir.  El comando para convertir a string es str().

Cuando se tiene un string este no se puede modificar, pero si se puede reemplazar.

Los strings se pueden operar de la siguiente manera:

Operator Description Example
+ Concatenation – Adds values on either side of the operator a + b will give HelloPython
* Repetition – Creates new strings, concatenating multiple copies of the same string a*2 will give -HelloHello
[] Slice – Gives the character from the given index a[1] will give e
[ : ] Range Slice – Gives the characters from the given range a[1:4] will give ell
in Membership – Returns true if a character exists in the given string H in a will give 1
not in Membership – Returns true if a character does not exist in the given string M not in a will give 1
r/R Raw String – Suppresses actual meaning of Escape characters. The syntax for raw strings is exactly the same as for normal strings with the exception of the raw string operator, the letter «r,» which precedes the quotation marks. The «r» can be lowercase (r) or uppercase (R) and must be placed immediately preceding the first quote mark. print r’\n’ prints \n and print R’\n’prints \n
% Format – Performs String formatting See at next section

Tabla obtenida de: https://www.tutorialspoint.com/python3/python_strings.htm

Una cosa muy importante en Python, es que este es sensible a la capitalización, lo que significa que si compramos dos strings, y varían en la capitalización, no serán los mismos. Por esto siempre hay que cerciorarnos de que las letras coincidan en la totalidad.

Para esto python es capaz de manipular los strings, por ejemplo para poner en minúsculas se utiliza el comando variable.lower(), y para hacerlas mayusculas variable.upper().

fig4-1

Para ver todas las manipulaciones pueden entrar a:

https://www.tutorialspoint.com/python3/python_strings.htm

https://docs.python.org/3/library/string.html

Ciclos, ciclos, ciclos, ciclos, ciclos.

Como ya nos pudimos dar cuenta, hay dos ciclos formales, el while, y el for, y también tenemos la recursión. Todo esto ya lo sabemos, pero como sabemos cual de estas opciones utilizar.

//giphy.com/embed/3Omg3IWyAVqZq

via GIPHY

El ciclo for es el más utilizado en toda la programación, ya que con este se puede iterar elementos. La grán ventaja de este ciclo es que es definido, lo cual significa que sabemos, ya sea directa o indirectamente, cuantas veces se repetirá el ciclo. Esto depende de las variables y/o comandos escritos en el ciclo.

También hay que recordar que este ciclo siempre incluye un contador integrado, casi siempre se le asigna la variable i. Y tampoco hay que olvidar que se tiene que utilizar el comando break para salir del ciclo, si no se utiliza, el ciclo nunca termina.

El ciclo While es el otro tipo de ciclo que existe en Python, y este es un ciclo completamente indefinido, su gran ventaja es que no se sabe cuantas veces se repetirá. Este número es definido por una condición asignada al ciclo. Como su nombre lo dice el ciclo se corre mientras la condición se cumpla. Este ciclo se puede utilizar para un número infinito de iteraciones, siempre y cuando se este cumpliendo la condición. De aquí viene que si vas a correr un ciclo while, se tiene que tener por seguro que eventualmente la condición se debe dejar de cumplir, ya que si siempre se cumple el ciclo se cicla (vaya la redundancia) y nunca se detiene.

El último no es un ciclo como tal, sino que es la ya conocida recursión. Que significa que una función se llama a sí misma. Segun el libro The Elements of Programming Style (por Kernighan and Plauger), los algoritmos recursivos son mejores que los iterantes. Por lo que la recursión es una muy buena opción, y muchas veces mejor que un ciclo común y corriente.

La recursión es una manera muy limpia de programar, y tambien muy facil de entender, ya que los parametros y/o condiciones por los que se va a guiar el ciclo, están fuera de el comando del ciclo, y por ende es más facil de leer.

//giphy.com/embed/A3tGVVdXTPNRK

via GIPHY

Fuentes:

http://www.harrisgeospatial.com/Home/NewsUpdates/TabId/170/ArtMID/735/ArticleID/14764/What-Type-of-Loop-Should-I-Use.aspx

http://stackoverflow.com/questions/660337/recursion-vs-loops