Web X.0 is in effect! Cross Site Scripting and the new dev order.

After doing some research into cross domain scripting to allow injecting content from one domain to another I cam across two interesting articles. One was regarding the new XDomainRequest object now available in IE8 (http://msdn.microsoft.com/en-us/library/cc288060(VS.85).aspx) and the headers that FireFox has added(? you can add headers without consulting the w3c?) (http://ejohn.org/blog/cross-site-xmlhttprequest/).

Now this is all groovy and everyone is excited. The fireworks are going off, finally we have an answer to a nasty problem! People are singing in the street, hanging out windows smiling and dancing away.

Then comes along little old me. The profit of doom. The realist, the guy who makes the dreams and ideas of business a success or failure. The little monkey who sits behind his desk coding all the business ideas. While I agree it is exciting, I get a little nervous. These new feature sets are only supported by the new browsers, and I mean brand spanking new. Yes one day they will be old but right now they are new. Many people in 1st world countries update their software and hardware more regularly than they change their underwear. Out in the 3rd world countries like South Africa we still have people running Windows 98 with Internet Explorer 4, or Netscape Navigator. Yeah laugh it up and tell them to upgrade. No seriously though, I know business needs to make decisions and people need to keep up, the problem is the trouble you have to go through explaining the issues to business. Inevitably business will tell you to hack a fix together because 95% of their customer base is running Windows 3.11 and Internet Explorer 0.1a. To that I generally reply that the mechanisms for achieving what they want will have to be re-looked at.

The nastiest case is when business has already decided your platform and delivery mechanism. Then heads roll, tears flow and fingers bleed while trying to hack around new technology implementations. Anyways to cut a long story short I worked up this dialog.

[A white walled office with two executives enjoying a cup of coffee and a discussion on what to do next after researching facebook]
Business guy 1: "Ah cool! we can start consuming resources form other domains!!!!"
Business guy 2: "How do you know this?"
Business guy 1:  "I read about it on facebook"
Business guy 2:  "Ah ok, it must be true then"
Business guy 1:  "Cool get the developers to start consuming the other sites"

[Business guy 2 runs to the project manager and gives him the great news. The project manager gets so excited he shaves weeks of the development time to try and get that bonus the business guys promised him should he start getting projects in before the scheduled deadline]
Project manager:  "Right guys you got a week to over haul our faulty, rickety, bug prone website written in out dated languages and glued together by a number of applications on the server doing file replication and downloading using CSV files ever 24.34 minutes. The best part? you get to rebuild it using this glorious new technology! Right, now that everyone is excited, how long you think it is going to take?! “
Mike *in the background* : "2 - 3 days"
Project Manager: "great do it!" 
Me: "ummm, what about older browsers? They won't be able to support this"
Big Boss: "I don't want problems, I want solutions. Now make it happen!" 
Me: "Ok, maybe I didn’t make myself clear when I said '"’won’t be able to support this’, the older browsers DO NOT support this."
Big Boss: "all you ever say is can't can't can't!"
Kenneth: "… but ... "
Skulkinator: "why don't we just write our own browser that supports everything! That way we can take over the planet when we launch it and not have to worry about updates because the updates will be done via the website every time it renders a page, we will call it “Just In Time Page Renderer or (because we in South Africa and love acronyms so much) JInTiPaRe. So we control the web and no one else will use any web browsers because they can’t because we will rewrite the HTTP protocol to suit our specific needs!"
Big Boss: "Yes! Answers! I like that!" How long will that take?"
Mike: "2-3 days"
Big Boss: "Yes! You guys are legends! Do it!"

[ Gun shot rings out *BANG!* ]
Big Boss: "What was that?"

[Team runs off screaming like girls, while I lay in the corner with a big hole in my head]
Big Boss: "Clock is ticking guys! Get on it”
Devlin *mumbles* : “Any one got a spare bullet?”

I am pretty certain you get the point and as if HTML 5 wasn’t enough to worry about, now we got this puppy. This is just a dramatic reaction to something really unimportant and not a cry for help or anything like that, please relax. I am not going to do this at home or work, I listen to the WWE wrestlers.

Happy day to you and yours :)

