“Before you speak, listen. Before you write, think. Before you spend, earn. Before you invest, investigate. Before you criticize, wait. Before you pray, forgive. Before you quit, try. Before you retire, save. Before you die, give.”

Thursday, December 31, 2009

Happy New Year !

This the time to set a new year's resolution ... well I can think of some of my failures in 2009 and some of my successes.
My failures :
- could not pay my car debt which was scheduled for end of the year
- could not bike all year long(car accident in November) .
- had some lazy periods when I could not be a top performer.
My successes:
- lost 23-24 kg .. I am now officially in the overweight but not obese category and it feels fine
- found a Java developer job and was promoted a team leader .

What I want for 2010 :
- pay my debt - it is so old fashion but I hate debt , being debt free is important for me and my wife
- get organized about my life (already am a lot better at this) and driven the two are interdependent no matter how much will you have you need to be organized and without will
you can't even organize. Professionally it means I should use all the 8-9 our at work(and not another hour more) to deliver working code and deal with the issues no matter how boring or incredibly hard they are.
- finally pass the SCEA certification .. this has been a work in progress since 2007 .. need to do it
- enter the master program - E-bussiness .
- loose weight - another 17kg would be nice
- bike a lot more( commute to work daily) , maybe even buy a road bike

Happy New Year Everyone !

PS : Being organized means I will definitely do a huge upgrade in March to a new computer .. can't wait for that.

Tuesday, December 29, 2009

Developer machine - do you really need a core i7 and 6 GB RAM ?

After a depressing post about Christmas I will try to finish the year on a happy note.
Due to the fact that I want to avoid adding to my already mounting debt (car especially) I gave up buying a new machine. Instead I kept upgrading it to make it faster.
My current machine now is a :
CPU : Amd Sempron 2500+ - 1.4 Ghz (o.c. to 1.626 Ghz)
Motherboard : Biostar K8M800-M7A
RAM : initially 512 Mb PQI - upgraded to 2GB king MAX DDR1 400
Cooler : Amd Stock - replaced with a Zalman 7500 AlCu Led.
HDD : 1 40 GB Seagate + 160 GB WD ATA
PSU : no name initially replaced by a Rasurbo Silent Power 550W

As you may realize this is was a low-end machine even in late 2005 when it was bought.

My machine felt really slow when working with Eclipse , Glassfish and cruisecontrol + svn on Ubuntu Linux 9.04. That was last year about the same time as now (December 2008).
All I wanted then was to buy a new computer on which to develop Java. But I am not Jeff Atwood at least not yet so borrowing 1500$ in this country and in this economy to fund your computer needs is not a good idea.
Well at my new job I got a new generation E2180 Intel Core2Duo computer which was supposed to be lightning fast(for beginning of 2008 anyway). Guess what .. it wasn't . The computer kept reading data from the HDD like crazy. This made me understand that it needed more RAM and required it ...
So if a 1 year old computer can be choked by software development requirement what can you ask from your old 4 years old computer ? While studying hardware used by other people on the internet for software development I found this post by Jeff which really made me think because I just happen to have a processor in the same family(with stripped down cache Celeron style).
So I started identifying bottlenecks and issues on my old Sempron
1) It would not always start
2) It was noisy
3)It was slow and kept reading from HDD
4)Compile times were too long.

Fix for 1 - bought a new PSU (and a silent one to fix 2) - 40$
Fix for 2 - bought a new CPU cooler (also a huge and silent one) - 35 $
Fix for 3 and 4 - bought 2GB of RAM and donated the old RAM to my dad - 75$
Total amount spent 150$ which was spent over 2 months period.

