`

Hadoop Architecturegasm 9

Posted by andry
on Friday, August 08

sketch

The word “cloud computing” has been buzzing in my head ever since I played with EC2 and S3 in early 2007.

When industrial revolution began nearly a decade ago, factories and farmers are build and maintain their power generators themselves. Later, when electricity companies arrive, factories are begun to dump their generators and “subscribe” to these electricity companies.

Computing need will evolve in that way also. IT companies will dump their server farms, keep small numbers of servers with a lot of network peripheral, and “subscribe” to computing companies. No additional headache to maintain racks, powers, and air coolers.

I’m not dreaming. These are happening. Right here, right now.

When you reach frightening numbers, say 5GB/day, you’ll realize that you need massive computing resource. When you reach 5TB/day, you know that everything they taught us in Computer Science school is obsolete.

RDBMS is irrelevant.
OOP is dead.
(What? Trying to load/stream 5TB with precious java.io.* is a way to brutal suicide. SAX-like event-driven parser is yet another way, although you’ll get far more elegant death).

Just after I looked that sketch we’ve made several days ago, I know I won’t be writing code, if I have too, same way that I wrote code years ago.

Techrepublic: 10 Signs That You Aren't Cut Out To Be A Developer (with Indonesia Bonus) 7

Posted by andry
on Wednesday, October 31

A good piece from techrepublic about why you shouldn’t be a software developer:

#1: You’d rather be trained than self-teach
In most development shops, there is rarely any training, even if the company has a training program in place for other employees. At best, the company might reimburse you for a book you buy. Programmers are expected to arrive on their first day with all (or at least most ) of the skills they need. Even worse, the assumption is that programmers are really smart people who are good at problem solving. That assumption leads upper management to believe that good programmers do not need training. Finally, training for developers is extremely expensive. The result? When you change positions, you will need to figure out what is going on yourself, and you will probably need to teach yourself.

#2: You like regular working hours
Software development projects are notorious for being late. Even the projects that are delivered on time always seem to run behind schedule at some point. If you don’t like (or can’t handle) irregular or fluctuating demands on your time by your employer, development is not for you. When crunch time comes, your employer is more concerned with getting the product in the hands of a million-dollar client than with your child’s soccer game or the new TV program you wanted to watch.

#3: You prefer regular raises to job-hopping
The world of development is one of continual erosion of skill value. Unless you are working at a shop that deals with slow-to-change technologies, chances are, your skill set is less valuable every day. The state of the art is changing rapidly, and the skills that are hot today will be ho-hum tomorrow. As a result, it is difficult to sit at the same desk doing the same work every day and expect a raise that exceeds a cost of living increase. You need to keep your skills up to date just to maintain your current value. In addition, if you want to boost your paycheck, you need to expand your skill set significantly and either earn an internal promotion or go to another company.

#4: You do not get along well with others
It’s one thing to be an introverted person or to prefer to work by yourself. It’s another thing to be unable to get along with others, and it can sink you as a developer. Not only that, your manager may well be a nontechnical person (or a technical person who has not worked hands-on in some time), so you need to be able to express yourself to nontechnical people.

#5: You are easily frustrated
Software development is often quite frustrating. Documentation is outdated or wrong, the previous programmer wrote unreadable code, the boss has rules to follow that make no sense… the list is endless. At the end of the day, no one wants to be working next to someone who is always cursing under his or her breath or screaming at the monitor. If you are the kind of person who goes insane spending eight hours to do what appears to be 10 minutes’ worth of work, this is not a career for you.

#6: You are close-minded to others’ ideas
In programming, there are often problems that have only more than one “right” answer.  [Update: Corrected by author] If you do not handle criticism well, or do not care to hear the suggestions of others, you might miss something important. For example, a few weeks ago, one of our junior-level people made a suggestion to me. After considering it for a bit, I decided to try it. It turned out that he was right and I was wrong, and his suggestion brought the time to execute a piece of code from multiple days to a few hours. Ignoring this person due to the difference in our experience levels would have been foolish.

#7: You are not a “details person”
Programming is all about the details. If you get lost in a movie more complex than Conan the Barbarian or have a hard time filling out a rebate voucher, you probably won’t do very well in the development world. Sometimes, something as simple as a missing period can mean the difference between random failure and perfect success. If you are the type of person who might not figure out where the missing period is, your career will be limited in range, at best.

#8: You do not take personal pride in your work
Sure, it’s possible to program by the book and do a passable job. The problem is, the book keeps getting rewritten. Software development is not a factory job where you tighten the same bolt all day long, where a touch too much or too little torque makes no difference. It requires independent thought, which in turn requires the people doing the work to take pride in it. Furthermore, it’s easy to do something the wrong way and have it work just well enough to end up in production. That “little error” you turn a blind eye to since it doesn’t seem to cause any problems will cause problems. Programmers who do not treat each project as something to be proud of turn out poor quality work, which in turn makes their careers short-lived.

#9: You prefer to shoot first and ask questions later
Software developers, at least the good ones, spend a lot more time planning what they’re going to type than actually typing. Usually, when coders just open up their code editor and start banging away at the keyboard, most of what they write gets ripped out later. Programmers who ponder, think, consider, and plan write better code in less time with fewer problems. There’s a reason so many programmers barely know how to type properly: The hard part of the job is knowing what to type. People who do not invest the time up front in their zeal to get started with the “real work” are actually skimping on the “real work.” If you are a doer and not a thinker, software development is probably not a good career choice for you.

#10: You do not like the geek type of person
For a bunch of reasons (some legitimate), a lot of people just do not enjoy being around the engineer or techie personality. If you have a hard time with the Dilbert or Weird Al personality type, do not even consider going into programming. Are all developers like that? Of course not. But they comprise a large enough portion of the workforce that you would be miserable in the industry.

If you live in Indonesia, here’s more reasons not to be a software developer (or any IT career for that matters):

#1: Overwork, Underpaid
0-5 years experienced developer gets only 5 mils IDR a month in average. 5-10 years experienced developer gets 10 mils IDR a month (see complete result on ZDNetasia). I don’t think these are average numbers, these are best bet.

#2: Outsourcing is Overrated
Every non-core business should be outsourced. That’s the bottom line of infamous Potter’s Competitive Advantage thingy. And he had good reasons too. The thing is, most outsourcing practice don’t cite Porter’s guidelines. It just yet another tricks, so companies don’t pay your healthcare, insurance, pension, and other beneficial benefits.

#3: Technology Evangelist and fanboys sucks
We’re market. It means they’re always sell somethings to us. Frameworks, libraries, operating systems,.. Everything. Even OSS one is on sale. These technologies have their own salesperson leaders, who often address their title as evangelists. Evangelists create fanboys. Fanboys attitude, blind faith and hardcore zealotries, is dangerous. It distract me from making a good advice for my employers/clients, since if only a hammer all I got then all problems look like nails.

Got it? Okay. Now format your Vista drives and get Debian instead.
And you don’t need enterprisey Java. Use Ruby. Take my words as matter of faith.

PocketPuTTY

Posted by andry
on Thursday, June 07

PocketPuTTY works like a charm!!
Now I can manage production servers virtually from everywhere.

pocketputty

On client site, in Bandung yesterday, all I had to do was setup a wireless network with any Windows station1 , get private wireless network working, and that’s it. Accessing main server, mostly RHEL 9 4 and AIX, is a snap.

Of course I never intend to do serious development on WM5. Even though komrad Ikhlasul Amal point me a way to use vi as refactoring tool, I prefer to do it on normal 14” widescreen. I guess I’m not that geek at all :p

However for basic stuffs , WM5 is enough. With given appropriate privilege, I can start/stop application server. Inspect log report. Make any fix, grep/apply a patch on it, and recompile if necessary.

That’s why I never get myself string attached with any IDE. Because in such situation, all we got is just plain-old console and buildr (previously I was using Ant).

The only culprit in pocketPuTTY is several characters don’t work nicely with on screen keyboard. So I have to use external keyboard to do some stuffs. Well, I think it’s a good trade-off. For a man who fighting the weight of the world everyday, not bringing 4 pounds notebook is surely a relieving lift on shoulder.

1 Too bad, WM5’s support in SynCE is still under development. I can’t manage to get bleeding-edge SynCE working either. Oh boy.

How Could Vista Starter Edition Bring Us Any Lower

Posted by andry
on Wednesday, May 09

Vista Starter Edition Box

I was stunned by this Wikipedia entry about Vista Edition.

Much like Windows XP Starter Edition, this edition will be limited to emerging markets such as Brazil, Colombia, India, Thailand, Indonesia and the Philippines, mainly to offer a legal alternative to using unauthorized copies. It will not be available in the United States, Canada, Europe, or Australia.[4] It will have many significant limitations, such as only allowing a user to launch three applications with a user interface at once, not accepting incoming network connections, a physical memory limit of 256 MB, and will run only in 32-bit mode.[5] Additionally, only AMD’s Duron, Sempron and Geode processors, and Intel’s Celeron and Pentium III processors are supported.

Not accepting incoming network connections. Hm.. they still allow me to use flash disk, right?

It works only on Pentium III class? No problem. You don’t need much too run Visual Bla Bla Bla Express and NAnt.

Only 256 MB memory allowed? My old PC five years ago, only had 224MB SDRAM (64 + 64 + 64 + 32) and I ran it for VB6/VC++ on top of transactional COM+ and beautifully designed asynchronous MSMQ distributed applications adhering to Windows DNA architecture with Oracle 9i’s SGA/PGA-raped. 256MB is enough.

But this Vista Starter Edition, aim to address Indonesia market, allows a user to launch only three applications at time.

Three?

Let’s see.

A minesweeper. One application.
Wordpad readme.doc. Two applications.
Excellent Roeder’s .NET Reflector coming up. Three applications.
Notepa…. uups. You’ll get a friendly i18n-compatible WM_WINDOWS modal carved with a message like: “You must buy or upgrade Vista to run Notepad file4.txt”.

Is that an exact definition of three applications with user interface at a time?

Are we, Indonesian people, really that bad so they only allow us to run three applications?

Are we really that low?

Maybe I am a thief.
It is true that I prioritize open source platform over proprietary. I never give up hope in Gimp no matter how suck it is. Feeding my ego and idealism, sometime I pray to God so my hand never get dirty with .NET again. I spare my time to read about why fonts don’t created equals just to get Verdana and Arial works in OpenOffice. I even dig really deep on many proprietary multimedia format articles just to get my Totem start sound something other than Nelson Mandela rumbled about selling guns in Africa (or worst, deep-hack ALSA server modprobe: “Hello, I’m Linus Torvalds. And I pronounce Linux as lih-nucks”).
I’m a daily Linux user plugged with many open sources agendas, but ironically I still spend some time, walking down Sabang and Mangga Dua, looking for pirated Spiderman 3 DVD to test whether my GStreamer Plugin works fine or not.

So yes, I’m a hypocrite thief. Many of my fellow countrymen are.

Maybe I’m a poor.
I only get average paid-rate. New York construction workers get paid 19$ an hour. We’re considered lucky to get 19$ a day. I work overtime, without ever getting any sign of three-weeks paid vacation, to get crumble with XML files, scattered *.properties, classpath loading nightmare, AJAX request cross browser hell, intermingled DWR/Prototype/Dojo, flame-wars daily read, SVN repository out-of-sync, failing unit test, undetected bugs, ignorant IKIWISI archetype clients, an impatient boss, and blood sucking HR department.

So yes, I’m a poor. Many of my fellow countrymen are.

But then again, Vista Starter Edition, designed for Indonesia and other poor-thief countries, allows only three applications at a time?

I’m insulted.
Even a lowliest hypocrite poor-thief has some kind of dignity, at least to run many applications at a time as he/she wish.