Tags: , , , ,

IIS Rewrite ISAPI filter

Well I was asked about creating search engine friendly URLs in ASP 3. Now I know that natively ASP 3 doesn’t support this and it would probably require some sort of com component or isapi module so I did some searching too verify my thoughts.

In my travels I came across http://iirf.codeplex.com/Wikipage. Seems to be a fully featured mod_rewrite for multiple IIS version. It is native code (unmanaged) so no dependency on the .NET framework. It supports regex and a whole host of things and best of all it is an IIS filter which means it can be used across multiple scripting languages hosted in your IIS instance. PHP, ASP, Ruby On Rails, ASP.NET etc.

Tags: , , , , ,

The internet has it’s moments.

Well I remember a little application called blender when it was but an infant. Pre version 1 release and was a great deal of fun to mess around with. 3D render was cool when you have always dreamed of doing things like that. I am talking round about 10 years ago. Incredible how tie flies.

Anyways back to the post. In my travels across the internet I came across little blender again. Although now it is not so little! With the little bit of browsing and playing I have done with it, it is becoming a fully fledge 3D animation studio and the best part? It is free. No really it is. They happily accept donations but you don’t have to pay a cent to get the software. I have no idea how the project is funded but what I did really like is the community around the project.

I have never heard of the concept of “open movie” and initially thought it to be a piece of software but it is something very different. I am no expert in it but what it seems to be is a community of artists (3D, video and audio) who get together and create a movie using open source technologies. (I personally would like to know what video editing software they use because I haven’t found any open source ones.) This sounds really cool but what I think is the ultimate is that they distribute certain assets of the movie. The one asset I saw them sharing was the 3D models from the movie. I personally recon this is brilliant. Characters now have the ability to live outside the context of the creating studio, there by giving them a life of there own. So often guys have had to take screen shots of videos and then edit them specifically to give the illusion that they might be in a different scene. Now you can do that yourself. Take the character and recast them in a different movie. So now the 3D characters are just like real life actors without out the attitude and enormous pay cheques.

Well don’t take my word for it but rather check it out at http://www.blender.org . It really is a worth while way to spend 15 minutes and perhaps far more time if it is your thing. I personally have an idea for the software already. Big thanks to the guys developing this software. Your time is appreciated more than you can imagine.

Tags: , , , , , , , , , , , , , ,

ASP.NET MVC 2 Released

After much waiting and debating as to whether or not I should install the ASP.NET MVC 2 release candidate for a project I am working on (we all know what happens with Microsoft release candidates) I decided to install it.

While search for the download I came across http://weblogs.asp.net/scottgu/archive/2010/03/11/asp-net-mvc-2-released.aspx which indicates that it is release to manufacturing. HOOAH! Well time to get it and get cracking on the upgrade. Good job to the ASP.NET MVC team. Keep up the good work.

Tags: , , , ,

How to make an idea a reality

Well I thought I had a fantastic idea today. Then I started trying to explain it after having thought it out in my head and on a white board. While the words were coming out of my mouth the world stopped spinning and CO2 started building up in the room. Due to the lack of gravity because the world stopped spinning the blood flow to my head stopped and everything that came out was jumble.

I have never been a good sales men, honestly I haven’t. I have plenty of ideas and they all sound great but never get implemented. Well after reading this article I can’t help but see the flaws in my thinking and I will be most definitely the last one to sprout an idea in general conversation from now on!

Tags: , ,

Friendly fire, isn’t

In recent events in my life and at work I have gone through quiet a change in my thinking. I would class it as a growth spurt.  A confirmation of the Lord working in my life due to the way I handled the situations.

While driving home this evening I was thinking through the events of the day and the events that have transpired over the last 6 weeks. The way frustrations have reached boiling point, how slowly a group of people can reach a critical mass and our inability to acknowledge that even our leaders / bosses are human.

