General Internet/Links

Server Farm: “64bits good 32bits baaaaaad”

It seems that not all processors are equal, but at least the other 1/2 of the Animal Farm slogan holds true – “but some are more equal than others.”

I just read a post by Matt Davey about the MSN Messenger Server Farm where he quotes from Paul’s WinHEC 2005 blog:

The MSN Messenger server farm handles over 70 million concurrent sessions every single day. Until recently, they were using 250 32-bit servers to manage that load. When they switched to Windows Server 2003 x64 Edition running on x64 hardware, they reduced the size of the farm to just 25 servers”

250 32bit processor servers ==> 25 64bit processor servers.  Of course they don’t say much about the specs of the servers so its not a very functional comparisson – but its still a cool statistic.

For those who didn’t get the Animal Farm references – its a book about a farm where the animals revolt and take over the farm.  They have some key rules, number one being “All animals are equal”… At some point the pigs(I think it was the pigs) start becoming dictators and running the show and they modify the slogan over night to “All animals are equal, but some are more equal than others”.  The reference in the subject is from when they take over and the sheep chant “Four legs good, two legs baaaaaaaaad”.

Development Geek food General

Re: SADeveloper.Net Retrospective

So this morning Kevin asked for comments, and here are mine.

1) What is right with & 2) What is wrong with
1) It exists.
2) It doesn’t meet everyone’s needs so people are complaining. πŸ™‚

But seriously, have you thought about it for a bit?  Its a vehicle of the community.  If its not “by developers, for developers” then it shouldn’t be there and as developers we should be able to start something ourselves.  No – I’m not advocating that we split the community.  But developers will find a way if what they’re given doesn’t work for them. (Just check out all the blogs that are around – great technical content, great chatting) 

I think we need a core GROUP of developers.  As far as I saw, poor Arno had to do all the work previously.  The one or two times I suggested a feature I was told to wait for it.  The one main feature I wanted took a year to come around.  For me that was just too long to wait, so I stopped reading and replying to the forums.  With a GROUP of developers who can all make changes this would go much faster.  Of course we would end up with absolute chaos if there was nobody overseeing the changes, keeping their quality up to scratch, and keeping them meaningful to the community.  But surely that’s part of what the leads could do?  They could manage the community development of the site – they’re the people best suited to doing it.  Maybe with the help of some of the SA Architects we could setup a nice framework within which the whole development of the SA Developer/Architect portals would work?

3) Are you happy with the way the forums are run?
Yes, and no.
1) My take on the chat forum and post count.
Whether or not the posters to the chat are doing it just to increase their post count or not, the “Top posters” will always be looked at in awe by newbies and even some of the oldies.  I think idea is that its some kind of recognition for putting in effort in the community… e.g. Mr X posts a lot so therefore he must be involved. Which leads to “Gee, Mr X is cool because he helps out the community”.  For newbies that’s probably going to be their perception, and they’ll listen more to Mr X because he’s posted 10 000 posts (even though he knows nothing about computing), and they’ll ignore Mr Y with 500 posts who is actually the expert in the field.

But having said that, the chat forum is clearly beneficial to some people.  I have time to chat, I just don’t like the interface, and I’m not sure what interface would work better for me.  I prefer chatting “one on one” in MSN.  Until Andre O MSN’ed me a while ago I was pretty un-involved in the SA Dev meetings. I’m the kinda guy who won’t walk up to a stranger and get involved in a conversation.  Now I “know” at least one of the people in the meetings so I’m more likely to talk to people when I’m there.  I prefer IM’ing – selected content comes to me (and its the whole content, not just the first post, but all the follow ups too, and its quick and easy to interact with)
2) Technical forums.
Technical forums are cool, but I don’t really read them much.  I’m not sure why, I guess when I have questions I want to find answers “*NOW*”, I don’t want to post and wait a few days before I get a response. So I go straight to CodeProject, Google and DotNet247.