Finally after replacing the parts the computer is fast enough for development (not gaming ) and more important quiet. I can still hold on to it for 6 months and then keep it as a Linux server. Considering a new computer (case , mb,processor, RAM , psu, hdd) could easily cost 1100$ (my local market calculations with a core i7 920 2 GB RAM which would need to be upgraded soon enough to a i7 970 6GB RAM) I think the upgrade was a good idea and I will easily shave the 150$ off the CPU price next year (Intel processors are overpriced in my opinion but are worth it for a non-gaming machine).
Also as the cooler was very big and quiet I thought that I could afford a minor overclock from 1400 Mhz to 1626 Mhz and the system runs fine at this frequency(that was brave considering the fact that I was scared I would burn the CPU when installing it and the heatsink + thermal grease-did not happen).

Glassfish / MySQL and Eclipse run without interruptions and I can even open a PDF ,3 browsers and listen to music at the same time .. huge amounts of RAM can do this to you.
Considering the economy and the jobs in Bucharest it is always better to keep your money for bad days instead of expensive hardware. In Romania a good software developer can rarely get 1/3 rd of the American software developer paycheck .. and guess what costs are higher here .. but this does not mean you should not optimize your hardware .
I cannot understand people that are in this software development jobs and do not know (or care) what is underneath the case. I for one think that we need to know how to get the best of both our minds and our computers in order to deliver quality code.

PS : Because I did not study my computer info I kept thinking I had a socket A sempron until I opened the BIOS and found the information I needed. Before that I spent another 30$ on a Amd Athlon(Barton) 2600+ CPU which I will also give to my father.
I think that for his needs (office,music,movies) an AMD CPU will do (coupled with 1GB RAM).
LE : I did the upgrades on my father's computer now it works at 2600 + (Amd Barton socket A) a bit overclocked to 2700+ (2000 Mhz) and I really like how it works. I used his old processor an AMD 2000+ to power up one very old machine left around the house (carrying an old Duron 900 Mhz). Turns up that the thing I was scared of the most (installing a socket A processor and heatsink) was doable. I always thought I would burn down the damn thing but I didn't .. you just need to pay attention.

Thursday, December 10, 2009

Laid off for Christmas

Long time since I last wrote.
It's been a year since then. I hear Christmas carols .. .people smiling , the typical gifts rush .. but Christmas cannot be as nice for me anymore. The magic is gone .. people still die around the holidays , jobs are lost and a lot of people suffer from depression around this time of the year.

Last year I lost my job on December 5th. Those were some of the worst holidays in my life.
I could not afford to buy Christmas gifts and the only thing I was interested in was getting a job. People went on to their jobs each day .. I went running in the park and returned home just to find no calls, no emails and no comfort .. People were asking me were I would spend my Christmas holiday .. Austria or Romania .. I was thinking about my bank payments.

I luckily found a job in January this year but my holidays were ruined. The weird thing is that I was contacted by the same company that fired me (or laid me off .. not much of a difference for me) to work for one of the first of their customers.. well I can't say I can afford the chance to be fired again so I only agreed to do a part-time gig (which they could not fit into their plans) because a company that fires somebody for Christmas is not a company you want to join for a long-time relationship (even as incompetent /lazy as I was).

Thinking about the pain I went through I will make a note that if I ever found a software company I have to be nice to my employees and never ever fire somebody for Christmas. A 100.000 Euros Christmas budget(bonuses and presents (as in laptops/smart phones/geek toys) will almost guarantee faithful employees for a long time).

The worst case of Fired for Christmas last year ended in a shooting at the company Christmas party .. thinking about it I was pretty upset and was even invited to my ex-company Christmas party .. it is good we do not have shotguns.
On the other hand the experience really changed me yes there won't be any Christmas magic from now on(I still worry every day before Christmas about being made redundant) and I will never have a truly happy Christmas but I will never leave my life in the hands of somebody I do not trust , somebody that with just two words can destroy your holidays.
Here is another guy that went through the same thing. No .. no Merry Christmas for him either. ..

Friday, November 27, 2009

The good side of the real estate bubble and the programmers home

