A little while ago I blogged about my experiences with the Ruby programming language. I got an email, which I believe raises some valid points (and of course adds a couple more points why you should learn Ruby, which obviously is a Good Thing TM). But before we start, please take a look at the following Paul Graham articles, as he expresses some of my points in a much much more eloquent way.

The Python Paradox

Beating the Averages

Without further ado, let’s see what the reader cared to comment:

One of the reasons people should learn less mainstream languages, such as SmallTalk, Lisp, Haskell and so on is so that they can recognize limitations and capabilities of current mainstream languages. There’s not that much new in Ruby, nor in C#.

I wholeheartedly agree. Although the Amiga Persecution Complex can be quite prevalent (as in “Why we are not programming in Objective-C, after all John Carmack (who shares the same initials as Jesus Christ and when it comes to programming he is probably more important ;) stated that it was his favourite programming language)”?), spending some time and doing some archeology can pay off significant dividends, especially from the fields of functional programming and whatnot, areas that are usually associated with academia and all the false connotations that come with it. So dust-off that Ocaml book today.
Because they never took the time to learn other languages besides mainstream ones, they don’t understand what the fuss is about and dismiss it as open source zealotry.

Here is a point that I wholeheartedly agree. It is quite funny seeing languages such as C# trying to incorporate features (or to put it more colloquially “tack-on”) that have been doing the rounds for years in some not-so-leftfield languages. So, more often than not, a couple of language revisions down the road, they end up using features that were chastising in the first place. Additionally, a pattern that is often observed is that due to lack of exposure to different technologies, they can be sitting at a gold mine and not realizing that ;).

They also don’t understand the power of an open community working around programming tools because they have never experienced it… I like my languages to come with code, a real community and to run everywhere, thank you!

Amen and write back soon! :)

How’s that for leaving no stone unturned? I understand that network equipment can be quite heavy but you get extra hiring marks for deadlifting 200 pounds?

Solid understanding of network services provided by Unix/Linux and Windows Server.
Experience with the following applications/tools: Microsoft Office, Visio, Wireshark, Nessus and Nmap.

Ability to relocate and install network equipment.  Ability to lift 50 pounds.

Must also be able to work occasional weekends and on after-hours projects.

(a quick intro: when I read this one, I really had to post about it)

War Story #1:

Navigate here

Check the prices for India. Check the cost of life in India. Check the average market rate for a Greek IT developer. Check the difference between cost of life in India and in Greece. QED

(yeap, I know that the prices quoted there include man in the middle fees, but still it looks pretty grim).

War Story #2:

Talking to a friend, he confided that once his company was needing to buy a software costing appx. 120K for a 5 seat license. The software vendor did a ROI analysis. When they got informed about the cost of developers, they exclaimed “Wow, Greece is cheaper than India!”.

So, dear IT managers. You do not pay well. In fact, you pay a bit better than India. You demand unpaid overtime. Don’t be alarmed when all the guys worth their salt either move out of the Greek job market or get snatched by the major players. Also, don’t be alarmed when you see that given your current skill field, you cannot get any innovative or highly paid projects, been stuck to the good ole fetch the data from backend, format it and present it $2000 t best projects. And for the love of God, don’t be alarmed when your company will die in a few years or become a “mpakaliko”.

(Some meta-info: after all these technical articles, I have decided to take a sidestep into the managerial aspect of things.)