I have hassles with replying to posts that require me to setup a fairly specific environment before I can reply with a meaningful answer.  I personally hate writing replies to posts that say “have you tried X?”.  I’m trying to reply a bit more to posts. I’m pretty quick to skip over posts where they’re not in my immediate field of expertise, which generally leaves me with very few posts that I can reply to.

Oh yeah – one of my hassles is that I use an RSS reader to read the forums, and I don’t know when a thread has had comments added to it.  (Only new threads are highlighted, and old threads with new comments aren’t marked as “updated”) So I would never have known about this post if Kevin hadn’t blogged about it. (I think someone said I should talk to them about trying to do this, but I forgot who it was or who I was meant to contact… Oops. :-()

4) Are you happy with the choice of leads and do you feel they are doing the right job and their jobs right?
Um… what choice?  I didn’t choose anyone.  Nobody asked me to choose. To be honest, I don’t know who they are or what they’ve done for the community.  I was pretty frustrated by a post I read where the authore was getting upset and scolding the community for not responding to an opportunity when he himself hadn’t responded until the day of his rant.  I was just plain pissed off when I found out that it was a Lead who had made the post.  To me, that’s the wrong attitude for a lead to have.  If I judged all current leads by that example I’d say they all suck.  If I’d had a choice in who became lead I’d probably be pissed off at myself for choosing someone who didn’t have a good attitude towards the community.  But I didn’t have a choice, so I got pissed off with him and with whichever dictator it was that put him in “office”. 

I use the word “dictator” on purpose because without community input in the process of who gets to lead you’re asking for BIG problems.  I admit that we (the community) are possibly not the most informed people as to who is making an effort and who would make the biggest difference, so sometimes we will choose badly.  But that’s how community works.  I know we can’t make this a whole “political” thing, but if the current leads were to profile 5 potential leads, list some of the things they’ve done, etc, get votes from the community and then go away and use those votes to help decide who they’d make a lead, that would be cool.  (i.e. They just use the votes as a guide – but they’d have to make it VERY clear that votes are just guidelines and not directly related to who becomes a lead)  If the community voted greatly for Mr X, but the leads (with all the extra information they have at their disposal) think that Mr Y would be better suited, then maybe they should put make them both leads and just dish Mr Y more responsibility.  That way Mr X has a chance to shine, and a chance to learn the ropes before we end up with a situation where the current leads leave and appoint new leads to replace them who have very little experience in leading the community (things like which contacts have been established with company’s and what resources have been given to them to use.

Having said that, I’m highly impressed with the new leads in Gauteng – we’re actually having meetings again!  And not just one meeting, but they’ve been planned for months in advance, which is AWESOME because now I can arrange my schedule to fit in with the meetings. (I actually have something on every Wednesday night, but at least now I can plan ahead enough to get someone to fill in for me if I need them to)

(If you read this Simon, don’t think I’m saying bad things about your organisation of meetings without understanding that without you we wouldn’t be where we are now.  When it comes to the people I look up to in the SA Community, Simon was one of the first people who stood out for me.  I seriously don’t think we’d be where we are without the people who laid these foundations. So to all the people who have been involved previously – you guys/gals rock!  Thank you for what you’ve done!  Its probably not been said enough, but you do rock!)

I think lead’s are best “rated” based on what they’re doing in the community.  Ruari and co did some awesome things in Cape Town.  I can’t help but wonder if its a bit of his influence up here in JHB that’s gotten things moving a bit here too.  (Anyone got enough cash so we can pay to get him cloned? :-))

5) Why does toast always fall butter side down?
It does that just to piss you off… You see, I think that butter is actually a highly intelligent life form (well, the milk its made from is the intelligent one). Kinda like the mice in the Hitchhiker’s Guide to the Galaxy. And as such, it had a pretty nice existence inside the cow, so then one day us humans squeeze and pressure it out of its happy home, and then churn it up and whip it and do all sorts of other things to it before we eat it.  So falling butter side down is its one last ditch effort at revenge.