How a dirty channel of communication can lead to mixed signals. How selective hearing can lead to dangerous interpretations and how quickly misunderstandings can turn into a festering puss infected wound that only heals when it gets lanced and bleeds out. Disgusting comparison you might think but in all honesty I think it is probably the least disgusting example I could find as opposed to what it really looks like.

Anyways, on my way home I started thinking “team”. Defining what a team is and in my humble opinion a team is a group of people focused on a single objective and working to one another’s strengths while compensating for one another’s weakness’s by additional effort. A single unit, driven to completing the objective. The satisfaction that people get from team work and the end result varies and why they get that satisfaction probably varies even more but there is a degree of satisfaction. A team is not a group of people sitting together enjoying casual conversation and passing jokes. It is a dedicated group of people focused on achieving an objective and actively striving to be the best at what the team does.

Now that sounds cool and I can hear everyone going “hear hear!”. There is an element I haven’t mentioned and you probably going to swear at me when I say this but I am going to say it anyway. With every team comes a leader. Teams need leaders, every member of a team might be a leader in their own right BUT the team needs one leader. Now what we often forget in our pursuit of excellence is that our leaders are fallible too. That they make mistakes. Next thing, the team leader is also a member of the team. They are on the same side, after the same objectives and get the same amount of satisfaction from seeing the team succeed as the other team members do.

That being said, if a leader is not fulfilling their duties to the best of their abilities according to our standards, why do we not assist them? Why do we not carry their weaknesses as we carry our other members weaknesses? A team can only succeed with a strong leader and a leader can only be strong with his team behind him. This applies in corporate environments too. Lets direct the fire where it is required, at the targets and objectives we strive to eliminate / complete, lets not turn it on ourselves or our team members. If a team member, including management, is doing something wrong, handle it graciously and openly. Let them know the same way that you must be prepared to be told when you are not measuring up. Just like paying your T.V. license, it is the right thing to do.

I got a good feeling about my team after the events that transpired today and by God’s grace we will fight through our projects and produce results that set trends as opposed to following them.

Lord bless.

Sometimes we are too smart …

for our own good. No seriously we are. Think about it. The concept of nuclear fission led to what? That’s right, the atomic bomb! The development of gun powder led to? The primary weapon of choice becoming a barrel firing a projectile as opposed to a sword.

The advent of the internet led to? A massive unstoppable advertising billboard of which +/- 90% of all traffic is spam. World war 2 led to the development of fuel injected engines, radars, nerve gases and long range rockets/missiles. Medical research led to the creation of biological weapons. Electronics led to a plethora of devices now running our daily lives.

I mean come on. Surely someone has seen the gap between science fiction and real life closing. The horror stories depicted of the lose of control when machines become self aware (can anyone say Sky Net?). Yet we still consume, eating it up, funding our own destruction. After reading this article I can’t help but feel it is time to stand back and say “enough is enough. We have a technology stack that we are only using a small percentage of, lets focus on milking that as opposed creating new stuff”.

I mean honestly, are we that blind? Some things are just better left alone, this is one of them. Turn machines into self aware killing machines so men don’t have to fight and men will end up fighting the toughest battle of their lives. Yes laugh it up, call me paranoid but 50 years from now when people are rummaging through the junk that was the internet they might find this and wonder why no one else saw this coming.

The polymorphic data structure

Is there such a thing? Currently I am faced with the challenge of producing a system that contains similar yet different data structures. Now the data structures are similar enough to warrant a feeling of “I am repeating myself here” but different enough to go “there is no ways I can wrap this together”.

Now there is a data structure that allows this. One that recursively joins itself allowing the extension of itself as needed. The problem with this comes in representing the data structure as the different objects it is or possibly could be. This is were relational data stores fall to pieces. let me try explain why. They are rigid. Being rigid they are difficult to change without redeploying or making changes to the overlaying code or data mapping.

Now I hear you saying “what about key value pairs”. These work well. With the project I have just finished on in the R&D team I work with we mapped concrete types to an abstract data type quiet successfully. The problem comes in reverse relationships and the fragile nature of the data. One value pair goes missing the data is effectively corrupt. So nice idea, really nice implementation. Extendable but just not what I am looking for.

