Fellowship vs. Followship!

Since i’m coding with Microsoft software development stack for years, recent days i’m very confused with my observations about Microsoft’s new technologies and returning reactions by it’s communities.

The god: Microsoft

The big picture what i see is; there is a world of wonders which has a god (Microsoft), and prophets (Scott Guthrie, Scott Hanselman, Rob Connery : The last Prophet :) etc.) and we all the creatures. We are all crying out to our god:

God:

- Hoo Hoo hooo, give me your soul poor man, i will bless you. With your $acrifices, i would be appreciated.

Prayers:

- oh my god, please please give me food, i gave you my soul already, please give me some more.

Among all these my posts below in the blog, it’s interesting that why i’m talking about like that for now? Nowadays, everyone is aware of the ASP.NET MVC framework you know and all the Microsoft folks waiting for it in a lather (sadly me too!). Every other’s blog which i get in, get me out with the comments like

# re: .NET Web Product Roadmap (ASP.NET, Silverlight, IIS7)
Thursday, November 29, 2007 1:39 PM by Wallstreet

Give me silverlight 2.0 or give me death!

comment on Scott Guthrie’s “.NET Web Product Roadmap (ASP.NET, Silverlight, IIS7)” post

Kevin Isom
October 19th, 2007

But in saying all of that I can’t wait to get my hands on the MVC stuff as well.

comment on Rob Connery’s “Have We ASP.NET Geeks Lost Something?” post

These comments describe what i exactly trying to mention. I called this “followship”. We all ms guys playing around with the toys that Microsoft gave us. Everyone in the community looks for Scott Guthrie’s mouth for any lips movement. We are greedily waiting for MVC ctp deadline, when we eat it, our god will feed us with an another toy. What’s new here? MVC patterns exists for years and when Microsoft implements it it becomes one of holy grails. The followship buzzword sits on the right meaning for Microsoft community IMHO.

Then what is “fellowship” ? I won’t describe the the meaning what i load to, But i’ll gave you some steps to open your wings to gain full freedom and to open doors to no headed community.

  • Get you pc Ubuntu/Linux installed (or any other popular linux distro)
  • Open your distro’s packet manager.
  • Get your distro Apache Http Server installed
  • Get your distro Eclipse installed
  • Get your Eclipse PyDev and CDT plug-ins installed
  • Welcome to the fellowship of the free software

All you need to develop really real world software is on your hands for FREE even in enterprise solutions. Take it so:

  1. Do you need speed? No doubt : take C programming language, learn it, experience it, tool it for you box, in Eclipse IDE with CDT plug-in.
  2. Do you need efficiency? No doubt : take JAVA programming language, it won’t hurt you if you already code with C# also it has extensive Enterprise Frameworks like Spring, Struts and Eclipse IDE is the hometown for JAVA.
  3. Do you need productivity? No doubt : take Python programming language, learn what it can save for your life time, again in famous Eclipse IDE with PyDev plug-in.

The all stack comes with real cross-platform comformance, they are not built for a specific platform like IIS or Windows api. They can extend on free Apache http server which works on all platforms, they can extend on Gtk+ GUI toolkit which works on all platforms etc. etc. etc. Give them a chance and with your individual skills you should be number one coder and developer with community support, GPL support :) and freedom support ;) Believe in that here no one expects nothing from someone except some help without get paid.

Anyone may vary easily in his/her thoughts, so do i. Give a try for steps i pointed above, you’ll be exactly excited for only in 7 hours… From now i’ll hold this stack with my right hand and swap my Microsoft related (really experienced) knowledge to my left hand.

And it’s time for you to face with your own realities…

kick it on DotNetKicks.com

Auto Generate Web Service Proxy With Intellisense Support

Here is my work that auto generates a web service proxy into an assembly with a BuildProvider implementation. It’s a protoype, the rest could be implemented in your own way but it is surely working as it is (i won’t develop it further). Once it is built, the c# code wrapper of web service description generated and compiled into memory (infact into an assembly in asp.net temp directory), so you can use intellisense support of Visual Studio.

It could stand as an alternative for wsdl.exe tool of .NET Framework sdk or Visual Studio’s web referencing feature.

I won’t describe the code one by one, you can watch the poor and short video below and download the project source code at the and of this post to digg in somemore. It can cause reinspirations nicely, if you catch one please let me know, i would like to help. So enjoy it!

P.S: If you have interested in SubSonic project which is exactly popular nowadays, this work inspired a bit from it.

Download Project Source Code

kick it on DotNetKicks.com

A Brief Video Showcase For My CMS Project

Finally, for a few weeks ago my company’s CMS project named ‘WebSayfam’ released locally for Turkish folks. The video below describes briefly on the fly page editing work flows (Interface language is Turkish for now).