6) What changes could be made that would make you feel more positive about and get you to want to be more involved?
I like what’s happening in JHB right now.  To me, the meetings are more important than the forums. (Don’t flame me for saying that, its just my stupid opinion – you’re entitled to have your own stupid opinion but just don’t force me to agree with it. :-D)

If we could change one thing on the forums, I’d make it so that when a thread had a new comment added to it, the feed would show it as “updated”. (I’m not sure how RSS does that, or how my RSS reader does it, but it would be cool.  And I’d be prepared to help build that if someone would point me in the direction of the code)

My own thoughts
I heard someone say that a fair amount of the discontented people were new members, and Kevin seemed to think that the discontented people were from JHB.

I think we’ve lost a lot of older members in the last year, and I think members who joined in the past few months (from JHB) will have seen a community in transformation and I doubt they’d see the value in it. I think some people have been upset for awhile and haven’t had a space to vent. I think some people have been offended/hurt by the recent changes, and I think some people have been frustrated/ignored in the past and have been offended/hurt because no changes happened.

Unfortunately that’s part of community too.  I don’t envy the leads.  Its not a matter of finding the “middle path” (the one that offends the least people on either side) but a matter of deciding on the “right” path and going for it regardless of the consequences.  Of course because there is no one source of all things right for communities, the leads will have to do their best to find the “right path”. The community will need to support them, and give them feedback.  I don’t think a community is built by the leads.  I think the community has a responsibility to follow the leads, but also to question them when they think that they’re heading in the wrong direction.  If members of the community question more than they follow then they either need to leave the community and find one that works for them or they need to re-evaluate their attitudes towards the leads/community.  The leads need to listen to the community because without a community there would be no leads. (without leads the community would still be there, they just wouldn’t be as strong a force as they could be with the right leads)

With all the change happening it will be all to easy to fall into the trap of “death by over analysis”.  Good starting points are in place in JHB, Ruari left good things in Cape Town, and Durban seems to be going strong.  I know us Jo-burgers like things “NOW!NOW!NOW!”, but it looks like the right things are coming.  I certainly hope that the few good suggestions that come out of this exercise are really listened to.

Geek food General

iMate SP3 tip/trick

I’ve been frustrated that my SP3 doesn’t disconnect from GPRS properly.  Aparently Windows Mobile 2002 introduced the feature that GPRS would remain connected to save time but they introduced a GPRS “inactivity disconnect” feature so that if GPRS wasn’t used for X seconds it would disconnect automatically.

Before I upgraded the software to, the GPRS timeout option seemed to work fine. However now it just stays connected, and the only way I could find to switch it off was to put the phone in “Flight mode” (all the “phone/communication bits switch off” so that it won’t crash planes if you use the phone in an airplane) and then put it back into normal mode.

But with a bit of googling I found out that if you press and hold the “Home” key, it will take you to a quick menu which lets you either disconnect the GPRS or change your Bluetooth settings.  If I hadn’t found that, I was about to try write an app that would disconnect the bluetooth for me.  I’m kinda relieved that I don’t have to attempt that – I’m just starting with .Net CF programming and I’m not keen to try find out what P/Invoke I’d have to do to get that right…

[Update: It looks like good old PInvoke.Net has info for Smart devices too, uber cool! Oh yeah, and I’ve just looked at bits of the OpenNetCF classes and *WOW* they provide a whole bunch of cool functionality!]

Geek food General

Blog comment spam

I’ve been pretty lucky up till now in that I’ve only recieved about 1 spam comment every 3 to 4 days.  That was until yesterday when I got about 5.  This morning I had over 20!

So after a quick e-mail to Armand to ask how he implemented it on, and I was off to, and downloading the assemblies.  Its actually REALLY simple to implement, just edit the PostComment.ascx file in your skins add about 2 lines, and you’re done. πŸ™‚

Development General

My First .Net Compact Framework App!

