April 8, 2013

Tell Satan to order some mittens, because it's going to get cold in hell...

,
For years (and I do mean, years) I've stuck with Perl as my go-to language for just about everything. I'm currently even employed writing Perl code, and I still love the language for what it lets you do. Since 1994 it's been my swiss army chainsaw of getting shit done(tm). 

It still is, but there's some things that need saying. Some of this is going to touch on a subject I brought up a year and a half ago, and may re-spark some of it. I said I wouldn't do it, but hey, things change. 

So the deal is, in my opinion Perl 5, as a language, is stagnant. There are maintenance releases, and sure, new features get added. But the adoption of new perl versions is glacial, due to the inherent slowness of updating large perl applications to work with the new features. If there's no budget to update the app, why update perl? No production environment I know of runs perlbrew, so it's still a case of "wait till the system perl updates". The most commonly seen version in the wild appears to be a flavor of 5.10 - we're on 5.16 already, last I checked. 

So there's that. Then there's Perl6 which as of today is still mostly a thought experiment, sure, there's a few implementations that can do stuff, but nothing I'd put into a production environment. At the rate it's going, perhaps my 2 year old son will be able to write his first Perl6 app by the time he's 18. 

Then there's still that lingering irritation. A year and a half ago I wrote a post ranting about the lack of documentation in Net::AMQP and AnyEvent::RabbitMQ; it pretty much started the shit-storm of the century. Sure, it wasn't the nicest of posts, and the followup posts I made weren't the nicest ones either, but I'm not known for my cheery personality. What I didn't expect at the time was that people were more willing to ignore the message in the post, and focus purely on the delivery - something they still do to this date; one commenter on the post turns out to be someone who responded to a job application I put in who then pulled a rather well known dick move of "not respond, at all, to any questions" afterwards. I seem to recall this person was appalled at how rude I was being. All I can say is Pot, meet Kettle. It didn't really matter though, I'm merrily writing perl code for someone else these days. 

So the irritation, it got set off the other day because I do tend to add a lot of Perl people on Linkedin, not necessarily because I want to do business with them, but having an extended "Perl" network does help when people ask me if I know anyone who could do X - and I can then pass this on to the people I connected to. This means occasionally I'll get Linkedin telling me about people I might know, and I add them if I recognise their names as being part of the greater Perl community. So the other day I added someone new, because hey, he does do a few things. He emailed me about translating some things to Indonesian and since my Indonesian is atrocious, I pointed him towards an Indonesian perler I know by reputation as probably being a bit more safe option. Shortly after he wondered why my name was familiar and I mentioned that it was probably the posts I made a year and a half ago. "Oh the one where you called me a hypocrite" (paraphrased). 

Well, yes, except I didn't outright call anyone a hypocrite by name, more that if you follow a certain course of action, that course is something I consider to be hypocritical. Predictably, after saying that and answering his "so why add me" question by saying that I might be a loud, rude bastard, but I don't hold grudges (It's the benefit of being a loud rude bastard, you get all your negativity out in one go, and there's none left to fester), things got very quiet because .apparently he didn't see it that way. That's fine, he's entitled to his opinions, but I consider it the sign of a closed mind. 

Why bring that up again now? Because that email exchange had me think back and re-read my posts and their comments again. And wouldn't you know it, after a year and a half, the majority of comments from these "leaders" of the Perl community still irritate the everloving fuck out of me - mostly because if I'd write those posts again today, they'd still say the same things, in the same passive/aggressive manner they did before. In that whole exchange a year and a half ago there's exactly one person I respect for what he posted and that's because they argued a point (and after that my delivery, which I'm totally cool with). 

And like a year and a half ago, I've spoken what's on my mind. Back to normality we go.

February 19, 2013

When you're on a roll, you might as well continue...

