domingo, 27 de agosto de 2017

Who needs an architect? (Commentary)



Sometimes a designer just doesn't cut it.

We have talked about Software Architecture previously, but a full understanding of this discipline is not possible until we take a look at the people behind it. Namely, the architects.

Now, in the wake of the official defunction of one of my favorite sci-fi saga (Half Life: Thanks for nothing Valve), using such grandiose-injected words as "architects" may seem apropriate, and I'm fully aware of how corny this may turn out.

We know exactly what a regular construction architect does, but it may be hard to understand the work of a software architect if, before some time ago, architecture and software were not words that went as hand in hand as today. According to the author of the article, the roles the architects have to take are those of mentor and guide. They must condition the workers in their project so they are able to realize some tasks using their own experience, and they should also be able to point at a determined end, and, perhaps, even to some of the steps needed to reach that end.

So, does that mean that software architecture is in anything like trail hiking? No, it just means it is, in a way, a collective effort that relies heavily on a guide, or leader to make sure everything runs smoothly.

It seems "architecture" is just a fancy word for design, after all.

lunes, 21 de agosto de 2017

Codecraft: Software Architecture (Commentary)



Turns out I haven't been a very disciplined programmer after all.

Once code is compared to something so mundanely necessary as a building, one can see why following a pattern or plan while programming (specially if it's done as a collective effort) is so important. I believe the comparison of Software Architecture to regular architecture is very accurate since just a change in the pattern of building could be disastrous if such a structure (be it software or real) is not ready to be changed.

I keep seeing in all these sources that software architecture's general aim is to make code as flexible and change tolerant as possible for each specific case. Not implying that code should be terribly general (as the source states in this case), but that a general template may be created for different cases that could be developed in the near future. Similar code should be easily reusable should the need arise in a further project. Not out of necessity to comply any rules regarding software architecture or development good practices, but for convenience itself.

It should also be modular enough for it to be change with the less effort possible, which is something that happens very often in the industry.

According to all these guidelines, I haven't been doing a very good job at presenting (or even thinking about creating) a pattern to follow when programming, but I definitely see the utility of Software Architecture.

I can even think of several cases where software architecture could have helped me avoid severe design mistakes.

lunes, 14 de agosto de 2017

Moon Machines (Commentary)



I have always stood by the idea that one of the most important milestones a species can achieve is to exit its own planet's atmosphere, since no known living being is conditioned or wired to do so. Birds have the sky, an assortment of creatures have water, and we share the land with a bunch of other animals. What pursuit could be more worthy of admiration than to find our own place among the stars we have always looked upon?

The moon landing is seen as one of the most important moments of human history, and with good reason. It is very easy to get distracted by this notion, as well as by the grandiose air surrounding the whole afair, and not take into account that this was the result of the collective effort of several people. Particularily, I would like to focus on the software aspects of this effort.

As I look at some of the more modern inventions like GPS, data compression, or face recognition technology, I can only imagine the amount of code that went into these very complex contraptions. And this is all considering modern programming languages such as C#, Java, Python, etc. which are languages with a very high level of abstraction. Back in the day, the whole lunar ordeal had to be done bit by bit.

I don't know how a code snipet that is supposed to get you to the moon looks like, but I assume it is no 2 line program. To consider such a complex task was done in the lowest level one can program is mind numbing. I compare it to telling each and every transistor, one by one, what should be done and when, something that couldn't be achieved in today's processors considering the ever growing quantity of transistors in each chip (according to Moore's Law).

viernes, 11 de agosto de 2017

#Team10Semesters

My name is Francisco Geada Rodríguez, and I'm a 9th semester (looking at a 10th with reluctant resignation) Computer Science student. If I had to say something about myself in regard to my career choice, it would be that I grew up in a household where a computer was commonplace (even though it wasn't really common anywhere), videogames were a staple, and we had a new printer each month because we somehow managed to break them as they came in.

Today I cannot imagine life without any of my gadgets, though, that may be a toxic idea depending on who you're asking.

Anyway, even though programming, videogames, programming videogames, and programming videogames (videogames revolving around programming in one way or another) are some of my interests, my life is not all about technology. I like history (recently taking an interest in authoritarian states which I hope will never come in handy), literature, music, and meditation.

My expectations for this course is to learn how to actually USE Ruby. I know the language, I've worked briefly with it, and I've worked on some very small excercizes for mere practice, but I don't think I feel confident enough to say I am able to program on Ruby.

Finally, since it's a requirement (and it saciates my ego, gotta say), I guess some recommendations are in order according to my interests:

Music: I've been listenning to Porcupine Tree and Steven Wilson a lot lately, so if you like Radiohead or Progressive Rock, you should probably check them out.

Movies: I got to watch some of the Alien movies, good stuff.

Books: Been stuck with the same book for some time, Kaput by Curzio Malaparte, an italian journalist's viewpoint of WWII's aftermath while visiting some of the most affected places.

An Introduction to Metaprogramming (Commentary)

Metaprogramming seems to be a useful tool when one is actually able to use it to solve a real practical problem. Otherwise, metaprogrammin...