On Saturday I downloaded Embedded Visual C++ 4, Service Pack 4 for eVC++, the Pocket PC 2003 SDK, the SmartPhone 2003 SDK, the Mobile Application Development Toolkit, ActiveSync 3.8, the Smartphone 2003 SDK SPDPS Update for eVC++4.0 SP4, Windows Mobile 2003 Second Edition Developer Resources, and Windows Mobile 2003 Second Edition Emulator Images for Smartphone.

First of all I just tried downloading the Smartphone 2003 SDK, the Mobile Application Development Toolkit, and the Smartphone images.  I installed them and wrote my very first application.  Unfortunately when I ran it in the emulator, I got a “Not Supported Exception” on the line of code that setup the Menu on the form.  So I assumed that I’d somehow gotten an old version of the .Net CF on the emulator image, but since I’d downloaded all the newest images I was confused…  So  I decided to install the PPC 2003 SDK, and the Windows Mobile 2003 Developer Resources.  But that didn’t help.  So I downloaded the rest of the tools and thought I’d try again.  Unfortunately that meant that I’d have to uninstall all the other tools before I could install eVC++.  And that mission was going to have to wait for another day.

Eventually today I got tired of people asking me “So have you written an app for your phone yet?” so I decided I’d do the installs.  About 1/2 way through the installs I thought “Heck, why don’t I just google for +’NotSupportedException’ +’Compact Framework’ +’Menu’ – maybe someone else has had the same problem.”  So I searched, and I found.

The first result was from a Quick Start on GotDotNet – and it explained everything.  I found out that while the designer in VS.Net lets you do anything you like with the menu’s, the framework is not so forgiving.  On a SmartPhone, you can only have 2 main menu’s, and the first one is simply not allowed to have any submenu’s.  This is the way the UI’s on Smartphones are supposed to be designed so that they remain consistant across applications.  So I understand the reasons, but I just wish that Microsoft would have thrown a meaningful error like “This isn’t supported because the first/left menu on a Smartphone cannot have any sub-menus”.  That would have told me EXACTLY what I’d done wrong!

Anyway, so I quickly swapped my menu’s around so that they fitted in with the “best (and only way you’d get it to work) UI practices”, and voila!  My first mobile application running on my Smartphone actually works.  It simply pops up a message box that says “Hello!”, but its a start. πŸ˜€


A great Unix vs Windows post…

This is one of the most level headed “*nix vs Windows” posts I’ve seen in a long while.  I found it via Craig’s blog.


An overview of the SA Developer User Group meeting – aka I won! I won!

Ok, so maybe my last blog post was a bit premature.  I made it to the meeting only 50 minutes late – just in time for the second session.  Unfortunately it was not very well attended, however that was very fortunate for me.  Because I got asked a question and I knew the answer, so I got a cool book – Microsoft .Net Compact Framework (Core Reference)! I’m not sure who sponsors the books – I’m guessing its Microsoft South Africa – but I’m seriously thankful to whoever it is that sponsored it! πŸ˜€

Mario spoke on Serialization, and the bit that I did see was pretty good.  His code was well done, and he definately knew what he was talking about.  I guess I’d put it as a level 300 talk in Microsoft’s ratings. (I’m not too familiar with what constitutes what level talk, but it was pretty in depth which puts it above a level 200 but not down to assembly code which makes it less than a level 400)  He spoke pretty well – I kinda got lost once or twice but then I wasn’t sure if it was because I missed the first bit, if I was just being stupid, if it was just because it was late at night after a long day, or if it had anything to do with what Mario had said.  I think I might just have to try and get hold of his VS.Net solution so that I can step through all the code to try and resolve the few outstanding questions I have.  (I’m still not 100% sure why the XML Serialization created two identical objects in the one scenario when the Runtime/Binary Serialization didn’t… well, I think I know why the XML did its thing, but I’m so not sure why the Binary one didn’t do it)

After hearing good feedback about Mario’s last talk, I decided to make some mental notes during the session so that I could keep them in mind when I do my talk on Reflection in June.  His code was incredibly neat, well commented and pretty much exactly what I’d like my code to look like.  I think I’d like to use the space we have to present in differently…

