Mobile Weekend is revived!

Well, after a little bit of a break, Mobile Weekend is back on track. Another person on the organizing comittee, a full sponsorship/info package, and a little determination has brought this project back out of the dark!

You can find the blog over here for all the MW info :-). Entrepreneurial at heart? You need to check this event out!

Widescreen? Then why doesn’t it fit on my screen?

Random rant:
When a movie is “widescreen”, shouldn’t it fit on my widescreen tv? Now, I’m not an expert in this field but I have an average customer of the technoogy so would someone please explain this weird “super” widescreen they have?

Anyway, I just wanted to bring it up :-)

Breaking Through Preconceptions

Today I went to my first conference — the Communitech Tech Leadership Conference. While it was pretty much exactly what I suspected it would be like, they had a couple of fantastic speakers. The first was Chris Anderson, Editor of WIRED magazine discussing the concepts of his new book “The Long Tail” - A very interesting look at the new marketplace in the world and how the internet and the online medium is completely revolutionizing the economic model. I actually think I may buy his book…

The second was Chris Sacca, former Head of Google Special Initiatives, blogger, activist, venture investor and advisor. He had a direct role in introducting Twitter and I managed to stay behind after his keynote to discuss some Mobile Weekend points. Now he’s just waiting for our documentation :-).

His keynote was probably the most refreshing presentation I’ve seen in a long while. He basically discussed what he learned while working at Google and listening to him dismissed a lot of preconceived ideas I had about Google and the way they ran their business. See, I always thought Google offered a whole bunch of perks to try and keep employees in the office longer. You know, to try and squeeze all the they can out of you. Naturally it would make sense to assume that the longer you’re at the office, the more likely you are to punch out more code than the guy who left 3 hours before you but you’re forgetting a very important, yet overlooked point that Chris spotted.

In a given day, how much of your time is dedicated to actually working? 100% pure quality I-got-all-my-attention-on-this working? And don’t fool yourself. Chris pegged it at about 1.5 hours in your 8 hour day and when you stop to really think about it….. he’s right! Statistcally, a developer produces 15 lines of usable code everyday so the 1.5 hours of work you put into those 15 optimized lines seems to make sense now, doesn’t it? By offering all the perks it does, Google is merely trying to make sure that those 1.5 hours of productivity happen while you’re actually at the office and if you’re in an environment that accomodates your needs, you’ll be far more likely to be productive. Really, it comes right down to common sense (and money)…. but mostly common sense.

Based on his Keynote, you can realy see that Google’s main train of thought was this:

  1. Find a problem. And not just a small but a REAL problem
  2. Find a solution to the problem putting the CUSTOMERS’ needs first
  3. Money will come somehow

Did you know that when google was starting to do web ads in 2000 (while it was still a startup), it would terminate ads that were getting a <0.5% click through rate. It’s important to note that, at the time, the industry average was 0.1%…. Google didn’t want their users to be bombarded with ads that didn’t matter to them and 5 times the industry average was just not good enough to make the cut. It wasn’t satisfying the cutomers’ needs.

These are just a couple of examples, but I could probably write a short book on how that presenstation really opened my eyes. You can follow his twitter here or his blog here

Either way, I think he’s worth keeping an eye on. All in all the conference was a good experience and getting in for free made it that much better :-). I’d reccommend it if you can make it out next year.

What the Hell, guys?!

Remember “Fight Club” the movie? Rmember how you turned to your buddy and whispered “those guys are messed up…”.

Well, never underestimate people.

http://sports.espn.go.com/broadband/video/videopage?videoId=3361421

My First Real Conference

So, tomorrow is the Communitech Tech Leadershipt conference and I’m going! For free! Take that all you people that paid the 300 dollars to go!

See, as a student, I get in for free….. stay in school, eh? Anyway, I’m pretty excited. I’ve never actually been at a conference before so I have no idea what one is like. It starts at 8 am and ends at 4 with breakast and lunch provided…. not bad I think. I’ll be sure to post what it’s like.

Retraction…. of the AJAX kind

Ok, I have to get this out there….

A long time ago, I came up with a back alley when of dynamically adding tabs to a tab container. Well, it turns out I also found a way to actually add tabs WITHOUT actually knowing how many I needed. In short, I was building my entire page dynamically at Init based on some session variables that stored the number of tabs I needed. All in all it was pretty cool but it made me realize something that I think the world should know:

If possible avoid using the AJAX control toolkit, at ALL COSTS. Sure it’s cool and look all the pretty things I can do but it’s slow and very high traffic. If you want to do the cool things it does, I would use the AJAX Extensions class and write the rest myself. It’s sounds like a bad idea and a lot of work and it is. But TRUST ME, it’s well worth it.

I just try to find different ways to provide the same user experience in the end. The big downfall with dynamically generating all the controls at Init was after you added 3 tabs, the site really started to slow down and the user experience is just thrown out the window. I managed to achieve the exact same experience by replacing the tabs with entirely seperate pages and just managing a dynamially created menu control at the top of the page. So now, we have a much better performing site with code that’s WAY easier to manage!