,
So again I've somewhat turned my back on that hideout of hideouts, the Living In Indonesia Forum; mostly because it's now apparently become "not done" to question moderator actions. It's not just every action, if someone gets an infraction or something, they probably deserved it - but it's the whole removal of threads, removal of posts, and general "quick let's swipe this under the carpet so nobody sees what went on" attitude that has my teeth grinding.

 There are also other factors, things I've not really mentioned on said forum because it'd be a one-way trip to banhammer land, but hey! If you're on a roll... The sheer amount of stuck up pricks and twats on said forum is mindboggling. These are the type of expat that gives expats their bad name. Oh, it's not outright in the forum, but the underlying way of writing, choice of words, and "well I'm right because" attitude makes it clear that a lot of people are best left in a quiet room by themselves.

 Why? Because the sheer amount of often bad advice being given. I've seen things where I thought to myself that it had to be someone having a go, but it was serious. And you can step in and say otherwise, but as with any forum you have your little cliques who will swiftly run to eachothers' defense.

 But that's to be expected, so that's not a big issue.

 The issue is that the posting guidelines are hailed as the word of God; and are adhered to with strict rigidity that would make even the most hardcore lawman on the planet proud; any disputes between users and moderators are usually brushed off either with "well you can always ask the owner" or "well if you don't like it start your own". And that bugs me, why?

Well... The owner. Hasn't set foot in Indonesia for at least 10 years. Is, in fact, generally unaware of what's going on on "her" forums any given day. Shows up maybe twice or three times a year to beat a dead horse, or make some snarky comment to someone, only to vanish back to whatever it is she does.

