Wow, three months without writing even replies to your comments on some old posts. This should not happen, not again.
Let me write a short summary of what happened during this time that kept me so busy that I couldn't find some spare time to keep you up-to-date.
First things first (or business is business if you prefer). So, starting with my job, I took some decissions by the end of 2010 (as the result of some thoughts and oppinions I gathered through the last 4-5 months of last year) which lead me to a frenzy day-by-day of decissions, meetings, paperwork and planning. That has been probably 70% of my time (and headaches) since last december.
I decided to split my efforts and dedicate some more time to some ideas and projects that had been in my suitcase for some time. The kind of projects you try to release to the public from time to time, but you never find the time to do it. I built a plan for each project, with roadmaps, deadlines, etc, and I've been working really really hard to achieve the goals I've set to myself.
As the result of all this work, the first project is already online, Zavo (http://zavo.es), which is an online service (SaaS style) for lawyers, attorneys, judges, etc that consist in a webapp that let them manage customers data (CRM), courts, cases, documents, notifications, events and a lot more stuff. With this service they can manage everything using an easy-to-use web interface powered by some python software (built on top of Zope and django). It has been a great experience to work on that project, setting everything up, and doing it (imho) the right way.
There are another two projects that will be released during 2011, so I expect to be busy for quite some time.
On the other side, I'm back in the freelancer business. Codigo23 website will be up & running in the next few weeks, offering some information about the company services, and I already have contracts with some customers to work on some projects, both related with sysadmin tasks (\o/) and software development (yes, lucky me, related to python).
Being a freelancer is good, really good. Of course there are a lot of things to deal with, and you've to be quite responsible, but you can manage your own time and efforts in a better way, and you can choose which kinds of jobs you want to do.
If you don't trust me, go ask my friend betabug, which is back as a freelancer too after being working exclusively for the same company for the past few years. Who knows, perhaps we will be able to team up for some projects soon ;D.
Back to me, I've learn a lot of things during these past three months.
I've worked for the first time with things like wsgi (writing some stuff directly as wsgi applications, not setting it up existing apps like django or trac, which I already did in the past), Mako (which is a dammed good templating system for python apps) or django-piston (a django app to create RESTfulAPIs in your apps).
I've read about TDD (Test Driven Development) and I started to write tests in my code. I've played for some time with sphinx (a documentation generator used in projects like python, django, sqlalchemy or blender) and now I'm using it to manage documentation within my projects (developers, users and admins documentation).
Hoy a sido un día duro, muy duro. Hoy se ha muerto mi abuela (paterna).
Podría remontarme a hace prácticamente 10 años, cuando empezaron a aparecer los primeros síntomas del alzheimer, cuando su mente comenzó a degenerarse de tal forma que hasta su cuerpo dejó de responder.
Podría remontarme a hace unos 3 o 4 años, cuando dejó prácticamente de hablar y ya no pudo moverse más, quedando postrada como un vegetal en una cama, con la única capacidad de sonreir, llorar y emitir unos lamentos que te rompían el corazón.
Pero prefiero pensar que por fin descansa, que aquella abuela que de niño me cuidaba y me enseñaba muchas de las cosas que me han convertido en lo que soy hoy, ahora está en ese sitio a donde ella siempre quiso llegar.
Two days ago I went to Santiago to attend the Artropocode Meeting, an event for people from both the Open/Free Software and Art/Design/Multimedia worlds to meet, talk and share ideas, experiences and knowledge.
First reason for me to be there was the fact that a friend of mine was involved in the event organization, second reason was that the first day was focused mainly in the arduino project.
For those of you who don't know about it, Arduino is an open-source electronics prototyping platform based on flexible, easy-to-use hardware and software. It's intended for artists, designers, hobbyists, and anyone interested in creating interactive objects or environments (extracted from their website, http://arduino.cc).
Basically, they were able to send a hand-made shuttle up to near 40Km from the ground. Within that shuttle there were some cameras that were recording the whole thing. Just go check their website and play some videos, you will get truly amazed.
Filipe told us about the idea behind their project, how they started working on it, how they did what they do and we watched some amazing videos.
When the talk was over, Filipe sets a workshop so we all could play with some arduino boards and learn a lot.
Some buzzers (we did some really funny things with those ;P)
Lots of cables and connectors
A breadboard (where we will connect all the other stuff easily)
One last thing we needed before starting to work was to download the latest piece of software from the arduino website. This application makes communication with the board easier, you only have to write the code to interact with it and the app will take care of checking your code, validating it and uploading it to the board internal memory.
You can write your source code using your tool of choice, you only need a way to upload it later to the device. Of course, the debugging/console utilities bundled in their application help a lot too, so I recommend you to use it at least for your first experiences with arduino.
Good, after setting everything up and some theoric introduction (which took place while everyone downloads the app, putting the wifi router into fire) we started with a really easy example, the blinking LED.
The idea was quite simple, we had to design a circuit so a LED got some electricity (to light it on) and then we had to add some code to the arduino board so it was able to light the LED on and off.
Designing the circuit was hard (last time I did anything with a breadboard was around 1998) but the code for the board was quite easy (less than 10 lines of code). The language you've to use to communicate with the arduino board is quite similar to C, so it wasn't difficult to get used to it. It was even easier because of the online reference, where you can find all you would need about the language.
This is a screenshot of my computer after uploading the code to the board:
The window you can see on the right side of the shot is the editor, where you can write your code. As you can see it even has syntax highlighting (as well as auto-indent). The window on the left side of the shot is the debugger/monitor window, which is showing the answers the board is sending you back through the serial connection (in this example, some print statements I added to my code).
Once the blinking LED was actually blinking (so we could be sure it worked) we started playing with the circuit and the code, first changing the code so it blinked faster or slower, then changing it a little bit more so the LED wasn't blinking at the same pace all the time... it was fun.
After a while, we added potentiometers to the equation. We modified the circuit to add a potentiometer that allowed us to adjust the ammount of volts one of the inputs of the arduino board was receiving. Then we modified our code so it was able to adjust some values on demand. What does it mean? Easy, using a simple switch we were able to adjust how fast the LED was blinking. I know, I know, it sounds nothing like launching a missile against your archenemy, but I was learning dammit!
At that point people started to explore some own ideas, and there was a really nice atmosphere of learning, collaboration and sharing:
One more thing we did with potentiometers was to use them to adjust the intensity of the light the LED was emitting. This was really easy to do, in fact we didn't have to change the circuit at all, we only had to adjust our code a bit.
In the next step we added some sensors to our circuit. First we modified it to add a light-aware sensor. The idea was to replace the potentiometer with the sensor and see how the LED was going to change the light intensity based on the ammount of light detected by the sensor. That is, if there were no light, the LED would shine at full power, while in the case of too much light, the LED would be emitting almost no light at all.
At this point our circuit was getting somehow complicated (as we were adding more and more stuff, without removing the previous work, as Filipe was recommending) but I was impressed about how easy it was to apply big changes to the cirtuit behaviour with just small changes in our code.
Once the light sensor example was working fine, we added a temperature sensor too.
For the last example involving LEDs we had to build a circuit with three potentiometers and one LED. The idea was that, using manual switches, we had to be able to adjust the color of the light emitted by the LED. Each potentiometer could be used to adjust the value of each one of the colors from the RGB color model (Red, Green, Blue), from 0 to 255, being 0 the lowest value (black) and 255 the highest value (white).
This is a picture of the whole RGB LED setup, ready for rumble:
This is a closer look at the board, after manipulating the potentiometers switches a bit, to get a bright green color on the LED:
For our final example, we used a buzzer, an audio signaling device that can be used to make 8-bit sounds (and music!).
At first we just added the buzzer to the breadboard and we modified our circuit and code so it sounds, using a well-known tone:
After some experiments, we used the existing circuit from the RGB example (including the three potentiometers) to create some kind of a mixer board, that is, one of the potentiometers could be used to set the tone, another one could be used to adjust the frequency and the third one could be used to adjusting timing/delay.
This is the result:
The source code that allow us to do that was amazingly simple, take a look at the window on the left side of this screenshot (the one on the right side is the code used in the RGB example):
After playing for a while with the buzzers example (there was even a proposal to see if anyone was able to get the classic Super Mario Bros tune ;P) Filipe and some other guys tried to set up all the equipment needed to perform a Jam Session using one arduino board and a circuit very similar to that one you've seen in the videos (+ some professional DJ stuff). In the end it didn't work as expected, there was some trouble with the connections, but we used 2 powerful speakers to do some performance while waiting for the pizzas to arrive.
I had a great time with Filipe and the others. The talk about the spacebits project was really interesting, you should take a look at their website, seriously, it shows perfectly the kind of things we would be able to do if we don't stay all day seating in front of a TV, a video console or the social networks.
The arduino workshop was amazing, all I'd expected and more. Even if we did no real or complicated stuff, I had tons of fun. Filipe was a good teacher and he had patience and explained everything, every detail, we would need to know.
Just to finish this post, I'd like to give you some interesting links about arduino and the things you can do with it (yep, they are related to python... O:)) :
As I've told you some weeks ago in my summary of the first three months of 2011 I've been quite busy since the beginning of the year. Things hadn't change too much the past three months and that's the reason for this low-posting period (again).
One of the projects I spent most of my time working on was the new Codigo23 website. For the past few years we had a coming soon page, buf finally we found the time to finish the new site contents. Once the contents were ready, we packed them in a not-so-complex website powered by Python, django and some Mako templates. The design was made by Sond3 , a design and web development company from Lugo.
The new site contains information about the different kind of services provided by the company, from software development to servers and networks management, security services or python-related training.
We are working in an open source section, that will contain source code, snippets and many more things, including full source code access to projects released by the company. A papers section is almost ready too, there we are going to publish manuals, articles and how-to documents to share our knowledge base with the community.
We are open!(TM)
Right now it is available only in spanish, but we are working on the english and galician versions (I hope they will be available soon).
One of the best parts of working on this site was to explore new ideas and concepts about website development. In this case, instead of using a pre-built CMS or writing our own CMS, we just wrote some html code using Mako templates and a simple python script that parses the templates, generating the needed static html files containing all the contents of the website.
Then we wrote a small django application that has two functions:
It manages a small blog-like tool, which allow us to have a dynamic blog section, including rss feeds, tagging, comments, etc
I think you will see it clearer in this schema:
Obviously this approach has its benefits (static html files served by a well-configured web server is much faster than using dynamic CMS-like applications) and its drawbacks (non-tech users would find editing the mako templates difficult, but hey, we are developers!).
The Codigo23 website has been one of the projects but there was more work to do. We've got some new projects, some of them really really promising ones, and Zavo required some time too.
Good thing is that I've some good expectations for the next months, which is really good news nowadays.
I'm sure I'm not the first one that cames up with this idea, but I think it is funny enough to share it with all of you.
Some days ago, while having a walk by the sea, I found some stuff written on the sand. I kept walking and suddendly I thought:
"Hey!, wouldn't it be a good idea if I just write my twitter ID on the sand, leaving it there for everyone to find it?"
I know... probably 90% of the people will have no idea what would be the meaning of that, but that 10% would be worth the effort.
Choose a place that is not visible for everyone. This way, the people that would find it will read the ID, thinking about what it would be (obviously, people with a twitter account will understand what it is)
Try to write the ID on wet sand, the ID will be more readable. Of course, wet sand means that the sea will cover the ID sooner or later, it would be a good idea to keep an eye on it and write it again later.
Take some pictures of the writing and the place where you'd written it and put them on your blog. Don't show clearly where it is, but take some shots and spread the word/idea.
Yesterday was indeed a good day, and a long day too. I woke up at 08:00 (being my soul completely exhausted, as I got to bed around 3:00 the night before) and I met @r0sk, @MarcosBL, @mameyugo and @apvila30 at 08:45 to get on the road again on our way from Lugo to Ordes, where an ArduinoBarcamp was being prepared by our friends of the InestableLinux User Group.
The Barcamp started at 10:00, and we arrived a little bit later (around 10:20 or so), because we had some trouble finding the place.
The first thing that did struck me was the ammount of people attending the Barcamp, a lot more than expected. The guys from the Inestablelug said we were about 70 people in there, amazing (even more because they were expecting around 15 people or so).
You can get an idea on how much people we were just taking a look at these pictures:
After meeting some of the Inestable guys (like @nikageek) we attended the first two talks of the day. First one covering basic knowledge about electronics and the second one showing some aspects of the programming language you can use to communicate/interact with your Arduino board. Both talks were performed by Jose from the Inestablelug.
Then we had a coffee break (about 45 minutes or so). Perfect time to met some old friends like @toniousli or @javier_fazouro and talk about different ideas and projects using arduino boards.
The barcamp was talking place in "A casa da cultura", property of the Ordes city council, a nice place with plenty of room and some really nice paints outside:
Back inside the talks room, @TCRobotics led a workshop about setting up the development environment you need to play with arduino, that is, downloading and installing the software from http://arduino.cc and teaching us how to use the environment, where are the docs, etc.
In the picture on the left you can see @r0sk playing with his arduino board. It seems he was having some fun ;P
After a break for lunch two groups of people were formed. One of the groups was attending @TCRobotics' talk about Orugas, his personal project that consist on a rover-like robot that can be controlled using a Wiinunchuk (in a previous version) or a PlayStation2 (in its latest version). He also showed us a video of one of the first versions of the project, where the robot was able to move by itself, recognizing objects and obstacles.
It was really interesting to hear how this kind of projects are done, understanding the whole process, the problems you can find and how you can solve them with a bit of imagination and thinking.
The other group was attending a talk about arduino's XBee shield, a small board that adds wireless communication support to your arduino board. Oscar (one of the guys behind Bricogeek) gave this talk (sorry, I've no pictures of this talk). Another good talk.
The Barcamp finished near 21:00, or at least we left it at that time (I'm quite sure some people keep talking and sharing experiences and thoughts for some more time).
It was really a good experience. The only thing I'd missed was a real workshop, like the one I attended some months ago in Santiago, where there was a table, some arduino boards and material and both people willing to learn and people willing to teach, something more like a jam session. That would be really amazing, but I understand that being 70 people that would be almost imposible.
Don't misunderstand me, it was great and I enjoyed every single talk during the barcamp, I'm just giving an idea for the next-to-be arduino barcamp (as I'm quite sure there is going to be a next one soon).
We got back in the car and drove our way back to Lugo, arriving at 23:00 or so. We had dinner in one of the usual places (dotmas) and then I came back home BUT@r0sk, @MarcosBL and @mameyugo had other plans... They went to @MarcosBL's place and they kept themselves busy during the night, until they published this video in youtube:
[ no-comments ]
Oh!, I almost forgot, you can take a look at the pictures I took visiting this album.
Wow, look at the date of my last post... 06/11/2011, that was like 548 days ago!
Well, I'm still alive, as you can see, but I've been way too busy to write stuff publicly here in the blog (I've been writing some tweets from time to time here though).
Too many things happened during the past few months to be able to write about them all here. One of the main reasons I did stop writing stuff here is that my workload increased a lot, and the other one is that I've a daughter now. Probably you can imagine how much life has changed for me.
I can't tell you how many times I've thought "wow, I should write something in my blog about this" during those 548 days. Really, that happened a lot.
So, here I am, taking 5 minutes to say hello. Let's hope I can be back to this healthy habit of writing about what happens to me everyday.
I already wrote some stuff about my habit of moving around town by bycicle (here and here too for example) so this won't be a surprise.
For the last few years I've been riding an old mountain bike that wasn't even mine to begin with (dolo's brother wasn't using it at all, so I just borrowed it) and lately I've been riding my father's old trekking bike, which was nicer than the mountain bike, but not my bike:
Also, after getting the bike trailer for lara, we have been doing rides^excursions more often now (dolo, lara and me) and we didn't have a bike that was really comfortable for dolo, so we started to think about getting a new bike for both of us (a proper one for her, and one for me so we could return those bikes to their real owners).
So, for now we have bought a Giant Argento rs4 GTS (from a local dealer, mtcbicis). The plan is that I will use this one when going for lone rides, and dolo will use it during family rides. This will get me back to the old mountain bike, but I don't think it will take too much time for dolo to decide herself about which new bike we should get for her.
UPDATE: This evening I did a test ride (around 7.5 kms) and the bike is really really good. Fast, comfortable... Really worth the money we've put in it.