I am finally moving in the suburbs. I will get a one bedroom apartment in a 1 year old flat(+2 parking spots) for the same amount in rent I was paying for a 35 year old ,dirty and unmaintained studio 4 km from the center of the town(350 Euro).

The same place would have been rented for 2 x the amount I am paying in 2007 (700 Euro).. I know it because I was looking for a place to rent then in new buildings.

Renting in my 3rd world country is not usually an option as most of the times is not legal (the owner does not want to pay taxes for the money he/she gains) and you really have no rights.

So the prices for buying went sky high in 2007 (the apartment I will move to costs 60.000 Euro now but 120.000 in 2008).
Guess what : now they do agree to have a contract and pay taxes for it.

The place a programmer lives in is not as important as the place he works at nevertheless there are a lot of programmers that do code at home for side-projects , their business idea or as in my case just fun ... well you need a good environment:
1) Quiet and no interruptions space- yes it does matter
2) Space for computer stuff : a computer book library , a desk with a top of the line(and very quiet) desktop , maybe another place to take the laptop to for a while(a porch/garden in a house is ideal),a router for sharing connections for your home network , a server (for your site) and maybe a printer.
3)Separation from other family members for a small while

I dream about the bionic office but I realize I will just get it at my home , never at work, because really programmers are becoming glorified typists and work conditions won't get better here (in my country I have see only one company using cubicles .. let's not even think about private offices).

My current place just does not cut it anymore .. too little , too old , too dirty , too many scratches from neighbors on my car (Romanian habit on cars parked in crowded places if you happen to find an empty spot(unmarked) expect to have a car key scratch on it when you return).
If you never code at home you can live in a crammed room in a big city and literally live at the office and in the city but for me the place I code in is very important.
So important I thought about buying a house in a small town and starting my own business (software of course) and you know what I would be a happier coder then the typical apartment renter/owner dwelling in a big city , working in a open plan office and in a Dilbert like company.
Maybe .. just maybe I could do it. Food for thought.
For now I can't wait to move ... to a place I thought I would never afford.
PS : I still blame Kyosaki for the real estate bubble .. because nobody could afford to buy a really comfortable place to live in(like a house with a garage and garden) .. without being a drug dealer and now everybody is defaulting on loans they took thinking the houses/flats values would increase infinitely and yes in Romania it was 3X worse than in US .

Monday, November 16, 2009

Technical leader or team leader ?

At last I have been promoted mostly against my will :). I am leading a 3 persons team at work and I am working in a pretty complex project. I am now a team leader writing documents , attending meetings and generally being in charge of things.
Basically I am what I hated 3 years ago .. giving tasks around and checking on people. I try to keep from delegating work I do not understand but I am tempted to skip boring parts and do the interesting parts my self. I can delegate I am a team leader :). I want everybody to be able to work in the team and enjoy their work but I can see that that is not always the case and motivating people is an art I do not master for the moment but is crucial for the job you do (no matter how silly the CRUD app looks like).
One of my former team leaders was able to inspire me and make me learn stuff and I wish I could inspire my team members to be passionate about their work ( I keep failing at this for the moment).
Here is a discussion I like about being a technical leader.

People look at(good) team leaders with respect , I really believe in teams that can coordinate themselves without a central character leading the show because this is a domain where people are smart but that is just me.
As a team leader you need to be interrupted , to answer questions to redirect questions and in general to be in a constant communication mode.
So if you wanna be a team leader you need to forget about long stretches in the zone and learn to handle interruptions and even to be expected to get out of the zone when a team member asks you stuff (coding while listening to music is no longer possible all day long).
Maybe a good alternative to do that would be to have a meeting daily in which you decide tasks , solve questions and prepare the work to be done in "the zone". Would a wiki help ? would a forum ? well I don't know but I need to find out.
What would a technical leader do ? Well mostly the same but the requirements would not be handled , and I guess they get to be left alone and decide what to do by themselves and just advise the (very junior) developers on how to get their things done.