*Removes Cobwebs*

So, it’s been a little while it seems…..

Well, I’m back. Let’s see what’s cooking.

I did it. I made the reverse Mac switch. You know, the one you don’t hear about very often because it’s kept under wraps so well! I used to be a mac guy. A pretty hard-core one at that too.

I used to be the worst kind actually. I was the one that, no matter how awful a mac product was, I would find ways to make it better than whatever else it was competing with and I was good at it. Well, until the iPhone came out… then I really didn’t have much going for me.

So here I am, typing this from my new Vista-loaded PC, reminiscing about the good-ol’-days when Apple made quality products. I’ll admit it, I own two mac laptops: a powerbook G4 and a macbook. The powerbook is 4 years old, has been dropped down s flight of stairs, always kept on (or on standby) and it works the same as the day I got it. My Macbook, however, is pooched at being 1 and half years old. I figured “Why get the warranty since my other mac is so awesome?”. Well, now it’ll cost me $700 to fix the Macbook or I could go and buy a new computer for $800. I think it’s a pretty easy choice.

Unfortunately, I need windows for my development endeavours so a PC seemed to be a better choice.

You can already start to see the decline in quality of Apple products. And by quality, I don’t mean how shiny it is. I mean how functional and stable it is. Look at the iPhone…. I mean, it’s pretty but did you know that it’s not a multi-thread capable device. It only runs one application at a time!! What good is that? And safari 3 was a winner wasn’t it? I had it on my computer for all of 25 seconds before it crashed….. 4 times in a row. Apple is so concerned about getting their innovative products out to the public before their competition that they seem to be forgetting the most important thing about creating a successful business. Write this down if you have to.

No matter how amazing your product is, it’s only has good as it’s support structure. A product is ALWAYS half tangible and half intangible. What happened to you Apple? I’m sorry, but the shine is definitely no longer on you.

Ok, Now I’m Excited!

Anyone else looking for to Indiana Jones and the Kingdom of the Crystal Skull? If not, check this out and get back to me….

It’s the first officially released trailer for the film premiering May 22.

Adding Tabs to AJAX Tab Container

I like the AJAX Control Toolkit. It provides a lot of cool functionality that’s great for low/medium weight apps. That said, getting it to do stuff that isn’t straight out of the box can be a pain sometimes.

I use the tab container and I wanted to give the user the option to add a tab to the tab container dynamically at run time. Adding a tab isn’t the problem, it’s adding the content that’s tough.

Adding a Tab:

TabContainerName.Tabs.Add(new AjaxControlToolkit.Tab);

TabContainerName.Tabs[TabIndex].HeaderText = “Whatever you want here”;

The content of each of my tabs involves quite a bit of elements though, each of which need to be replicated and made unique so that I can access them programmatically later on. If you have this problem, you’re faced with writing a reasonably complex control to “extend” the TabContainer control so that every time you add a Tab, it’s a pretty straightforward method call.

OR

You can cheat like me. How many tabs do you need? If you know the max count of tabs, you can load the max number at load time and only make the first one visible. Then, every time the user click the “Add Tab” button (or whatever you have set up to add a tab), you can execute a very simple bit of code to “trick” the user into thinking they’re actually adding a tab.

int numberOfVisibleTabs = 1; //Since you start with one tab

Public void btnClick(blah blah) {

int maxIndex = TabContainerName.Tabs.Count;

for (int i = 0; i < maxIndex; i++) {

if (!TabContainerName.Tabs[i].Visible) {

TabContainerName.Tabs[i].Visible = true;
numberOfVisibleTabs++;

}

}

if (numberOfVisibleTabs == maxIndex)

btn.Enabled = false; //To prevent a null pointer when the user tries to add too many tabs.

}

}

Now remember, I don’t have my code in front of me so I’m writing this with no testing or anything but you should get the idea of what I’m doing. This is a QUICK and DIRTY solution but it works. You can further improve the user experience by putting your tabbed interface in an Update Panel Control so that the postback of each “addition” won’t re-load the whole page.

There’s a Reason Why People Don’t Use VB.net

It sucks! Probably the most non-standard, childish language I have ever come across.

Here’s a list of the absolute dumbness that is VB.net. If you’ve developed in something other that VB.net, you’ll see exactly what I mean.

Just a few examples:

C#:

  • array_name[element_number]
  • variable = new Integer()
  • list = new ArrayList()
  • public void methodThatDoesNotReturnAnything(Parameters)
  • public String methodThatReturnsString(Parameters)

VB.net:

  • array_name(element_number) –> Roud bracket!?!?!? What the hell?!
  • Dim variable As Integer –> Notice no constructor!!
  • Dim list As New ArrayList –> Again, no constructor!!
  • Public Sub methodThatDoesNotReturnAnything(Parameters)
  • Public Function methodThatReturnsString(Parameters) As String –> VB has 2 different signature styles depending on if the method returns something! Why?

For a full list of differences, checkout this helpful reference.