Honestly? It's great you own the forum, but if your finger is so far off the pulse of the expat population that you're about to give it a rectal exam, you may want to step back. As far as I'm aware, the main interest the owner has in the forum and it's associated website is to get viewers so the advertising bucks can be made.

 As for "why don't you start your own if you don't like it here". I love that one, I really do. Starting a forum is made out to be some massive endeavour that will eat your soul and cost you everything you have. Well, no. Not really. Domain names? $10 a year. Cheaper if you know where to look. Hosting for a forum the size of the Living In Indonesia forum? Been confirmed to be on a Linode costing all of $20 every month. Well now. Let's see, that's (let's be generous) a whopping $21.50 or so spent every month.

With no effort required, really, since the mods (who haven't quite caught on yet) are the ones putting in the work - for free, I might add - so that's not exactly a fortune we're talking about. And realistically, I've heard through the grapevine and some little birdies what "sponsoring" the forum runs people, and let's just say that it's more than the 22 bucks being paid monthly. Interesting, isn't it, when a site that may have started as a way to share information has now become someone's pocket money? And that's their main interest, not the community, but that bit of pocket money it brings in.

And hey, realistically? If I wanted to start a forum, it'd be up tomorrow, no problem. Getting people to visit it and contribute to the community it build? Not that difficult either. Done it before, on many occasions. Do I want to run a forum, however? Time will tell.

The big question is would it be worth it, or would it end up filled with the same type of people I dislike on the LIIF forum; where simply stating what's on your mind (or telling someone you think they're full of shit) is not allowed, but slight underhand snide remarks get passed day in, day out? Who knows.

And for the (eventual) criticism I'll cop for this post, that's fine. It's late, and hey look at that, it's my blog, so I get to write what I want today; but you're welcome to disagree with me in the comments in any way you see fit. Heck, you can call me an egocentric prick for all I care, and that's just fine - at least, on this blog? You can.

Mango, sri's new tasty treat!

,
For those who may have missed it, sri has gone and done another one of those "let me give you guys something cool to play with" things. Before, there was Mojolicous, which brought us non-blocking goodness for our web applications.

Now, there is Mango, which brings the same to MongoDB!

The official MongoDB driver, while being all official, doesn't really do much in the way of having features that other languages' drivers have; non-blocking mostly. There have been attempts at it, but none of them have gone to a point where I'd consider using them in a production environment.

Heck, sri himself has already said that the current Mango release isn't yet production worthy, but I ignored that and put it into one of my apps anyway. And it blew me away.

It ties in so neatly with Mojolicious and Mojo's event loop that things that before were a bit rickety have  become much nicer. Imagine if you will, you want a request to come in, you want to fire off a request either to a MongoDB instance, or fetch data from an API, well.. here's the gist of it:


The beautiful thing? Non-blocking all the way. This means more performance, and if it's your thing, you can tie in Mojo::EventEmitter and have fun with events.

Mango + Mojolicious = incredibly tasty.

December 9, 2012

Life in Minecraft hosting land

,
So as you may know by now, I run a small Minecraft hosting company - because it's a combination of two things that I sort of enjoy doing.

There are, however, always drawbacks to anything you end up doing, and unfortunately this venture has gotten me to the "what the hell is wrong with you people" stage much sooner than anything else I've done in the past.

It's a two-fold experience, really... maybe three-fold, but hey let's just randomly start somewhere. The customers. Lord. All. Fucking. Mighty. Potential customers I should say; the drawback of Minecraft is that the average player age is about 14, and as such a lot of these kids don't have the means to pay for a hosted server.

The sheer amount of requests for a free Minecraft server are staggering; thankfully so far only on the Minecraft Forums and not in the sales inbox, but it might not be too far away. And the thing with the free hosting requests is this; people don't ask, they demand. "I NEED ..." oh really? you need? how about "I need to pay my bills"?

Then there's the thing where these runts (yes, runts) ask for 40 slots. Hello my dear runtypoo... 40 slots? That's 4Gb of memory right there. That's not something small and tiny that a host in a good mood may decide to hand out for free, that's a significant chunk of server space you're asking for.

And when you point that out, boy, you get a new appreciation for entitlement syndrome in today's youth.

Aside from that, there are also sponsorship requests. I have in fact sponsored a few people, mostly because I felt they didn't ask for too much, and they were nice about how they asked. There is always the decision as to whether or not it'll be mutually beneficial, but only time will tell. Then again you see sponsorship requests for 8Gb monster machines, and they're made by someone who has 300 subscribers on YouTube. That's like, uh, you know, not so really going to work. There's nothing in it for the hosting company.

But the sponsorship requests are alright, in a way.

The next thing on Uncle Benny's list is the other hosters. While a lot of them are good, decent hosts, with knowledgeable staff, a large majority of them isn't. They deliver the service just fine, but the way they handle things is just... wrong.

Like: "hiring" people off the Minecraft forums to be their sales reps. In return for a free Minecraft server. What you then get is a ton of uneducated, uncouth, wild monkeys rampaging at anything that looks like a potential customer.

And just the fact that someone can post a "am looking for a host with X, Y and Z" request, and everyone and their dog piles in on the thread to flog their wares, even if they aren't matching the request at all.

I've passed up a lot of those threads, because I know I can't match the request, either because I don't support Bukkit, or because it's out of budget. I could say "eh let's take a shot anyway", but I don't want to get known for doing that.

Then there's the lack of actual "clue" with a lot of hosts, who will gladly say "oh sure here this 2Gb server will run a 60 slot 20 plugin Bukkit server just fine". Yeah, see, it won't. The average memory consumption for Minecraft is 80 to 130Mb per slot, and that's on vanilla. Expect that to raise do about 120 to 150Mb per slot on a Bukkit server. Now let's see, the math says that 60 slots on a vanilla server would take up the better part of 5Gb. Let's be fair and say 5Gb.  How is 2Gb going to do that? It isn't, not unless you fuck your settings so hard (read: view-distance, drop that down and kiss your mob spawn rate goodbye) you basically ruin the experience altogether.

Of course when you dare point this out, you get told you have no idea what you're talking about, and that their highly customised super duper ultrasecret minecraft_server.jar can do it.

*ahem*

I'm a programmer by trade. I've got my own custom server jar, and I know what the code looks like. And there is no way, in hell, that you can get a vanilla server to consume less than 34Mb per slot. The only way to do that is to start from scratch in a language that isn't a total memory hogging pig, and even then it's going to be a mighty tight squeeze.

For fun and games: a single chunk (16x16x256 array of blocks) will take up at least 16x16x256 x 2 bytes; and that's not including some extra bits. Just for the type of block alone, you're looking at 128kb of data. Per chunk. There's at the very least 411 (!) that are loaded per player, unless two players are close enough to share some of them; so, default settings, say 411.

411 times 128kb. Makes how much? 52Mb. And that's per player. Now, let's take 10 players. That'll be 520Mb. You might as well double it since a single block takes up 4 bytes in memory. So then we're already at 1040Mb. Then we haven't added in the additional data for a chunk, such as mobs and entities. Thankfully, air blocks aren't part of this data since air is considered "nothing", so depending on how built up your world is, you end up pretty close to that 100Mb per player figure.

Now tell me again how 60 slots fit in 2Gb?

No, really, I'm curious.

I could go on and on about it, but hey, I've got stuff to do so it'll have to wait :)

