yet another blog about computer, technology, programming, and internet

Wednesday, April 26, 2006

Free C# Tools

Wednesday, April 26, 2006 Posted by Ismail Habib , 31 comments
Are you a C# programmer? I am. How much money did you spend to buy C# development tools? $100? $1000? OK, I'm happy to say that I spend none to it ;) Seriously, Microsoft gave us chances to develop C# applications without having to pay (of course you have to pay for the Windows, and by the way... it is not about piracy, so it is legal). While .NET Framework and the compiler are free to be distributed, programmers still need to buy Visual Studio.NET. But don't worry: Microsoft had released a version of Visual Studio that is totally free, even for commercial applications! And even better: you can try SharpDevelop, an open-source application that worked perfectly like Visual Studio.NET. Of course those two tools has several weaknesses... but hey, they are totally free! (I admit it, I'm crazy for free stuffs :P). Borland C# Builder could be one last alternatives since it has a personal edition (but no commercial application). So now it is up to you, free or pay?

Tuesday, April 25, 2006

The Reason Behind this Blog

Tuesday, April 25, 2006 Posted by Ismail Habib 26 comments
It's quite surprising -even for myself- that I actually working on a blog. While writing is not one of my favourite thing to do, writing in English is even worse! Let's go back a little to see why I'm doing this.

Several weeks ago, I was applying an admission to study in Netherlands. One of its requirements is make a essay about my motivation, what I interested in, etc. It's been a real hardship for me to finish the essay. I need two weeks to finish my first page while at I had to write at least 7 pages! OMG... And -just between me and you-... It still hasn't finished... The reason why I was spending so much time to write is because my vocabs are very limited! (While the grammar make another bonus to difficulty level). By doing thins blogging thing I hope that my writing skill will be slightly increased. Hooray!!

Never hesitate to say: "your writing is a mess!" or "I don't understand what you are trying to write", etc. After all, I should make some mistakes before correcting it...

Database/Data Access Layer (DAL)

Tuesday, April 25, 2006 Posted by Ismail Habib 63 comments
Related to my previous writing about MVC, there is other thing that I'd like to share. Previously, I wrote that MVC helped a lot in creating a big (enterprise?) application. While MVC defines layers that represent layer in same level, DAL (Data Access Layer) provides a depth in application abstraction. DAL logically inserted below business process layer to provide independent-to-database access. The DAL itself contains implementation to specific database access and also interfaces to business process layer.

The benefit of DAL is not far difference with MVC. By separating business process with data access, we may create several implementation of data access (to MySQL, MSSQL, Oracle, etc) without having problems changing the business process.

Model Viewer Controller

Tuesday, April 25, 2006 Posted by Ismail Habib 32 comments
Since the very first time I tried to write codes until two weeks ago I never realize what's so important about having a good abstraction to what we are going to code. My interest in MVC came when I tried thinlet, a tool for Java that separate UI from the business process. While the business place take places at one or some classes, the UI itself being written in an XML file that contain both the UI and its interfaces to the business process.

OK, now what is this MVC really about? In my own words it is: A separation between Model (Data), Viewer (UI), and Controller (The Business Process). Why it is so important anyway? Imagine you build a huge application. When you have reached the latest stage, then the customer ask for some minor changes in requirement. What will happened? A total mess, huge cost... It's probably debatable, but I already tasted it :P

So, how's the implementation of MVC? Simply said, create your application with a will to do this: never mix Model, Viewer, and Controller code in the same place. Create interfaces to connect one to another. This may be a lot of work... but believe me, it's worthed :) You can try something like this: User Interface (User Action Called) --> Controller (Update Model) --> Model --> Controller (Update User Interface) --> Interface