Showing posts with label Research. Show all posts
Showing posts with label Research. Show all posts

Friday, September 16, 2011

Tuesday, May 29, 2007

File System Storage Versus BLOB Objects

Document Management Systems nowadays are heading towards storing all documents as BLOB objects in the database. You rarely find any server side applications that deal with documents as files.

Whether its a... Document, Content, Bug, Project, Knowledge Management System, they're all implementing document storage using BLOB objects.

Why it that then?

Well...

1. The first advantage of having everything stored in the database is the ease of backups and restorations. You no longer need to backup the database then backup your document's directory, then make sure they are synchronized.

2. The second advantage is that the documents are stored the same way on all platforms and partitions. Whether its FAT32, NTFS, or any other filesystem, you can store them all in the same way.

3. The third advantage is, you have full control of versioning documents, storing interesting information like diffs, dates, users performing on them.

4. The fourth advantage is that third party applications that connect to the database need only to have the database port available. No need to provide extra ftp access to acess the documents.

Thats it. Bottom line...

If you're building some kind of server application, consider a Database File System.

Sunday, April 15, 2007

Teach Yourself Programming in Ten Years

Very nice article discussing the programmers' learning curve:
http://norvig.com/21-days.html

This article is so popular it has been translated to many different languages including chinese, arabic, german, french, polish, japanese, korean, russian, spanish and turkish.

ref: Khaled J. Simtix Software.

Tuesday, April 03, 2007

Bad Software Methodologies

Ok, this time its from the software industry...

Here are some very well known anti-pattern methodologies in software:

/* 1. Copy and Paste Programming: */
Copying (and modifying) existing code rather than creating generic solutions

/* 2. Golden Hammer */
Assuming that a favorite solution is universally applicable

/* 3. Tester Driven Development */
Software projects where new requirements are specified in bug reports

/* 4. Improbability factor */
Assuming that it is improbable that a known error becomes effective

/* 5. Defactoring */
The process of removing functionality and replacing it with documentation

/* 6. Premature Optimization */
Optimization on the basis of insufficient information

/* 7. Programming by permutation */
Trying to approach a solution by successively modifying the code to see if it works

/* 8. Reinventing the square wheel */
Creating a poor solution when a good one exists

/* 9. Reinventing the wheel */
Failing to adopt an existing, adequate solution

/* 10. Silver Bullet */
Assuming that a favorite technical solution can solve a larger process or problem

Ref: Copied and pasted from wikipedia

Sunday, April 01, 2007

Swing/AWT

Fortunately, I've found lots of books and online material that teach you Java swing/awt programming for desktop environments.

Unfortunately, very few (approximately none) discuss structuring your application code.

I've seen "Learning Java" over discuss the 'Adapter' design pattern when it comes to separating UI actions from application functionality. But still, I'm looking for patterns that will make code scale, techniques that will handle complex user interfaces using simple class relations without cross-referencing different variables, classes and elements along the code.

Till I meet such a tutorial or reference, I think I'll be treating Swing the MFC way.
Lucky me , I've done MFC ;)

In Search For A Convenient Java IDE

With all the years of VI programming on linux as my ultimate IDE. Being introduced to some civilized java IDE's exposed me to a cultural shock.

With all the impressing stuff, I'm still trying to find the best out there. Trying to find the best by comparison then by elimination. First of all, they all look great. The Java IDE's sum up to the following:

1. Eclipse
2. NetBeans
3. JBuilder (by Borland)
4. JDeveloper (by Oracle)
5. Intellij IDEA

The best link I found that does a fair comparison is this one:
http://www.mojavelinux.com/wiki/doku.php?id=javaidecomparison

I'm trying them out one by one. Please note that my evaluation will be based on the best IDE for creating desktop applications.

I've just tried JDeveloper today and I think its the best. Eclipse, NetBeans and Intellij IDEA I've tried a bit. But the one that provides the best convenience I believe is JDeveloper, specially when it comes to creating GUI Desktop applications.

The problem with Eclipse is that it doesn't support Swing/AWT ui elements, but rather have to be purchased from thirdparty commercials (most notably MyEclipse).

Netbeans is good. But the layout facilities provided are so cumbersome. To that, NetBeans lacks alot of features, and its intellisense makes me mad from time to time. When I'm in the middle of typing a function name, and go back by pressing delete, intellisense dissapears. This doesn't happen with JDeveloper.

Intellij IDEA. I have to be frank here, I didnt give it a full try. Its commercial for $500 and looks great. Also lots of features, a big community, and lots of plugins, the only problem is that I didnt give it a full try since the GUI layouts it provided were a bit like NetBeans. I'm sure there is an option that makes it like JDeveloper. But I didn't find it fast enough.

The only one left to try is JBuilder from Borland. I dont think I will get there. I'm so happy about JDeveloper I dont think I'll ever go anywhere else ;)