Wednesday, April 23, 2008

Not all databases are created equal...

In today's IT environment, many think of the database as just the persistence layer of objects, or as a commodity. If your database isn't performing well enough, then just throw more hardware at it. While this belief is pervasive, it isn't true.

I recently had one example that shows that each database vendor had a different solution to the same problem.

I have a customer who had overloaded a table's purpose. The table stored different types of comment lines associated to an object. So the layout looked like:
id - the id of the object that it was describing.
type - the type of comment.
sequence - used if there are more than one entry of a given type for this comment
comment_text - the actual text we want to store in the database.

Now the problem arose due to a requirement that we only allow a single entry per id of a comment who has the type = 'c'.
All other types would allow multiple entries.

I looked for a solution in IDS, DB2 and Oracle.

In Oracle, because their indexes allowed nulls, you could create a functional index where the function was inline and returned either the unique id, or null if the id was already in the database.

In IDS, you had two solutions. First was a functional index that you'd either error out if there was an entry of type = 'c' for the given id, or you would return a combination of the id, type, and sequence.
The second solution... use their VII to create an index that mimics Oracle and you can use their solution.

In DB2, you'd have to create a trigger.

While I support all three of the databases at various clients, I have to admit that I loved the simplicity of Oracle's solution.

I also like the fact that IDS's solution as it would also work in Oracle, and that IDS has the ability to extend itself and mimic other features in other databases that are not native to itself.

I was less impressed with the DB2 solution, however I was told that it was extremely efficient.

The point is, while each of the two database vendors (Oracle, and IBM)[IBM owns DB2 and IDS], has the ability to solve the problem, they do so in slightly different methods. Each method has a slightly different cost and will effect performance.

An alternative would have been to separate the table in to multiple tables, the use of an Index had the least amount of development impact.

So the next time you look at choosing a database platform, don't buy in to the idea that they are all the same thing aka a commodity.

Monday, April 14, 2008

E commerce Framework with PHP/ASP.NET

I am exploring what are availability of Commercial Grade E-commerce Frameworks available. The framworks should integrate with Dreamweaver/ASP.net Development in VS 2005/Vs2008.

I need to explore both PHP based and ASP.NET solutions.

As I explore the situation , I will post the Results

Please post your usability experience, if you have any

Saturday, April 12, 2008

Consulting and Delivering Values

I have found this material to be quite good.
I always watch out for people who can talk and can not deliver. Consultants without implementation experience is useless.

http://www.summitconsulting.com/articles/index.html

Also look into marketing your skills

http://abcnews.go.com/Video/playerIndex?id=4622195&affil=wftv

Wednesday, April 09, 2008

Universal Data Models

I have to design database schema quite a number of time and I simply consider designing from scratch a waste of time.

I have the two particular reference very use ful.

1.o The Database Source book Vol-1- Len Silverston- ISBN 0-471-35348-5

2.0 The Database source Book Vol 2- Len Silverston- ISBN 0-471-38023-7

These books are very good , however each CDROM has asking price of 500 dollars. I do not recommend purchasing the CDROM Auth code.

The material in the Book is very much time saver.

Tuesday, April 08, 2008

Books That I keep Near my Desk

There are some books that I keep near My desk while working

1.0 Building Applications and Components with VB.net, Ted Pattison, dr. Joe Hummel-ISBN- 0-201-73495-8

2.0 Windows Forms Programming in VB.net , Chris sells, Justin Gethland- ISBN- 0-321-12519-3

3.0 VB.net and C#.net Cookbooks from Oreily's.

These core set of books are very helpful as I waste a lot of time wandering through MSDN documentation.

I also found that MSDN documentation becomes slightly useful when I have dynamic help turned on in VS 2005 and 2008.

Monday, April 07, 2008

Microsoft Solutions Framework

I have started my journey involving MSF-3.0 and will post all the discoveries and pitfalls on the way. I will be using Enterprise Architect-7.0 and Vs 2005 for the Journey.

Here is the Url from Microsoft.

http://www.microsoft.com/technet/solutionaccelerators/msf/default.mspx

Wednesday, April 02, 2008

Transaction Processing - Advanced Topics

I was doing some research related to transaction processing and came across this book

Database and Transaction Processing- ISBN 0-321-18557-9

and found the material to be better in terms of easy grasp tham Reiters Classic Work on Transaction(Acm biblography).

The idea is how do we introduce concepts of transaction to junior programmers, and this book fits the bill.

Sunday, March 30, 2008

Want to Increase Productivity 4 Times

Follow the simple procedures

1.0 Buy GTD:

http://en.wikipedia.org/wiki/Getting_Things_Done

2.0 Life hacker:

http://lifehacker.com/software/geek-to-live/getting-things-done-with-google-notebook-256844.php

3.0 Use Google Notebooks: Create 5 notebooks

4.0 Install Fire Fox Extensions:

http://www.google.com/tools/firefox/

Not Done: back to 1.

Friday, March 28, 2008

How to start a Software Business