October 9, 2012

Why being nice is not worth it...

,
So all my life I've "suffered" from this thing where I'm "too nice". Not sure whether it's my personality or the way I was raised, but I used to have a rather naive view of the world where friends help friends, and strangers help strangers. Growing up it became rather obvious that this isn't how things work, so that was a learning experience right there.

What happened instead is that I just decided to "do the right thing" when encountered with problems or people having problems. Over the years it has lead to both very satisfying encounters as well as some really annoying and nasty ones, and lately it's sort of became clear to me that even doing the right thing is an invitation for trouble.

I've now decided that being nice and doing the right thing isn't worth it, so I guess I have joined the ranks of the egocentric assholes; I'm not looking out for anyone anymore, just my family, closest friends, and myself. Everyone else can go piss up a rope.

What made me decide that? A few things, really.  First, there was an incident in Jakarta. I was going to immigration to do my paperwork, and on the way there, a motorcyclist came out of a side street without looking and went straight into the side of a truck driving in front of me. Hard enough to knock the loose change out of his pockets. Since it happened right in front of me, there's no choice but to stop. Which I did. At that time I figured damn, that guy must be hurt (he was), and I have a first aid kit in the back of the car, so why not get out and see if I can help a little bit until he gets to a hospital.

Well. Indonesia being Indonesia, it didn't take long for people to see my pasty white face, and for one stuck up woman to decide that obviously this accident was my fault, since I honked at the guy and distracted him so he ran into the truck. You see, some people here still see us white folks as walking wallets. I did point out that the little black box under my rearview mirror is a camera, and it had recorded the whole incident, so if there was any reason to believe I had anything to do with the incident, I'd be happy to discuss it with the police. Everyone shut up at that point, and I figured fuck it, I've not got time for shit like this.

Then there's the thing where some people will ask me if it's okay to stick my name on a tender they're processing, and I say sure. Then everything goes quiet. Requests for updates (since it does mean I get some projects to work on) go unanswered. Trying to make appointments with people is brushed off with a "yeah okay next week". SMS, phonecalls, and emails for confirmation go unanswered.

And I'm tired of that; so it stops now. You want me for something? It's not going to happen unless I see both a project contract, and a downpayment for whatever it is you want me to do.

The last thing being the situation that has arisen lately which admittely, I'm partly to blame for. I spent 3 years working my ass off on a project as a sort of investment, a salary that didn't cover my expenses very well, and no way to save money. I did it because I figured if it works out, it'll work out big. But it didn't, and some of that is my own fault, some of it isn't. Everyone involved in that project is guilty, one way or the other. And unfortunately, the funding ran out, so hey, that salary you got? Not anymore you don't. And that's not something you want to hear when you have barely any money saved up, and a family to feed. But you take them how you get them. What kind of nicks me off is that beyond some "can you still try to do X before Y date?" I haven't heard from anyone involved in this project since then.

It's always great to know that the 3 years of your life you put into something wasn't worth the occasional checking in or followup discussions as to "what do we do now?".  Maybe something smaller, some other little projects, anything. But no, not a damn thing.