On the other hand at the start of November a crash ended my biking to work odyssey :( and I started jogging on and off 3-4 times a week to replace the effort. My weight is stable around 98-99kg and I am starting to be annoyed because I got used to the 2kg every week loss. This is annoying. I need to get the weight DOWN to 90kg ASAP.So this blog will contain less biking and more running.

Sunday, November 1, 2009

Less than 0.1 tons

Finally the gods of cycling and weight loss have smiled at me.
I have reached less then 100 kg (99.o kg Friday October 30th) and I feel better. The diet went well and the bike commute was always ok.
Yes we are talking about 20 kg weightloss in less then 2 months which is impressive.
I even managed to change my freewheel (a SunRace 14-28 t with a Shimano 14-28t) because the old one on my wife's bike didn't work. I don't think I could have done it without the help of Sheldon Brown's site which keeps being a fantastic resource almost a year after his very regretted death.
If I am lucky this year will be the first I will do the winter cycling thing (that is bike commute regularly after November 4th).
My plans are to reach 90 kg by the end of the year and from then on another 10 kg by March 2010.
Now I really should start focusing on the technology thing because I always seem to be a bit behind and I do hate it. I had all kind of excuses but getting organised about it is more important then pretending the computer is slow or that I am tired.

Tuesday, October 13, 2009

Scheduling solutions Timer Service in EJB3.0 vs. Quartz

As a developer you have to choose the best tool for the task at hand (no religious decisions based on vendors should be taken).
When I started to work with Spring Framework in 2006 I learned to implement jobs running at a certain interval by using quartz.As at the time I had only learned EJB 2.0 it seemed a huge feature for me.
The Spring Framework docs shows how you can do this. You can use cron expressions to set a time for execution , a repeat interval and whatever cron under Linux allows you to do.
The problem with this is that it is a bit more complicated and non-standard.

The EJB3 solution is to use the TimerService and call a method on a session bean(or message driven bean) whenever the timer expires. You use the @Timeout annotation for that method.
Here is an example for this. Although it is very easy to set some triggers without much pre-configuration (that's why you have a EJB3 container) it lacks some of the flexibility of Quartz.
I found a copy of EJB3 in Action at work and the author suggests using Quartz for more complicated tasks instead of the EJB3 scheduling support.
I agree on this issue.

Which one would I choose for a new system ? The answer is (consultant fashion): it depends.
Of course if you only have a servlet container (say Tomcat) you will need to go with the Spring/Quartz support (as non standard as it might be) but for a fully blown EJB3 container you can start with the TimerService and replace it as required as the customer requirements change(as non-standard or unprofessional as it might seem to do it).

Wednesday, October 7, 2009

Technologies I never used

As I am trying to prepare for part 2 of my SCEA certification I am trying to get an (practical)understanding of JMS.
As I have a SCBCD certification (and passed first part of SCEA) I have some theoretical knowledge but theoretical knowledge does not always help.
I wrote a simple application to test the concepts of JMS client and Message Driven Bean.
The application consists of a
1) Client - message sender (Java console application)
2)On a Glassfish server I deployed two MDB's one would process the message from the queue and using a stateless session bean get a result to send back to another queue.
3) Also on the Glassfish server I use another MDB to process the response.
This worked out finally (took some 2h to figure out errors) but as I wrote the code I made a stupid copy/paste error : I wrote back a message to the same queue that I read from..
The result of this on a synchronous process would have been a StackOverflow error (no connection to the site) but in this case I just got a huge log file and the messages processed nicely.
Got to love the power of JMS. I discovered even a whole list of patterns (besides the famous GoF and Core J2EE Patterns.) These patterns can be found on Enterprise Integration Patterns and the acompanying book.
Unfortunately in my so far 5 years Java developer career I rarely wrote Message Driven Beans and even more rarely JMS clients so this is definetely an issue if I am trying to say architect a huge B2B JEE application.
How do you get enough experience to say pass a certification or get a job if you don't ever use these technologies ? I have been into plenty of places were Tomcat would be enough and even in a full JEE container people would not play with JMS to interact with external systems so one is forced to get into big companies to get experience with this kind of systems and then become an architect.
My next technology on the list is JCA (never used that either though I do work with JBoss which uses it to connect to the database).
At some point you have to choose between JCA , JMS and webservices to make connection to external systems. I think this article makes a good point about what to choose when.