This is an interesting video of how to start a software business.

I will recommend it.

http://video.google.ca/videoplay?docid=2680114700674428424&q=software+engineering&total=1519&start=20&num=10&so=0&type=search&plindex=5

Here are the PDF slides

http://www.plambeck.org/howtoquit.pdf

Thursday, March 27, 2008

Socratic Methods and Competitive Strategy

I am going thorough Competitive Strategy of Michel Porter and Socratic Methods to Increase Performance i IT and Software Business.

I will appreciate your input and feedback in this

Ref:

1.0 Competitive Strategy- Michel E Porter- ISBN -0-684-84148-7

2.0 http://www.socraticmethod.net/

Wednesday, March 26, 2008

Starting your Own Software Business

If you are thinking of starting out your Own Software Business- this is the time.

I recommend the following books:

1.0 Success Thorough Positive Mental Attitude- ISBN- 0-671-74322-8

2.0 The Magic of Thinking Big- David Schwartz-0-671-64678-8

Sunday, March 23, 2008

Software Reuse- Architecture, Process and Organization for Business Success

It is one of the MUST READ Books, if you have any thing to do with software. I recommend it very much. The book is dated, but the contents are very valid

Authors: Ivor Jacobson, Martin Griss, Patrick Johnsson

ISBN- 0-201-92476-5

Also look into- Why software reuse has failed historicaly

http://www.cs.wustl.edu/~schmidt/reuse-lessons.html

ZEND 1.5 PHP Application Frameworks

I am working on Zend 1.5 PHP application frameworks.

If you are working on any aspect of PHP, it will be worth while to look into ZEND 1.5.

More on this later

Ref:

http://framework.zend.com/

Friday, March 21, 2008

Search Engine Optimization

I am in the process of writing an article about search engine optimization. Any help from your end will be appreciated.

I have gathered the following References:

1.0 Google Analytics: http://64.233.179.110/analytics/tour/index_en-US.html

2.0 Web Analytics Association

http://www.webanalyticsassociation.org/

3.0 Webtrends Webcast

http://www.webtrends.com/Resources/ExpertWebcasts.aspx

4.0 OnLine Marketing Blog

http://www.toprankblog.com/

Thursday, March 20, 2008

Competitive Strategy Linkedin Group

I am looking for Linkedin Group or website that discusses the following:
1.0 Dynamic Competitive Strategy- Like Wharton/Porter/S Day
2.0 Application areas being Software Engineering
3.0 Web 2.0 in Business
4.0 ERP- Like SAP/Salesforce/CRM
5.0 Information Technology- LAN/WAN/VOIP/Server/VPN/Biztalk

In short, I am looking for Information and ideas to align the following

Strategic Planning

Business Operation

Information Technology Implementation

ERP/CRM Deployment

Integration of Lean Six Sigma

Enabling Technology Like

.Net Development

Web 2.0 based Collaboration

Business Intelligence Integration.

Sales and Marketing Operation

Tuesday, March 18, 2008

Design Patterns and Component Based Design

I understand design Patterns, and right now I am reading Ted Faison's book component based design. It is a wonderful book to begin with, since it touches on the UML at the beginning.

I am not clear at this point:

1.0 How component based design is different from design pattern and or application framework. I will post the details.

2.0 Since we can leverage existing third party components ( Read Software Class libraries, frameworks, components) in .NET technology, why I am not familiar with such.

3.0 Class libraries like LEDA, STL and Rougewave, I am aware of, but I do not see any three-tire business building components. I guess I will search www.dundas.com and others for that. May be code projects has some pointers on that.

Ref:

Component Based development with VS C#- Ted Faison- ISBN : 0-7645-4914-6

Sunday, March 16, 2008

My Feedback on Qi4j and Edward's Response

On 13th of March 2008, Thursday, I have attended a presentation on an old-new concept of programming, Composite Oriented Programming, presented by a well-known personality, Rickard Öberg. He is the guy behind XDoclets, WebWork, and Sitevision. He also wrote EJB Engine in JBoss 2.

The presentation was about Composite Oriented Programming for Java with Qi4j, at OUM Angkasaraya, Kuala Lumpur. I got to know this from Malaysian JUG. There were 15-20 folks attending the presentation. It was good, the presentation and question/answer session. Despite, I haven't asked a single question at that time. It was not that I was not having any. Actually, I waited for the other folks and finally I realised that few of my questions are now already got the answer. And the answers for the remaining I derived myself. :)

However, after coming the next day I have sent my feedback to the JUG. And just after few hours I have received the answers of my few worries from Edward Yakop. So, I would like to share those with you guys. Below is the thing.


Me - Too much abstraction

Edward - I'm not sure what this means? I think once u read the DDD book. You might conclude that this is needed.

Me - Big learning curve

Edward - Niclas and I had a chat over breakfast this morning. If we have two fresh programmer, who only knows java. And both of them are given task to create petstore. One use qi4j and the other use spring/jsf/wicket etcs. Who will get it done faster and better (in terms of quality, maintainable etcs).