So all that just added up to the decision that I'm done being nice. Being nice just gets you fucked over, whether it's an intentional thing or not, when you're  being nice you're basically inviting trouble. No more, though. No more last minute favors, no more "sure I'll do X for you, pay me later", no more stopping for accidents, no more money for beggars, no more chasing down people to get a confirmation. As of today, if you want something from me, and you're not my kid, my wife, or one of my closest friends, I'm going to laugh at you if you expect it for free. Want me to write software? I'll write software for you, no problem. Show me a contract, and show me a downpayment, and we can do business. You want me to tell you it's okay to put my name on a tender? That's fine, but it'll cost you a flat 5 million rupiah fee. It'll also require a contract up front stating I will be part of the project team, and I will have a minimum of 10 project hours, billed at my current going rate of 1 million rupiah per hour. If you don't want to do that, then you can't have me, or my name. You want me to help you move? Sure, I'll help. Put gas in my car. Feed me. Pay my tol fees. And I'll help you move. You want me to help you sell something? I will, but it'll cost you 10% of the sale price.

Society is a bitch, and it seems the only way to survive is by being the biggest, baddest bastard on the block. Well, I guess I can be that bastard.

October 6, 2012

The things you do when you're bored

,
Or rather, the things I do to stay relatively sane. Life has gone slightly insane, and the stress levels have risen to volatile levels, unfortunately. Now I could write a long post whining about it but fair's fair, some of it is my own fault, some isn't.

But sanity, yeah, about that.... one thing, strangely enough, that helps me relax as a programmer is doing more programming. No shit. Except here it's just stuff for myself where it doesn't matter if it actually works, it doesn't matter if it looks good, and it really doesn't matter if it's maintainable. It's just for shits and giggles. Over the years I've actually managed to come up with some good ideas this way.

One thing that has caught my fancy is writing a server for Minecraft. Yes, I play Minecraft. Stack blocks and all that. Why? It's like a big box of Lego. I love that stuff, always have, and if I had the time, I'd still be dicking around with it. So yeah, Minecraft. It's a fun game but there's a few issues I have with it personally... first, it's written entirely in Java. This means that one way or the other, it's a memory hungry pig. The client end is alright, but considering that common accepted "fact" is that you require 1Gb of memory per 5 people you want to host is bordering on the insane.

I mean, you can stick a BF:BC2 server with 32 slots into that. So why does it use so much memory? Inefficient usage of resources and attempts to keep everything in memory. Granted, it is supposed to be easy to use and install, and not require you to know your way around inside some wicked server architecture. It does get that goal right. However...

I throw up a little in my mouth every time I see someone looking for server hosting. And they'd like 32 slots please. And the hosts fall over themselves with the "but we have more RAM than anyone else" sales pitch. There are some custom servers that exist, but the most popular one is basically the type of application that takes an existing application, lures it into a dark alley, then repeatedly stabs it and proceeds to take over it's body whilst replacing some bits and bobs with it's own bits and bobs. In essence: less efficient memory usage.

So there's a few C++ and C# ones, that look pretty good on the surface but it seems nobody will run a server with them. Why? No plugins.

That sort of leads me off on a tangent here, let me just quickly state that 13-16 year olds playing Minecraft have to be the neediest, whinest, most annoying group of people I've had the displeasure to ever encounter.

Anyway, back on track. So, Minecraft servers are usually memory bound. This means you will see servers advertising 250 slots, but that can handle maybe 30 people online at a time. The servers that have 80 people online are usually ran on machines that cost the equivalent of a small nations budget deficit, which is kind of silly. This, of course, leads to my taking the well known C10K problem and applying this to Minecraft. Call it C1K though because that's a bit more realistic. Not much has gotten done in a practical sense, but it sure has been relaxing for the brain.


July 31, 2012

The changing of minds...

,
I was going to write something about Indonesian people and their mentality, but I changed my mind. It wouldn't do any good, and I'd be just another grumpy old man ranting at the kids to get off his lawn. One thing I've noticed is that while some Indonesians desire change, 99% of them just want to keep the status quo the status quo and don't want change, neither to themselves or their surroundings - and so things come full circle.