Some of the core features of this project are:

  • On the fly page editing, by ‘remind me’ option.
  • SEO friendly URLs
  • One application, multiple domains (does not require installation per domain on the web server)
  • Enchased content module api (only implement IModule then deploy it)
  • Fully flexible template access ( can bu user defined) and multiple template mastering.
  • Template changes do not cause content lost. Only the look and feel changes.
  • Drag ‘n Drop content replacement, fully integrated AJAX content management on the fly.
  • So so so, i don’t want to advertise this product, i only share it’ features.

Behind the scenes the project is built on top of .Net Framework, Ms Sql Server, Nhibernate, Prototype Javascript framework. The core idea behind the project was that “build one application, handle hundreds of domains on the same web server” so we design software to be global on IIS. To do this task we implemented IHttpModules and IHttpHandlers to filter domains which uses CMS application and generate relevant contents with the manipulaion of HTML templates then registered them to machine level web.config file while loading required assemblies to the GAC. This approach solved our centric application model then we all pay our attention to the core development. While coding the project the most difficult part had became keeping module states inherited from IModule interface. And we get over this problem by binary serializing modules into the database and NHibernate helped us much with deserializing modules easily as it is.

Sorry for poor video, but i wish if it helps for some imagination with my brief explanations. I only wanted share our approach to this CMS application model and get feedbacks from you. Hope this helps some inspirations to you to share us.

ASP.NET Flies

There is an old Turkish saying that

The fly is small but it nauseates

There are few development flies in ASP.NET platform such this fly story. In general these issues slow down the web development processes and produce dirtiness in code and HTML output. I think interpreted server side scripts like PHP can deal this problems more clearer and cleaner way.

Fly Comic

Initial Post-Compilation Delays

If you work in small projects i doesn’t disturb so much at the begining but when your project get more enterprise with O/R mappings, logging libraries, security enviroment and web services testing your code with continues bug fixes become a real pain. Every time you compile your code it costs lots of seconds with initial execution and finally these seconds take your so valuable time. It’s a well known and common issue but it disturbs if your code has growed a lot.

Session Variables Losts

If your web project is released and used by many users, some critical and important data in session variables losts by an urgent update or bug fix in application, even when you make a change in .aspx files. This effects users experience with your application and it’s a disturbing issue too.

Postaback Design Issue

In traditional web development data transfers supplied by various form POST and url GET methods by a simple usage. They have cleaner way to sending data to server side. But when postback pattern in ASP.NET came into our life which simply combines javascript and encrypted form data states stay in hidden form inputs named viewstate, all our simple data transfer methodologies blured and became more complex. You lost in the questions such “Should i use querstrings or POST data or postback data?”. Think that you have a relational database project such an e-commerce application and you want to reference a product in Products page with a link from Orders page. If you all use postback pattern in your design, your code become more complex with a few code additions for querystring parameterizing. Probably you felt into these doubts such these problems.

On the fly Updates and Critical Bug Fixes

Suppose that it’s Sunday and you’re getting a calm day on the sofa by the televison, but suddenly you got news that your application felt down at that night and you have to get over that crash as soon as possible. You don’t have any chance or boss tolerance for any customer lost. But the real bad thing is your all source code is at work with your favourite IDE Visual Studio and you don’t have a chance to debug your application unless you get to work with office’s key. If your application was a PHP project the only thing you need is FTP keys. This is a small example, and can be produced more over on likely situations.

Web Standarts and AJAX

It’s very important point that web developers want to take control over the pure HTML input and output. With ASP.NET, it’s structure and it’s web controls always force to use us postbacks, viewstates, none sense table datas, invalid XHTML output. There is an option in web.config about XHTML conformce but it’s not enough. You will say that you can implement postbackless applications but it is again time consuming. And again if you want to use pure AJAX / JSON callbacks or use javascript frameworks like Prototype or JQuery, postback structure that forced you to use by ASP.NET doesn’t let you make things clearer and cleaner. It plays with it’s own rules like ATLAS etc.

Although all these problems for me seems small , they cause big headeches if they iterate a lot and you may get tired of coding web applications with ASP.NET like me. I really get bored of developing web applications in ASP.NET such jumping variables on postbacks one to one and binding data to that useless grids. I now hate postbacks and viewstates and i think the clearest and cleanest way for web development seems PHP with new OO features.

All around these thoughts, neither PHP nor Ror can be as powerful as dotnet platform. I will be waiting for ASP.NET MVC Framework. At least when it shiped to us we won’t have to play with postbacks, and have full control over HTML.

  
Valid XHTML 1.0 Strict Valid CSS!