Some managers still go by the good old “if you make your personnel work overtime, all the time, you will finish sooner”. By the same account, some people still believe that the Earth is not round. The overtime will eventually kill your company and here is why I believe so:

  • People have lives. Even if you insist on hiring ambitious, single persons, they will be quickly fed up with it. If the employees have a family, you can forget about them.
  • If you pay overtime, the costs mount. If you do not (legally) pay overtime, the personnel will soon feel ripped off (as in “Hey, those 4 extra hours a day kinda halve my paycheck”). If you do not pay overtime (the illegal version of it), you might have (and IMHO, you should) legal trouble.
  • IT work is not like an assembly line. If you force a person to work say 12 hours a day, it does not mean that he will perform 24 man-hour work in 2 workdays. Chances are that overall fixes that will be required, will take a lot more than the extra day the poor fella “saved” your company.
  • Even if the pay is good, persons will quickly fed up. After all, what use are money if you do not get to enjoy them? Even if they stick to it in a “come on, two more months of this and I get the new car”, trust me, they will leave, which leads us to…
  • High turnaround. If your people are fed up with you and they have a relatively up to date skillset, prepare to say “Buh-bye” to them. Once a competitor approaches them with reasonable terms, off he goes one person who might know more for your day to day operations than your average middle manager.
  • Speaking of managers, constant overtime is a sign of bad management. Even if you choose to ignore the above, if your sales people have no input from the workforce and systematically underestimate the time that is required for a given project, is bad management. If your managers have the slave-driver mentality, it is bad management. “Lowballing” projects is bad management. Hire an extra guy, even a Jr one will take some load off the other persons.
  • If you still require overtime, then do the world a favor. Fire all your managers and hire competent ones. If something cannot be done in a normal 40 workweek but needs to be done within a week, you’re out of luck. Perhaps you will get away with it a few times but when you will not, it will hurt.
  • While you are at it, why don’t you go ahead and fire some of the HR people? A stick in the mud (or a dick in the team) will hurt your productivity. Hiring only “cheap” persons will not save you money, as it is more likely than not that they will stall and waste time.
  • 8 hours of work are usually enough for most day to day operations. Instead of asking people to work more hours, try to implement some in-house productivity measurement and have people work more those 8 hours instead. Try to identify problems in your processes and performance bottlenecks and eliminate them ASAP.
  • [edit] If people do not have the time to do their own research (you did bother to hire people that do at least a bit of research in their own time, don’t you?) soon they will stagnate. OJT can only get your people so far, a bit of extra boost is needed. And yeah, if your people are working 50 hour workweeks, you can’t seriously expect them to devote hours in the weekend.

Fortunately, while I have faced most of the above, I do not have to face them now so I consider myself lucky. This is not the case with everyone and while this is no Joel’s, read it :)

Since this turned out to be my most often quoted post, I decided to add a few more experiences about piracy that happened to my work place. I will not be giving any specific names but still it is an interesting story. Ironically, I get a lot of traffic from people who are searching for DEFCON/Uplink warez (this is why I refused to post the magic offsets in the first place).

My current employer is in the process of designing and deploying a collaboration system for a small to medium sized media organization. The current process so far is an incoherent hell . 3 editions of MacOS (notice the lack of X ), zillions of different versions of MS-Office and lots of paper. The paleolithic process so far:

  • Dude writes story to a version of MS-Word and prints related pictures
  • Article goes to chief editor (and assorted people ;) for authorization, if it gets authorized, editing takes place
  • after editing, dude rewrites article in ms word and sends it in MS-word format to final editor
  • final editor converts its to ASCII, replacing lost Greek characters along the way
  • in the meantime, original author reprints photos corrected by photoshop and writes at the back the title
  • DTP guy gets the pics and the ASCII text, formats it, adds the pre-rendered ads from the Advertising Dept
  • All gets exported to .PDF and gets send to printing press (um, there are a couple of more steps involved but let’s assume that creation of .PDF is the overall objective).

The major problems identified so far IMHO are the following (but not limited)

  • Lots of time lost. A casual estimate is 4 out of 6 hours is lost. Factor in the average office worker’s lost efficiency and it gets lower than that.
  • No archiving facilities. So if guy #1 ask guy #2 where is the picture he used last month, good luck searching desk by desk.
  • Why not homogenize formats? Why not assign roles?
  • The whole process is error prone.
  • Data cannot be mined and efficiently searched.