The next option is also a pretty neat one, but not one I am totally convinced by yet. It is an XML type data store using XSDs to define the structures of the data types. This is slightly more stable in that validation of the objects can be performed before saving if data goes missing it is the entire object data set that goes. No one wants data to disappear but stranger things have happened.

So as I sit here with my Enterprise Architect open, the point of this blog is pointless. I was hoping that by explaining the problem I might come up with a solution. Perhaps some quiet time in the garden is in order :)

Tags: , , , , , , ,

We have come full circle!

Wow I honestly never thought I would see the day that our web development comes full circle. A huge drive to pull people into RAD type web development using tools like Visual Studio and ASP.NET has left a plethora of unwanted, ugly web applications on the inter and intranet. Applications that were stuck together by code samples and !PostBack checks. These sad applications where pioneers though. The road to web 2.0. The big 2.0! I mean the internet has been around for years and the web is only on version 2? What a crock, sorry, I just think it is. For some reason we have this need to version things, probably so we can measure progress. Kind of feeble if you ask me but moving along.

Coming from a PHP background I had experience in the XMLHttpRequest thingy-ma-bob now referred to as AJAX. So then I shifted in development with the C# and ASP.NET. Hacking, licking and sticking and fighting all my urges I continued to ugly ASP.NET way of developing web applications. Then came along ASP.NET MVC. Finally! Something we can work with!

So in my bits and pieces investigations into this new framework I came across JQuery. Well a very handy JavaScript framework that makes interacting with the DOM far easier. Now this is where things get really interesting. While reimplementing a front end I have done for a project I am working on I started digging deep into the JQuery framework and started noticing strange things. Validation routines that looked similar to ones I wrote 10 years ago, traversing forms, checking response text from Ajax requests. Then it hit me! Nothing has changed, absolutely nothing!

We might have slightly better ways of doing things now but the premise is the same. Don’t get me wrong, I am happy that control has been given back to the developers but really, where the heck did it go wrong? The trends I generally notice in software is this. The new technology comes out, people write frameworks for it, n00bs leverage off the frameworks destroying the framework and then the technology proficient people rewrite it.

I mean honestly. Has there been any technological break through in the past 10 year? No, I do not mean a new gadget, or another social networking site. These are not a break through. They are merely software products leveraging if existing platforms. There has not been a significant break through in years! Nothing, nada, zip, zero, ziltch. It appears that with the highly successful social network applications that people no longer want to progress technology as opposed to leveraging off the data mining and marketing opportunities available using these platforms. It is no longer the art of development as it is the rolling out of reams of code that stop gap and facilitate data mining off these frameworks. No longer is development a craft, it is a production line. Screw on the toothpaste cap and let it go out the door.

I see a future though. One day all the hype is going to collapse, the sun will rise from behind the smog caused by the coal burning social platforms churning out zombies. People will awaken from the sleep, rubbing there eyes and looking to the sunrise as the true developers march forward, clearing the way and making the internet a useful network again! Yes I know it is dramatic but you gotta love it! HOOAH!

You can’t really understand …

What is it like to be responsible for a family till you are. A wife is not a girlfriend, your children are not pets. NOTHING is more important than those two entities when you have them. The become the epicentre of your world.

When ask to make a choice between your wife and your work let there be no mistake that you will choose your wife over the work. If you don’t then you need to ask yourself what is more important. Your office / work place will not miss you when you are gone. They will not wish they had just one more day with you. Your wife will. You need to ask yourself what she is going to miss when you are gone.

When asked to choose between the drinks out with the boss and work colleagues or the cricket match your son is playing / ballet recital your daughter is doing, I pray you choose your children. They too need you more as a father and dad than you will ever know. Fathers are heroes! Strong, infallible and ever vigil.

Let us be men, step up and lead, train our children in the ways of God, how to be merciful, how to be just. Time to be fathers, to assume our position as hunters. The world needs proper men, not fast talking, smooth operators. Put the Lord first, your wife second and your children 3rd. Work is a distant 4th.

Lord bless.

Tags: , , , , , , , , , , , , ,