There were very few people there, and we all sat in the one half of the room… So from left to right (as you faced Mario) you had Mario in the corner behind the speakers podium-thingy, then a large empty space where the projector was projecting, and then us just right of center.  Now with the late hour and long day I actually found it kinda difficult to concentrate, especially when the podium is kinda in the dark, so its not that easy to see the speaker.  So any time when he spoke for too long my eyes kept wandering towards the big VS.Net that was being projected on the wall – which actually was rather un-inspiring.  I’m not really sure how I’d change that because its kinda a pain to keep changing between VS.Net and some other screen just so that you can answer someone’s question in full and not have their eyes wandering around.  But I think I’d either ask the guys to move over to the same side of the room as what I was standing on, or I would walk out from behind the podium when I wasn’t using the computer. (But then I wouldn’t want to end up standing in the light of the projector and casting a horrible shadow on the screen behind me so I’m not too sure how that would work either)

I must also start practicing so that working on someone else’s pc isn’t a hassle – looking at the size of the font and how little code could fit on the screen, I’d get lost quite quickly.  So I think I’ll do a run through with my PC in 800×600 mode just to be sure that I can have some experience.  (I’m not saying that Mario didn’t do this, its just that I noticed that the screen seemed to fit far less code on it than I’m used to, so I need to be prepared for that)

I also think I’ll try and pre-prepare some questions to ask people before I even arrive at the talk so that it doesn’t become a “Guess which number I’m thinking of” game. (Not that this happened tonight either, but I’m just planning) But this is getting off the point of the post… 

The talk was good, I learned a bit more about Serialization than what I knew before I went there, and I got to chat to some other developers.


Media Sharing…

Ok, so this blog comes out of some selfish motives…  I found out what book is being given away at today’s SA Developer user group meeting in JHB.  Its one that I’d really like to read, but I’m probably going to be very late and even if I did somehow know the right answers I probably won’t win it anyway. (The question they ask is usually related to the talk, so if I miss a bit of it I might not know the answer when the question is asked)

So… That got me thinking.  I have books that I’ve not read, or books that I’ve read an age ago but haven’t read in the past while.  I’m sure that other developers are pretty similar.  Wouldn’t it be nice if we could pool our book resources… then any of the developers in my area could see that I have “Writing Secure Code 2nd Edition”, and one of the Microsoft “Patterns and Practices” books sitting at home, and if they wanted to read one of them, I could lend the book to them.  And if I saw that someone had a book on writing code for the .Net Compact Framework (which I do want to read about since I just got a nifty smartphone) I could ask them if I could borrow it.

Then I remembered a site I heard about an AGE ago that did exactly this… I joined but it had very few south african’s so it wasn’t much use.  But what if the SA Developer User Groups joined and put up their personal libraries to be shared.  Since most of us either know or know of most of the other SA Developers it would be a fairly low risk loan process.  So here’s the idea… if you’re keen on sharing DVD’s/Books/Music check out MediaChest!  They already have groups for Johannesburg and Pretoria/Centurion.  (Currently there are 2 people sharing in each group – me and one other guy who I’ve never met) But if we could get the SA Developer User Group to use it, we could have a great set of Developer resources, and non-developer resources too!

What do you think?


I got a new phone…

I’ve been a bit too lazy to post about my phone.  Its one of them new fangled Scoblephone look-a-likes.  (I’m not sure who started calling it a scoblephone, but a google search for “Scoblephone” returns 166 hits.)

iMateMy variation is the iMate SP3 (Which is sold in SA via LeafWireless).  I got it from NashuaMobile, and its free on the MTN ProCall 120 and higher.  Its pretty darned awesome!

What’s uber cool is that I can write apps for it using the .Net Compact Framework, and Microsoft have a bunch of Tips/How To/Help on the phone over here.