So my suggestion was to built some kind of web application so the fellas can at least standardize their process. My proposal was this: Since the MS-Office document is using only as a temporary container, why not substitute it with a rich text form, like the one I am using right now (or for that case, any person who has ever blogged somewhere, after 2004 :-) )? I mean, hell, the text output before going to DTP is ASCII, for crying out loud!

- We cannot afford the training. Our personnel has to use what is already using.

-Think about all the money you will be saving from MS-Office licenses.

- It is irrelevant, we are using pirated copies anyway(!)

Having that out of the way, we began discussing choice of client and server software. The whole MacOSX software will be pirated. Quarkexpress 7 (and later) is straight out of the conversation “because we are not able to find a pirated version of it“, thus losing some of the more useful features of it. The CEO of the company also confided that “look man, Oracle is out of the question, we can use something that our clients can find pirated, perhaps use SQL-Server instead?” (in order to be fair, the shop I am currently working in is a fully licensed MS partner, so the piracy bit is not from our part. And, in case you were wondering, it took some convincing that there are other quality databases for x86 other than Oracle and MS SQL Server).

After a bit of in-company fighting, the design decisions were the following:

  • Ruby On Rails. This was a personal choice. I mean I am the lead developer in the project, why not work with something I like? Ok, not the epitome of proficiency but, dig this, they really did not want J2EE with any assorted framework (they want to save some $$$ by not having to use a separate JBoss server) and I really do not like (read: don’t think it will look as nice as Ruby On Rails on my CV) PHP.
  • Tentatively MySQL or PostgresSQL.
  • The whole system will act as a file manager :( (If we are lucky, lots and lots of links to a file server, if we are not, a huge DB consisting of large BLOBs).

Not the best of designs (and perhaps I give a bit much of the game away) but please take a moment and reread the start of the article. The following questions can be raised:

  • Since when PIRATED software factors into the equation of software system design? The manhours that can be saved potentially from a successful software project (i.e. a project that does consistently enough the job it was assigned to do, most of the time, all with narrow definitions of “enough” and “most of”).
  • What happens if Greece takes a harder stance versus piracy? What happens if someone tips the BSA? Are them guys in for a world of hurt or what?
  • How can you explain the simplest of all benefits of Open Source, cost, when all software appears “free” to them? If they are unable to grasp this basic thing, how can you start to preach them the freedom of formats and no vendor lock-in?
  • What is the point of using closed source software if you lose the benefit of support? Microsoft is taking the fight to pirates with the attack on Autopatcher and the WGA program. Since the client in question has the same NT server since 1994, good luck keeping up with the patching (did I mention that some of the client machines have internet access?).

If anyone is watching the news, after the Greece Vs Turkey football match (Greece lost 1-4 !!), the official Greek football site was defaced by some allegedly turkish hackers. Defaced is a way to say the least, I cannot tell the exact size of damage performed but once a host is compromised, it is compromised. The site was supposedly taken down for ¨securing things¨. A week after the fact, it had glaring SQL injection holes, nowdays (after a quick scan I performed) the holes are still there, not accessible via a standard web browser but easily accessible enough using any web vulnerability detection and exploitation suite. I am not going to give away more details to protect the not-so-innocent.

Some people complain that in Greece it is hard to get a job doing IT Sec for a living. More often than not IT sec guy here means system administrator (the term ¨consultant¨ is reserved for middle level management). I do not pretend to be a skilled guy in the IT sec area, I know a few tricks of the trade and that´s it. I know some really talented guys and yet they do something completely different for a living. Why? Why leave a country´s infrastructure open to attack? (a quick scan at related turkish institutions provided a better overall security). Other countries pay to import minds and skillsets. Here, I guess, we export them abroad or force them to make a career change. Exceptions there are of course, but the overall outlook is kinda bleak. This is not only related to IT Security. GFX coding, audio engineering is definitely a no-go here from a career perspective.