If the document/tutorials will be as good as spring documents for example. I think we agree, that the qi4j guy will win. But then again, since we're not there in terms of documentation, tutorials, persistence. We better hold back our thoughts until all these are done.

But if we're talking about programmers who already know jpa, some view layer. Yeah, without investing time to learn qi4j. I think the programmer will be frustrated to work in this qi4j manner.

Me - Might be compelling in terms of maintenance

Edward - Sitevision is built on top of this concept. And based from Rickard observation. This should be a big plus in terms of project maintainbility.

One thing that I raised, is the fact that Rickard doesn't show the simple prototype that he did in order to see how module/layers/composite/concerns hang together.

From his blog post. And the screenshot.

If we create a better tooling for this, instead of rdf -> xsl -> html. We would have a powerful tool to figure out how does my application looks like. How does the concerns are stack, and even better, if I call this method, what would be the order of constraint, concern and sideeffects. Would the side effect be asynchronous.

We believe that with this information and tooling (need to be created). This should give a great information for maintainer.

Me - Suits large enterprise applications where maintenance and adding new feature is really cumbersome

Edward - Agree.

Me - Wish it would be a success

Edward - Yeah :) We sure hope so too.

Me - Might look insane before trying it out

Edward - Probably :) But, after working on qi4j during spare time and coding standard java way for commercial project. I personally going insane with the standard way to code :(

Me - Performance would become a primary issue

Edward - Not really. Sitevision is a proof that performance is a non issue. I think with all the experience that Rickard had with sitevision. Qi4j will most probably does not have performance issue in the future.

Me - Not sure how we can bind the object with HTTP request, and how would we use it via JSTL. I hope there would be typical getters/setters behind the scene

Edward - Yeah, this is similar problem that I have atm with qi4j-ibatis entity store. If the project is opensource, I think u could try to convince them to create a pluggable getter/setter resolution. This way, we can hook qi4j way to get and set. Otherwise, there's probably nothing much we can do :(

The current plan is to have qi4j-ibatis, qi4j-neo and qi4j-wicket integration. I'm working on both qi4j-ibatis (in and qi4j-wicket intergation and Rickard and Niclas is working on Entity Session API and core. Once these are done. I will update chronos app.

Me - Not sure how we can integrate with JSF based frameworks i.e. Seam

Edward - You don't. I don't know much about seam. But in order for qi4j to replace seam, we will need to be at least seam feature complete.

Me - Looks we still need to come up with data access layer on our own or through using some other frameworks.

Edward - You don't really need to come up with data access layer at all. You just have to use what we have. if I batis is used, then you would need to create statementid for each composite, association. This way qi4j-ibatis will now which statement to call to delete, update, insert, fetch association.

More to this later, once I complete this.

Me - Time will tell where it is going and how

Edward - Yup

Me - Would love to contribute if I can. I believe we need to go through the DDD book, learn, at least,a basics of Ruby on Rails, and Java Annotations prior to contribute

Edward - Yes, I believe.

Me - We already used to have a cup of coffee or two while programming but now it seems, from the logo, that we should start eating coffee beans too through those chopsticks

Edward - It's closer to Eating steaming HOT rice with chopstick. :)

Friday, March 14, 2008

PHP Development Using Eclipse Europa

I program quite extensively using PHP for dynamic web sites and e-commerce, commonly known as LAMP architecture. So far I have been using Emacs and Vi and other editors in Unix system.

Recently I downloaded Eclipse for PHP called europa version. I was simply impressed by the eclipse feature. what is more interesting is that I could integrate Apache 2.0 running on Redhat Linux machine's PHP directory directly from the Project File location.

The result is 150% immediate increase in productivity. To make this happen, you have to map the Linux file system using samba.

The Next project is to do the same with Dreamweaver -8.

Using Windows Live Writer

I have started using windows Live Writer - it is free and seems to be very good.

Thursday, March 13, 2008

RPC-Socket-Threads-Signal- Distributed Programming

You Learn Good Programming Techniques by Working with Linux/SUN



It may sound funny , but I have observed that good programing skills are developed by working with SUN/Solaris/Linux.


Difficult concepts like

1.0 Inter process communication (IPC)
2.0 Multithreading
3.0 Signal Handling for Process
4.0 Garbage Collection /Memory Leakage
5.0 Remote Procedure Calls (RPC)
6.0 Common Object Request Broker Architecture(CORBA, WCF)
7.0 Distributed Programming
8.0 Dynamic Linking
are difficult to master in Windows environment. MSDN has no concept of explaining!!!!!

I have benefited by reading the following materials to really understand how they are implemented and how they work.

1.0 Doglas Comer’s Books- XINU/Networking 2 Volumes
2.0 Richard Stevens Networking
3.0 Sun RPC Tutorials
4.0 Unix Programming


I would suggest any one to look into these before jumping into Windows and .Net.

Jumping Straight into .Net gives you very superficial ideas of these concepts.