Saturday, 20 April 2013

Shaving

I have a Gillete Match 3 Turbo. Is a superb razor. It does a very good job of leaving my skin smooth, devoid of hair. But using it makes my skin sore and sometimes I cut myself.

I have a Wilkinson Sword Hydro 3. The cut is not as good as the Gillete. But my skin barely suffers, and I just can't cut myself.

Finally, I have a beard trimmer. Which leaves a nice stubble. And, unlike the other two, I don't need to have my face soaking wet (ideally after a shower), to reduce the chaos on my face.

I use the first one on very special occasions or when there is a requirement of formality (weddings, interviews)

I use the second one when I need to take out my beard, but is not a "big" occasion (going to a party, visiting family, ...). Also I use it if I haven't shave in a long while as a preparation, the day before, for using the first one.

I use the third one for keeping the face relatively tidy, on when I go to standard social events (a dance night or visiting friends)

As an aside, I had at some point a Wilkinson Quatro that I had to stop using because, due to the thickness of my hair, will clog up constantly (the space between the blades was just not big enough)

I have three grooming tools that I use depending on the circumstances.

And yet, on four different companies I have worked on, we had a single programming language to do everything. Disregarding what was the best tool for the job.

Sunday, 14 April 2013

Visibility

Lately I've been thinking that being part of a non open source shop that, on top of that, only does internal work has a one distinctive disadvantage: I cannot show anyone what I have done and what I can do. So when it comes to look for alternative work (for example, to reduce my current conmute of 1h40m each way) the company that could hire me starts in a position in which they have only my word. And because they have only my word I have to spend time doing trivia questions and doing technical tests. And is that slow and annoying and makes me waste time.

There is Stack Overflow, increasing reputation, as a way to indicate how much you know. But it has the problem that (in my opinion), you have to be quite on top of it, following it constantly and being very active, which most of the time I just can't do. Furthermore, is fine to help other people, but I prefer to see the reputation as a byproduct of helping people and not as the goal itself of answering.

Hence, I have decided to start doing opensource at home. Still thinking how I will go about it, but definitely it will be done.

Thursday, 24 January 2013

Portability

A few months I bought myself an iPad. The main reason I did was to be able to read the Safari Online library on the go. In fact I got the iPad and the subscription at the same time. But, as soon as I did, I started looking for the ability to code in the iPad. The reasoning is that neither my work laptop, a Dell, nor my personal laptop (a Mac Pro) are light. If I go to my girlfriends' mother's house i will want to do some coding, but i will like to travel light as well.

Finally, two weeks ago I acquired a Logitech Ultrathin keyboard and Pythonista. And last week I got finally around to actually use it: Two hours in the hairdressers waiting for my girlfriend, so started to do some python code (About time I started to get serious with it).

As a teenager, when I started to get interested in programming didn't cross my mind that I would be able to do it out of the comfort of my room. Now I wish that windows surface was just a tiny bit more powerful so I could run Visual Studio out of it (yep, waiting to see the pro version)

Monday, 7 January 2013

Learning

The First Story
Let's going to start with a story, a real story that makes me blush. A few years ago I had to find repeated items in a collection. What I did was to put the items on a list and do a double for loop. As stupid as it sounds. I could say that I was sick (spend the next two days in bed), or that the job was killing my abilities (which I let it happen, so still my fault). Is not like i didn't learn about O notation and how to investigate if an algorithm was quick when I was at university). What a workmate did was to use a dictionary. As he was putting the items as keys he will add a count of repetitions as value. The difference on speed when from two days to 15 minutes (lots of items).

I decided then that it was time for me to re-learn my university stuff, and learn new things, But still an additional episode was needed to set me on my current path.

The Second Story
Some time later, I was doing another application in which, again, I think a double for loop and an if where involved (though completely different reason behind it). I was thinking to myself that the code was overly complicated, there had to be a better way of achieving what I wanted to accomplish.

Small tangent: when started on my current company I had no knowledge of C#. I was send on a week long course. Net 3.5 had just been released, if I remember correctly, and the instructor was excited about lambda expressions and Linq.

Now, from that course until I realised that I had some overly complicated code I had not touched either (again, a question of the working environment not really caring for our abilities), but somehow they came into my mind. I quickly investigated, and the resulting code was so much cleaner that it was an eye opener. Next thing I did was get the C# in depth of Jon Skeet.

Since then, I have slowly increasing the speed at which I learn new things, I read programming books, and practice (practice does do the master). Mythical Man-Month, Pragmatic Programmer, unit testing, design patterns, ...

Though three breaks have happened that had allow me to just start "running". Before was just walking.

The Three Breaks
First one was the change of CEO. The previous one was too involved in code (which by itself is not bad), and tend to drive things in his way, which involved no planning, testing, defined methodology and continuous change of ideas of what to do. In part his involvement was understandable as the main internal framework that the company used was his child.
The new one is not involved in the same way, and our development manager has left over my shoulders the introduction of good methodologies and techniques (and by Tutatis, that I am doing).

The second break was the combination of finding that I could have Safari Online on a tablet and that there was a tablet that had high res (iPad 3). Until then wasn't really interested in tablets, but the combo was kind of a deal maker for me.

Finally, I have moved to a place from where I can use the train to go to work (though it takes me ages). Which means that I can spend inordinately time reading. The net result is 5 books read in the last two months.

My Way Of Learning
Now, one quick regarding reading. There is a tale/story/fable abut two golfer friends, and the gift of a golf book from one to another. The actual consequence of that, on my case, would have been quicker learning.

The way I tend to learn is read books and articles about what I want to learn, even if I don't understand what it is about, and then start practicing  Maybe I will not remember 100% percent of what I read but I will acquire knowledge from practice far quicker and with better understanding of what is going on. Furthermore, I will know where to look for the information that I originally didn't understand.

Final Words
Education, education, education. Never stop learning. I forgot about it for a few years, and my skills decayed. Now I'am finally approaching where I was supposed to be. Lots to be done, lots of practice to be done, lots of reading to be done. But I am fully focused at the moment in achieving it.

Thursday, 22 November 2012

Raspberry Pi

Just bought my first Raspberry Pi, model B. Not sure yet what for, yet. But I just liked the idea of playing with it. Will need to look for ideas.

Saturday, 17 November 2012

New tools

This last week my company finally got my department licenses for Resharper and LinqPad. Ecstatic is the word.

Not just for having the tools (which will be useful) but because they have spent the money. What we do is important and we are getting some support now. We have have even increased the size of our department by 60% (well, it was a small department)

With the consent of my boss (the development manager) I am introducing procedures, practices and tools that will be beneficial for us. Before there was nothing. We are finally doing unit testing with NUnit, we finally have a branching strategy, we use stylecop, we have daily and weekly meetings, ...

All this is leading to, on one side, a better environment where to work (we all agree on that) and, on the other side, making the internal tools that we develop more efficient and robust (soon we should start seeing tangible benefits). Our morale is high.

It is going to be a long road, but I am happy to be at the beginning (so I can see the difference between the before and after) and be the driving force behind it. I've been looking a long time forward to introduce what other lucky developers consider standard.

Friday, 19 October 2012

Be a cow

A colleague just mentioned that reading code from a big application is like staring like a big field of grass, boring and daunting. My answer was: be like a cow, concentrate on a small patch and eat it, then go to the next, then to the next. It becomes more manageable.