`

Hadoop Architecturegasm 10

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.

Wordpress.com On Nginx (and Some Updates on Blogdetik) 11

Posted by andry
on Thursday, April 17

We’ve just realize that the living-legend Wordpress.com run on top of nginx.

wordpress.com on nginx

We’re heading to the right direction ;)

By the way, stay tunes on Fitur pages (I know, it’s not updated yet). We have dozen of useful gimmick such as 100 MB quota, post by email, statistic, blog category/channel, and more.

There nine servers to make that possible. Five (or six, I lost count) home-grown plugins. Dozen of hacks. Common sense. Indocafe CoffeMix. A lot of pizzas (chopstick, sometime). One programmer. Six system engineer. One hacker. And approximately four thousand bloggers.

But it’s not about adding more nice-to-have feat. It’s not about provides more space quota. It’s not about hacking nginx. It’s not about fancy press coverage and statistics.

It’s about how we love it. How we share our fun. How we put our piece of heart into writing. How we put our best skill into something that we’re really passionate about.

It’s about how we breathe it. Every. Single. Day.

That’s what I’ve learnt from Blogdetik.

State of Blogdetik February 2008 20

Posted by andry
on Sunday, March 02

I would normally do something like this in Dapur. But heck, it is down now. I know how it feel to have our own blog down. We’ve been working it out on Sunday morning.

It will be up sometime soon. Take it as matter of faith, Maia.

Now, the moment of truth. Blogdetik is infant. We installed blogdetik in a crappy old server about 6 weeks ago for internal blog (I think you should write this fact). And stir was changed. We decide to give it a try for public. After several hacks, that leads to another hacks, we did it. Same old crappy server, 2 new database servers (master-slave), and 1 LDAP server to store account information.

Blogdetik was online at Feb 1st 2008 10.00 PM.

Maybe 9.00 PM.

Maybe 8.00 PM.

You know how unpredictable DNS stuff is. However I knew that it was online since I checked it with my PDA in Taman Menteng that night. Rest of team were working overnight just to make sure everything went allright.

And sleepless nights are still part of our agenda for next couple of days to come.

Last wednesday we replaced that crappy old server with a decent one. It is not good enough, Opteron something with 8GB of memory didn’t help much. We’ve been suffering downtime every morning since Thursday. 2 httpd process take entire processors and then eventually, hungs up application server. We did prefork tune. We put XCache. We give WP-Super-Cache a try. Latency tests are good. Capacity planning are worked out thoroughly. Several stability pattern/antipattern also addressed correctly. Of course, we did compile PHP and Apache ourselves to gain 64bit advantage. Still, these two httpds are such pain in the ass. There’s nothing in pstree. Error log don’t help much.

Sigh. I miss doing post-mortem server analysis in enterprisey JVM through thread dump. If anyone happens to know how to perform httpd thread dumps autopsy, raise your hand please.

Lies, Damn Lies, and Webtrends

Above all, our biggest problem is this: Blogdetik is sold out. Like selling free candy in kindergarten. Free candies run out, while demand stand still.

Blogdetik is chasing Detikforum, Alexa said. Climb, you fool! Climb, you fool!

Report Range: 02/01/2008 00:00:00 – 02/29/2008 23:59:59
Number of blogs: 2042
Number of users: 1712
Average Page Views Per Day: 44,348
Unique Visitors: 45,491
Visitors Who Visited Once: 30,201
Visitors Who Visited More Than Once: 15,290

These numbers are still small compares to “One million blogs in 2008”. This is not our target, though. We get that somewhere from a great idea created by you.
What do you guys call it, PestaBlogger?

What’s Next?

The idea is to give more candies. Also known as vertical scaling.

Blogdetik future architecture

Before that, however, I would lie, cheat, steal, suicide, and sell my soul to demon just to get rid of httpds problem first. Soon after everything seems fine, we will moved out to nginx.

Nginx is small-footprint webserver (It has 2MB memory footprint whilst Apache eats 20MB running altogether in my small MacBookPro). It is now our standard Ruby on Rails deployment strategy (i.e: our Adpoint servers). Soon-to-be standard for all deployment platform in our system architecture (except several JVM app server node clusters). As the matter of fact, progressive download in DetikTV and one of DetikNews mirror, since last Monday, are now nginx.

Every network engineers around here are just amazed by nginx. I hope it is also to be a remedy to Blogdetik problem.

Okay now. GTG.
Our God(s) are crying out loud again. Sit tight, and I’ll be back next month for future report.

Update:
It appears that we didn’t properly configure mod_rewrite thingy. Each request yielded multiple threads which was eventually bogged down httpd (Hints: MaxRedirect directive). Silly us.
Blogdetik is now stable, and scalable. httpds sit in 200-300MB memory footprint with XCache enabled. Although it still doesn’t match my personal speed expectation, I believe it is already fast enough for most people. Enjoy!

Speed over Everything! 17

Posted by andry
on Saturday, February 02

“Jadi jam 7 nanti udah bisa up and running?

“Wah, mungkin baru besok paling cepet”

“Kalau besok, mending ganti nama jadi menit dot com saja”

“Atau jam dot com”

“Atau hari dot com”

“Jangan detik dot com”

Visual Source (Un)Safe 6

Posted by andry
on Tuesday, June 19

Check in, Check out.. how hard can that be?

It turns out, VSS is very hard to tame. I can live with lack of branching support and I have no trouble with slow network latency. However, even with automated backup script running, I can’t tolerate corrupted code repository.

vss sucks

To you who join the subversion resistance movement, you have my envy.

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.

You Code, I Code

Posted by andry
on Monday, June 04

LinkedIn is the new Friendster, right? Despite of its social networks, mashup, user-generated-content, long-tail experience driven, {insert your favorite buzzword here}, I found something interesting there.

LInkedIn Network

I just realize that programming jobs have myriad variation of title. Found these LinkedIn-anized titles over here and there:

  • Software Engineer
  • Software Developer
  • Programmer
  • System Analyst
  • Programmer Analyst
  • Software Architect
  • Software/IT Consultant
  • Independent Software Consultant
  • Web Application Developer

We can put a class modifier like “senior” or “junior” or “lead” or whatever in any title. It doesn’t matter. Programmer is a single living breathing organism that turns money (and caffeine) into code. That’s all we need to know.

A friend of mine, of human resources dept, advice me that I should use my current toys as prefix. Say:

  • Java Developer or,
  • Oracle Application Specialist or,
  • .NET Developer or,
  • Ruby Evilangelist.

Unfortunately, it won’t works for me.
For last nine months I’ve been overloaded with those 4 stack. All in intimate details (test, code, design, etc etc). On different team, different room, and on the same time. Specialization is for insect anyway.

God knows what title should I have on Friendster LinkedIn.

Blizzard Certified Starcraft2 Player? ;)

Belajar Bahasa Pemrograman Baru: Pilihan Yang Masuk Akal

Posted by andry
on Tuesday, May 01
.Learn at least one new [programming] language every year. Different languages solve the same problems in different ways. By learning several different approaches, you can help broaden your thinking and avoid getting stuck in a rut.
—Pragmatic Programmer.

Saya memang sedang belajar Ruby.
Tahun depan saya punya rencana belajar Erlang. Mungkin juga Haskell, Brainfuck, Lua, atau bernostalgia bersama Prolog.

Itu meski tahun depan, pekerjaan menuntut saya tetap menunggang gajah, maksud saya, Java.

Ada yang namanya tool. Ada yang namanya perspektif. Belajar bahasa pemrograman baru bisa memperluas perpsektif. Selalu ada lebih dari satu cara untuk menyelesaikan sesuatu.

Di tahun 2000, siapa sih yang menyangka bahwa CSS layout itu lebih powerful dan lebih gampang ketimbang table layout?

Kalau ingin membongkar enkripsi shareware (mbajak nih ceritanya), mana yang anda pilih: membongkar 1024 bit algoritma enkripsi atau mem-bypass saja enkripsinya dengan mencegat semua return value dengan isian true?

Terlalu emosional, terlibat jauh di debat kusir “flame war” akan memberangus banyak kesempatan indah untuk melihat sesuatu dari perspektif lain. Silahkan saja mau memilih Delphi sampai akhir jaman. Saya ada kenalan yang kaya (baca: mobil, rumah, dana pensiun mandiri) hanya berbekal Clipper dan Ashton Tate DBase III+.

Kita memang suka bermain dengan tool. Menebang pohon dengan kapak favorit selalu menyenangkan karena hasilnya bisa dilihat dengan cepat.

Chop, chop, chop!.

Karena sudah kadung punya ikatan batin dengan kapak, bahkan pohon semangka-pun kita tebang dengan kapak maut naga geni 212.

Ga masalah sih selama pohon semangkanya tumbang.
Ibarat nembak semut dengan meriam, yang penting semutnya mati.

Tapi alangkah baiknya kalo kita meluangkan sekali waktu menghayati perilaku nenek moyang kita, gelantungan di pohon, dan melihat area hutan yang lain.

Menurut saya sih, sebagai konsultan lebih penting gelantungan di atas pohon ketimbang menebang kayu. Perspektif dulu lalu tools.

Saya beruntung pernah jadi atheist.
Karenanya saya mengenal Tuhan jauh lebih baik sekarang.

Proletar TI seluruh dunia, bersatulah!
(mumpung 1 Mei nih.. :D )

Spring 2007 CSSReboot 19

Posted by andry
on Tuesday, April 24

Rather than blatantly join blind-leading-the-blind SEO sect by making more web pollutant, why don’t we take a lot more challenging “contest” such as CSSReboot.

What is CSSReboot?
The CSS Reboot is a community event for web professionals and enthusiasts. Every November 1st and May 1st at 18:00 GMT, Rebooters from all over the world launch their standards based website redesigns simultaneously; bringing traffic, interest and a little respect to their sites. There are no prizes or arbitrary winners, just great exposure and the knowledge that we all participated in something great.

All we have to do is redesign our current website into somewhat beautiful website and adhering to webstandard.

If you have no idea what the heck web standard is, let me explain it to you in SEO manner.

  • Put XHTML, CSS, and JavaScript into separate files. Not only you took advantages of browser’s cache capability (thus, load faster). Structured websites are easy to read by human. And eventually, by your beloved Google Robot.
  • Imagine your killer resume. You only have one title, that is, your name, on it. You represent several relevant context in subheading such as “Educational Background” or “Professional Experiences”. The same thing happens when we build a readable website. We use HTML tag in respective uses. We address this matter as semantic web.
  • Semantic URL a.k.a pretty permalink. Pretty permalink is a good thing because :
    • It is easy to remember by us, human beings.
    • It is the future. To RESTified your website, you need semantic URL. Imagine such snippet:
books = “http://yourbookstore.com/popular/chicklit” book.each { |book| puts book.title }

So what it’s gonna be?

I see Deny Sri, Gage Sevenova, and Arif Widi are already in. It’s clearly that I don’t make beautiful web sites as they do. But heck, I’ll overcome my fear to be a brave soul and tag along.

Here’s my design preview. It’s done from scratch in just about 4 hours using Gimp. Bear with me.

black cssreboot preview

Building website that readable, and hopefully lovable, by any human being is far more challenging rather than build a website so satisfy Google Robot.

So what are you waiting for?
Don’t be such a chicken sissy. Pick the right fight contest.

My Plain Simple Software Development

Posted by andry
on Thursday, April 19

Thousands articles are exist to describe what it is. Perhap I should go with mine.

plain simple software development

Tools. Programming.
  1. Source Code Management
  2. Test-Driven-Development
  3. Continuous Integration
Process. Managing.
  1. Progress Monitor
  2. Risk-driven, result-oriented.
  3. Consolidate. Adjust. Compromise.
  4. Tight deadlines are creativity rush. Make many deadlines, iteratively.
  5. iteration.each { |work| work.simpler, work.smaller, work.smarter, work.wiser }
  6. Power. Politics.
Team. Couching.
  1. Right mix of people
  2. In time of darkness and despair, make the team learn the hard way
  3. Encourage learning environment
  4. Participatory decision making. Perspective has nothing to do with seniority, skillsets, IQ/EQ/AQ level, and experiences.
Philosophy.
  1. I’m a dumb ...
  2. ..and lazy too.
  3. Law 10: Subtracting the obvious and adding the meaningful.
  4. Fuck the markitecture1. A markitecture looks great on paper and in diagrams, but doesn’t translate at all well into practice. Debugging is believing is only way to be.

Every bullet deserves succint explanation. I will do that later. So consider this as a roadmap.

Besides, it’s my “first” post. I need to know how Textile works in Mephisto ;)

1 Rod Johnson, J2EE Development without EJB p.71.