Unfortunately, I haven’t quite gotten all the right SDK’s and other stuff installed on my PC yet, so I haven’t written my own app yet.  (I tried running an app I “wrote” and I got a “NotSupportedException” thrown back at me – the app was just the default SmartClient project, with a button on it that changed its label.)  But I did upgrade its OS – iMate’s support site had a new version of the OS that included a Java runtime, and fixed one or two bugs.

The phone is only meant to have 2 games on it (Jawbreaker and Solitaire) but it came with about 9 games. (My wife loves them) So I was a bit worried that when I upgraded the ROM I’d lose the games.  However, iMate have a 2nd Update that says something about Games and Ringtones and right at the end of the blurb it says something like “For South African phones only”… That update is called something like “MTN_SA_V33….”, and it includes all the Games that MTN pre-install, and all the various settings for MTN. (Although it did manage to setup my MMS incorrectly – all my MMS’s were trying to be sent via the wrong connection and so they were failing to send)  I’m pretty impressed with MTN because while I was searching to try and find the games, I found the game developer’s website and the games that MTN included for free would have cost me over R200 to buy on my own!  Thank you MTN! πŸ˜€

iMate also have a couple of freebie games you can download, and thanks to some foresight of my own, I took advantage of Handango‘s special at the end of last year where they gave away a free app each week, so I got some extra games and some useful apps.  I then did a search for a particular WAV file that I wanted to use for my new e-mail alert (Its the Monty Python/Holy Grail sound clip where the guy gets shot by an arrow that has a message attached to it and you hear “<sfx of arrow hitting something> … Message for you sir”) and I found a whole bunch of cool message alerts.  So I now have Lt Worf announcing “Captain… incoming transmission” when I get an SMS, the default AOL “You’ve got mail” for Voicemail messages, Monty Python’s clip for e-mail, and a guy yelling “WOOO HOOO!” for when I get an MSN IM. My whole office now knows that I have a cool new phone! πŸ˜‰

ActiveSync is amazing too! Its just so easy to setup and to keep all the contacts/appointments in sync is a breeze.  And if all that wasn’t great enough, they included a copy of Outlook 2002 so that I can install it on my home PC and have my phone sync with that.

I have Office 97 at home – I’ve had no reason to upgrade since then.  Outlook 97 is not supported by ActiveSync, and I refuse to use it beacause its a piece of junk even when compared to the current version of Outlook Express, and Thunderbird kicks Outlook 97’s ass so I use Thunderbird instead.  But now I might actually move back to Outlook since I’ve got a copy of Outlook 2002 for “free”.

Oh, and check out AndrΓ©’s blog entry “Time to Upgrade my phone“… I wish I could justify getting the ProCall 300 contract (Its just too expensive, and I’d be wasting about 100 minutes a month) – coz I’d have LOOOOOOVED to get the iMate JAM.  (I’ve 1/2 written a post about “Tech Lust”, which I started last week some time, I hope I’ll have the time to finish it soon coz the idea has been bouncing around in my head for a few weeks and I’m getting kinda sick and tired of having to clean up after it ;-))

Development Geek food General

Go #Develop!

I got an e-mail from #Develop this morning that said the following:

To whet your appetite for the upcoming Beta of #develop 1.1, we have created a Preview Release (not quite unintentionally abbreviated to PR). It is not as stable and feature-complete to label it a Beta, but it comes loaded with a couple of new addins that definitely make it worth a look (or two). In that vein, we have provided screen recordings of how to use those new features, please see the links provided.

Demo: New Help System
Demo: XML Editing Features of #develop 1.1
Demo: NAnt Integration
Demo: PInvoke Addin
Demo: #report
New and noteable: InitializeComponents method readonly

I took a look at the #report demo, and it looks quite cool.  They’ve done a lot of work on #develop since the last time I took a good look at it, and its actually quite a cool system.

PS: I’m pretty sure that .Text will mess up the formatting of my blog when I post this because for some reason Blockquote’s always seem to do that, and I always seem to forget how I fixed it the last time I had problems with block quotes…