July 22, 2012

It's Ramadan again... oh boy.

,
So it's Ramadan again. That one month out of the year where people are supposed to be fasting from dawn to dusk. And yet again it's that month where I think "they should just call it the Month Of Hypocrisy instead". Every female news anchor suddenly dresses up in full Muslim garb, every TV show suddenly has the male actors run around in their Muslim best, and the female actors are all wearing the Jilbab all of a sudden.

And every day, more food is consumed before dawn (Sahur) and after dusk (Buka Puasa) than you'd think possible. It's bad enough to say that a bunch of pigs at the trough are well-mannered in comparison. People, again, you are missing the point! The idea is that this month is spent fasting so you know what hunger is like, and so you can reflect on your life and the past year. It's not supposed to be a month where you spend ludicrous amounts of money for feasts that would make a Presidential dinner look like small fries in comparison.

Then there's the obligatory SMS you get from people; Mohon Maaf.... yes, mohon maaf indeed for sending one message to your entire phonebook. Mohon maaf for taking the cheap way out, and doing it just because it's expected and not because you mean it. Mohon maaf for being an asshole/bitch 11 months out of the year, only to suddenly be the best person ever for that one month.

As you can probably tell, I have issues with Ramadan in Indonesia. Granted, there are still people who "do it right", who take this month for what it is; a time for reflection and self-improvement. Unfortunately they're outnumbered by the hypocrites to an extent where finding someone who does it right is like finding a needle in a haystack.

I could go on about the attempts from every mosque around to be the loudest, the fireworks being set off -- and thrown over my gate, thank you, little punk kids for waking up my 1.5 year old who's sick and doesn't sleep well to begin with -- and let's not forget the "Sahur" shouts at 3am. If you're shouting around that it's Sahur, if the lights in my house don't come on, that's a sign you should move on, not attempt to make more noise to wake people up. If I wanted to be up for Sahur, I'd be up -- coincidentally I am up, but that's got more to do with my chronic insomnia than anything else.

So there it is. My yearly Ramadan rant.

Oh hey wait I still have a blog!

,
Been very busy so haven't posted much. Just so you know, I'm still alive...

March 26, 2012

Cleaning your instrument, do or do not?

,
With it being 4am now, I'm getting all philosophical. I grabbed my bass around 2am just for some random mucking about, not really practicing anything but just grabbing a random mp3 and seeing if I could play along by ear. Which worked out fine this time. Seems as soon as you stop thinking about what you're doing and just do it things go better. That's a subject for another post though... but it got me thinking.

Warning, semi-coherent philosophical stuff coming up...

So I was thinking... after playing my bass, I generally just grab my trusty cleaning cloth and wipe the strings down, but that's about where I stop. Some people have seen me do this and went ballistic because they generally wipe down the strings, oil them up, wipe the body, maybe wax up the neck, and so on. Some people will repair every little scratch, ding, and dent on their instrument.

Me, on the other hand? Not me. See, I firmly believe that an instrument gets better over time, like a fine wine. It has to age. Fresh off the assembly line, they sound great, but once they've been through a few years of use, they'll sound better. Maybe it's just because you know every little quirk about it, or maybe it's because your instrument now has mojo. Mojo is what I like to call the various dings, dents, scratches, fingerprints and other things that collect on an instrument over time. I like to keep them there. Doesn't mean my bass is dirty as hell, it just means when I say I'm going to clean my bass it's a matter of a cloth for a quick wipe, a few cotton buds to get dust out of the corners of the pickups and other hard to reach places, and every now and then I'll clean the fretboard if I'm changing strings.

I'm kind of wondering whether I'm alone in this or not. I see people who have had the same bass or guitar for years on end and it still looks like new, and I see people with a guitar or a bass that looks like it just survived a trainwreck - I'm somewhere in the middle on that - and I'm curious to know what your opinions are on this.  Comments please!