Monday, September 28, 2009

Driving in Bucharest ..

Although I have been driving for 10 years I never was a fan of urban driving. Driving in Bucharest is in my opinion the worst case of urban driving. With average speeds of 11 km/h it is in my opinion a waste of energy , fuel and time (and mental sanity ).
Still every morning when I go to work and every evening I return home I go past hundreds of mostly stopped cars that struggle to get somewhere. They accelerate to high rpm 20 m before the traffic lights only to hit the brakes violently at the lights. No car was designed to run like this whatever manufacturer it was.
People seem to have lost their minds in this city. I have seen plenty of 200 H.P. cars ans SUVs blocked in traffic. I have heard of people actually fighting in traffic or for a parking spot. This is insane.
Still on the bike paths I can only find myself and maybe 10 other cyclists during my commute. My commute takes about 35 minutes for 9km (about 6 miles) and I do listen to my MP3 player. I have heard of people needing 2h for the 9 km in question.
Is it all about social status ? I guess it is . Whenever I get to work during breakes all I hear is cars , cars and more cars. I have been a reader of car magazines (http://www.auto-motor-si-sport.ro/) for 10 years and I know more about cars than most people .
Still the hype around cars is huge and beginning to upset me. Do people really imagine they can truly use a 242 H.P. Audi A6 on the streets of a crowded capital at rush hour ? Sure you can hit it on the highway at 120 Mph or on other national roads but in the city this is insane. Nonetheless I thought so too when I was younger .. and less mature.

Well it is their money after all and I really could not care less except that they will be polluting my air , destroying my health in a city that is already polluted.
Here are my incity vehicles (the one in the background is my wife's but I use it in Bucharest , the other is my touring machine (about 2500 km and several metric centuries on it) that I use in my hometown.

Do people really think a man is worth less if he is not driving all the time ? Do people really need to carry a briefcase and themselves (for a total of 80 kgs ) using a 1200 kg car ?
I stand by these guys when it comes to cars and they do make sense to me.

PS: I wonder what would have happened if it weren't for the economic downturn ?

Wednesday, September 23, 2009

Too old to code .. or too smart

I keep hearing this around me and is more than annoying. People .. including those with just a few years of coding experience want to stop coding and become managers ,sales persons .. they keep telling me that coding is a low-level job.
Some older guys (around 29-30)think that it is an age thing and you just can't keep up with the new technologies so they want more money without actual technical involvement (like sales ,project management).

I too want to become an architect , to design software to build something from the ground up (this is fun no question about it) , but I don't think coding is under qualified job as everybody else does and I still want to code if only just to verify a proof of concept.

Everybody keeps telling me that a manager can gain 3 times as much as a coder (even in a senior position) that may be true but what everybody "forgets" is that being a manager requires a whole different set of skills to begin with. So investing 5 years of your life to study computer science + 5 years (in my case) as a developer just to become a manager sounds like a stupid thing to do. We (the developers) undervalue ourselves at this point and make development look like a secretaries job which can be done in a open-plan space with poorly trained and poorly payed juniors something I cannot accept.
Well this thread discusses this and I am happy that there are a lot of older developers like myself on StackOverflow to support this point of view.

Anyway as I wrote in the previous thread I am not ready to make career changing decisions now. I have other priorities for now. but I really feel the need to write this on the subject.

Sunday, September 20, 2009

Getting stuck ...

This is probably a defining moment. After only 2 weeks of dieting I have lost about 7 kg (that's 15.4 pounds in US measurements). However I am obsessive about my weight now. I need to be at 75 kg(150-155 pounds) and now I am at 107 kg(235.4) pounds). I have been stuck here for almost 2 days (I know this is not significant but I am still bothered).
I am aware that a diet takes time and is more about the lifetime change than anything else but I can't wait to get these 30 kg off. And what bothers me is that I've been in this fight for like 23 of my 28 years (before that I wasn't aware of this issue) and never won for more then a few months (that was in 1998 when I managed to get to 80 kg after running for about the whole year).
As a note giving up Cola though very difficult changed a lot. Most of the weight loss process was caused by this thing.

Living as an obese person is not what I want so before thinking about huge goals like having my own company , promotions , buying a house , invest in the stock markets .. I feel like getting control over my body is more important.

The life as a programmer does not help . You are sitting on a chair coding all day drinking Coca-Cola or Pepsi.
Without bike commuting I don't know if I would still be alive. My worst ever weight (in 2004) was 135 kg (297 pounds) and diabetes and/or heart problems would have ended my life soon (10 years top) if I had not started to bike commute.
So far I always had more important things to do and gave up trying to loose weight but from now on this is the to priority.
My target is getting to 100kg(220 pounds) by the end of the year and to 75 kg by the end of next year NO MATTER WHAT.
These guys in US are very inspiring so I am trying to read their idea's carrefully.
This post seems to draw the picture for programmers and fitness. This being said Jeff Atwood has no idea how it feels to be fat and most of the interesting points can be found in the comments. Joel Spolsky looks slightly more chubby though.

Tuesday, September 15, 2009

Being in "the zone"

The last 2 days I witnessed a quite rare phenomenon for me : I was in "the zone" totally focused .. racing against myself to finish a tight deadline. Yes it all clicked .. everything matched unbelievable for me. Like in that Swordfish scene when the coder had to break into the Pentagon's defenses well you know it INTENSE concentration .
As a reader of the JoelOnSoftware discussion forum I came to believe that you needed a quiet private office to really focus on the coding job .. but it is more complicated than that.
Everything from your family problems to the food you ate that morning to the fitness level affect your concentration. The fact that I just jumped to coding after some quite short planning period (1 h) is unlike me.
I realized that Joel's strategy Fire & Motion the one article I never understood or agreed on his site is quite true and a revelation these days.
The combination of Montignac diet , bike commuting and a touch of GTD really made my last 2 days great(high energy levels , high concentration even a slight improvement in my social skills).
I actually finished most tasks ahead of schedule .. which I never did before, and now I am looking forward to getting back to more work which is a change.
My most sever problem ever is procrastination . Now at age 28 I realize I wasted a lot of my life just delaying things and I am trying to catch back. I like to think the rest of my life will be more like "No Fear!" kind than the first 28 years.
A stupid example of procrastination : Never copy /paste . That is false. I did copy pasted code today and I did hack things ... but I made notes to refactor later.
Getting things done is more important than doing things right for now.
Yes I used to yell : Technical Debt whenever I saw a 1000 lines class ... not anymore.
The customers really don't care if you have nice and clean code or a big ball of MUD. They need to use the system now not when you do it nice(100 years from now).
That's about it for now I do need to prepare for the bike commute tomorrow.

Sunday, September 13, 2009

A new beginning

Hello World !
This is the first program any programmer writes when he is starting with a new language, and in my case this is my hello world in the blogging world.
Why would a programmer start a blog ? I guess because of boredom but I like to think it is because of this famous JoelOnSoftware post : http://www.joelonsoftware.com/articles/fog0000000036.html .

Also as I am re-starting my life I want to keep track of it. And since I have always had issues with my computers(my Thinkpad is dead and my desktop doesn't always start) the safest place to keep this is on Blogger (i.e. Google's hard disks).
This blog will be about more than technology .. it will be about my way , my fight as a lonely wolf with life and my issues with our society.
So yes it is all about me :) but I welcome any comments from other people.