Blog Home  Home RSS 2.0 Atom 1.0 CDF  
 
hoohee.com - Sunday, July 02, 2006
 Sunday, July 02, 2006

It's been a while since I've blogged. As a matter of fact, I was bogged down at work with tight deliveries and not enough resources. Any help is appreciated.

Now back to the subject of this blog.

During one of my business trips, I decided to buy a Linux magazine out of curiosity. What grabbed my attention was the double sided DVD with all those Linux distribution to test and a couple of articles on some graphics software. I am so glad for being curious. I discovered, to my surprise, how sleek Linux has become. Of the few distribution I've ran and tested, I like Open SUSE 10.1 and Fedora Core 5 the most.

I haven't touched or worked with Linux for more than 7 years now. My first experience with Linux sucked. I tried installing Linux about 7 years ago on a laptop. I struggled for a week and then decided to dump it for Windows. The problem with Linux then was that it didn't have a simple installer and it didn't support hardware devices like Windows.

So, 7 years on, I decided to give it another try, except that this time I installed it on my home PC. The system configuration is a P4 3.02 Ghz (dual core) with 1GB RAM and 2 x 120GB SATA hard disks. The VGA card is an nVidea. The motherboard is ASUS with onboard LAN and DSP (Audio card). I have an external USB SB Extigy, a USB Canon ImageClass MPC600F printer and a Lexmark Optra T616 network printer.

I installed the Fedora Core 5 distribution on the above configuration, using only one of the hard disks. I partitioned the disk in three, the main or boot partition, the secondary or data partition and the swap partition. I set the swap partition to 5 GB and split the rest among the other two partitions.

Installing Fedora was a breeze. The installer is graphical and easy to follow and it detected most of my hardware devices. But I wished running all the devices on Linux was as simple as the first step.

After the first boot of the system on Linux, I was amazed at how nice the Gnome desktop is. But unfortunately, Linux failed to recognize my Extigy audio device. It did show a USB audio device with the name Extigy, but couldn't play a sound or do anything with the device. After researching for hours, I found a device driver for it on creative's open source website. To my bad luck, it's not an easily deployable device driver. I have to recompile the Linux kernel to get it working. I haven't done so yet, but I'll share my experience with you when done.

The next setback was the Canon printer. I couldn't manage to have Linux recognize it. The internet is your friend when you're running Linux. So trawling for a few more hours I failed to find a Linux driver for this device. It seems Canon doesn't provide a Linux driver. I should voice my dissatisfaction about Linux supportability with Canon. Linux is generating headway in the desktop space and we need hardware vendors to back up the Linux community.

The third setback with Fedora was the fact that it doesn't allow you to mount NTFS volumes. Connecting to Windows shared folders was as simple as point and click. Unfortunatley, mounting NTFS volumes wasn't that easy. For some weird intellectual property reason Red Hat doesn't include NTFS support with its distribution. So I had to search the internet and found an unofficial site describing the procedure for adding NTFS support in Fedora (http://www.fedorafaq.org/#ntfs).

Three days on, I still don't have a fully functional Linux. So I decided to remove Fedora and try with Suse next week. I have seen the Suse live distro DVD and it looks nice. Suse does come with NTFS support, so one less thing to do. Also Suse 10.1 comes with XGL (Xserver on top of OpenGL) which produces faster screen rendering and some snazzy effects. I am also hoping that Suse will identify my Extigy. Stay tuned for more.

On a final note, I really love the tools and programs that come with most of the major distros. Specifically, I loved the Open Office 2.2 that I replaced my Office 2003 with it. It may be early days for such a drastic decision but I didn't hesitate to switch over.

My next steps will be to get Suse up and running and install MONO, Kylix, Eclipse and play around with GTK+ development.

7/2/2006 1:58:04 AM (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0]   Miscellaneous  | 
 Saturday, June 17, 2006

Today, I attended the Victoria.NET Regional Conference in Ballarat, mainly focusing on the business sessions.

I will not talk in detail on what was covered, instead, I would like to share some of the highlights with you.

Coaching vs Consulting
Isn't it true that the little things in life make all the difference?
Well then, the differences between coaching and consulting shouldn't come to you as a surprise.
Where you tell your customers what they have to do in one, you actually set a plan for them to do what they think they should be doing to achieve their goals.
Have you guessed which is which?

Teams at work
Don't beat your team into submission, instead help to develop their skills.
Empower your team members.

Attracting the team you deserve
What are you doing that is not attracting the team you want?

Acquiring Customers
Work out your target market.
Measure your conversion rate of suspects.
Set your referal strategies (testimonials - survey results).
Keep a kit of past projects or successes ready with impacting images.
Fact to face meetings with customers is the best strategy to win business or convert suspects into leads.
When selling, listen and ask.
Don't go to sell, go to get them to buy from you.

AusIndustry - An Australian Government Initiative
If you're like me, an Australian developer aspiring to commercialise a technology, I recommend you visit AusIndustry.
In particular, check out their COMET program which aims to increase teh commercialisation of innovative products or services by providing support.
Also, their R&D tax concession program encourages private sector funded R&D activities, which you may take benefit of, if you own an Australian business.

6/17/2006 11:10:20 PM (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0]   Business  | 
 Thursday, June 01, 2006

This month's book was Paradigms Lost.

I wasn't able to attend the meeting as I was in Hong Kong at the time.
The group had a heated discussion, so I was told.

The general concensus was an 8 out of 10.

6/1/2006 9:31:09 PM (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0]   Book Club  | 
 Tuesday, May 30, 2006

If you run a process that opens and closes connections very fast, the Oracle 10g XE listener fails with the following error:

Connection refused(DESCRIPTION=(TMP=)(VSNNUM=169869568)(ERR=12519)(ERROR_STACK=(ERROR=(CODE=12519)(EMFI=4))))

To fix this problem, simple change the number of processes in the SPFILE to a large number (see example below).

 ALTER SYSTEM SET PROCESSES=250 SCOPE=SPFILE

The alter command requires a DB restart.

This seems to have fixed my problem... or delays the error from occuring.

5/30/2006 11:16:41 AM (AUS Eastern Standard Time, UTC+10:00)  #    Comments [4]   Oracle  | 
 Sunday, May 14, 2006

Mantis is the bug trackign system I will be using for MoneyMan.

Installing Mantis is not too hard, once you figure out the requirements and security settings to allow you to install.

Here's a step by step guide on how to install Mantis along with its required software.

  1. Install MySQL which can be downloaded from http://www.mysql.com/
  2. Install PHP which can be downloaded from http://www.php.net/
  3. Download the latest MySQL components for PHP from http://dev.mysql.com/downloads/connector/php/
  4. Extract the MySQL PHP components with the name php_*.dll to the PHP install extension directory
  5. Extract the MySQL PHP driver libmysql.dll to the PHP install directory
  6. Edit the PHP.ini file, usually installed in your Windows system directory and uncomment the MySQL extension or add them if not there
    • extension=php_mysql.dll
    • extension=php_mysqli.dll
  7. Downloadand extract the Mantis BT to your webserver directory, usually C:\InetPub\WWWRoot, to end up with Mantis installed in the following direcotry C:\InetPub\WWWRoot\Mantis
  8. Open your browser and type http://localhost/mantis in the address and follow the screens to install Mantis
  9. Delete the Admin directory from the Mantis web directory for security reasons

Make sure you enter the proper MySQL username and password with DB creation rights (e.g. root) when prompted by the Mantis installer.

Now you should have Mantis running on your system.

Note 1: When installing Mantis on my laptop, I had a few directory problems with it. What I had done was extract Mantis to my desktop and then copy the folder to C:\InetPub\WWWRoot, which basically copied the security settings of the directory along with it. All I had to do then was create another directory in C:\InetPub\WWWRoot and copy the files to it from Mantis. This worked for me.

Note 2: After installing Mantis you might be propmpted to manually copy the configuration settings to one of the php file. Follow the screen prompts, it's quite simple.

Note 3: The administrator user password for Mantis is root. Change it the first time you login.

5/14/2006 2:30:29 PM (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0]   Money Man  | 
 Monday, May 08, 2006

Here's what I have done so far with Money Man.

I am using data binding. So far, I'm quite happy with what .NET 2.0 data binding offers. I will share some of my programing experience with data binding in a later post.

The login screen:

Login

Overview:

Overview

Suggestions anyone?

5/8/2006 10:45:14 PM (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0]   Money Man  | 
 Sunday, April 23, 2006

In my endeavour to develop a simple to use, feature rich personal finance software, I had to trawl through the internet in search of the most convenient development tools, and here's my story.

After spending more than a couple of days searching, I eventually found what I'm looking for.

First I wanted a database to store the data in. With too many on the list to pick from, which would you have choosen? I have decided to settle on Firebird for a few reasons.

  • Can be embedded with my application
  • Has a small footprint
  • Mostly SQL compliant
  • Has .NET client library

Database: Firebird

Now that we've solved the data issue, let's move on to the next of kin, ORM.

Object-Relational Mapping is a requirement nowadays. The choices here are no lesser than the database arena. I have taken the easy solution approach to picking this one, dOOdads. dOOdads comes with the MyGeneration, code generation tool.

Other ORM options I have looked at include, Hibernate.NET and Gentle.NET. I personally prefer the Gentle.NET approach. Gentle.NET 2.0 is still in an early stage of development to be used with .NET 2.0.

ORM: dOOdads

A couple of main features I liked about the unit testing tools I've chosen, namely, VS.NET integration and perfornmance statistics on tests.

Unit Test: Zanebug

To integrate Zanebug with VS .NET, I had to use TestDriven.NET. One caveat, though, is that you cannot run VS.NET using a regular user account and get the VS.NET integration for Zanebug. You will have run VS.NET with a user account belonging to the Administrators of the machine to allow TestDriven.NET to start an external process.

Next comes the source control requirements. SVN was my choice. I haven't created the tree for MoneyMan yet, but will surely use SVN.

Source Control: Subversion (SVN)

It's a fact, software programs will have problems, unless you spend big $$$$$....$$$$ on development and especially QA. How long it will take to uncover an issue in a piece of software is, based on statistics, a matter of time and user engenuity. Our project is no exception, but I hope to keep bugs under control. To help manage this part of the development process, I picked BugNET for issue management.

Issue Management: Mantis

Check our the post on Installing Mantis.

TO DO: Look for a continuous integration engine. I'm in two minds between CruiseControl.NET and NANT.

What would you have picked?

4/23/2006 9:12:48 PM (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0]   Money Man  | 
 Monday, April 17, 2006

I have developed an application which uses SQL Server as a data store and was looking for a way to install it with my appliation in a seamless fashion. With a lot of trial and error and a couple of hours trawling the internet for a decent source for this kind of info, I found a very interesting page on Microsoft's website.

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnsse/html/EmSQLExCustApp.asp

Finally, I decided to use the command prompt to  launch the installer.

SQLEXPR.EXE -q /norebootchk /qb reboot=ReallySuppress addlocal=all instancename=SQLCatalog SCCCHECKLEVEL=IncompatibleComponents:1;MDAC25Version:0 ERRORREPORTING=1 SQLAUTOSTART=1 SAPWD=SQLPassword SECURITYMODE=SQL DISABLENETWORKPROTOCOLS=0

Then I adapted an NSIS script I had (see below). All you need to do then is call the function UpdateMSDE from your NSIS script.

; English
!define URL_MSDE "
http://www.microsoft.com/downloads/info.aspx?na=46&p=8&SrcDisplayLang=en&SrcCategoryId=&SrcFamilyId=57856CDD-DA9B-4AD0-9A8A-F193AE8410AD&u=http%3a%2f%2fdownload.microsoft.com%2fdownload%2ff%2fd%2f4%2ffd407f12-0845-4d51-b084-779860d57ba5%2fSQLEXPR.EXE&oRef=http%3a%2f%2fwww.microsoft.com%2fsql%2feditions%2fexpress%2fdefault.mspx"


Function TestMSDE

        ;MessageBox MB_OK "Checking $1   $2"
 ReadRegStr $0 HKLM \
        "$1" "$2"

        IfErrors SQLServerNotFound SQLServerFound

 SQLServerFound:
                ;MessageBox MB_OK "Checking $3   $4"
  ReadRegStr $5 HKLM  $3 $4
                IfErrors SPNotFound SPFound

 SPFound:
  ;Check the first digit of the version; must be 8
  StrCpy $0 $5
  StrCpy $1 $0 1
  StrCmp $1 "8" SQLServer2000Found SQLServerVersionError

 SQLServer2000Found:
                Push 1
  Goto ExitCheckMinSQLVersion

 SQLServerVersionError:
  ;MessageBox MB_OK|MB_ICONEXCLAMATION  "This product requires a minimum SQLServer version of 8; detected version $0. Setup will install SQLExpress 2005."
  Push 0
  Goto ExitCheckMinSQLVersion

 SQLServerNotFound:
  ;MessageBox MB_OK|MB_ICONEXCLAMATION  "SQLServer was not detected; this is required for installation. Setup will install SQLExpress 2005."
                Push 0
  Goto ExitCheckMinSQLVersion

 SPNotFound:
  ;MessageBox MB_OK|MB_ICONEXCLAMATION  "SQLServer version $0 was detected. SQLServer version 8 (or later) is required for installation. Setup will install SQLExpress 2005."
  Push 0
  Goto ExitCheckMinSQLVersion

 ExitCheckMinSQLVersion:
 
FunctionEnd

Function ExistsMSDE

   ; search for SQL server
   StrCpy $1 "SOFTWARE\Microsoft\MSSQLServer\MSSQLServer\CurrentVersion"
   StrCpy $2 "CurrentVersion"
   StrCpy $3 "SOFTWARE\Microsoft\MSSQLServer\MSSQLServer\CurrentVersion"
   StrCpy $4 "CSDVersion"
   Call TestMSDE
  
   pop $1
   IntCmp $1 1 Found
  
   ; search for SQLExpress 2005 instance
   StrCpy $1 "SOFTWARE\Microsoft\Microsoft SQL Server\$SQLCatalog\MSSQLServer\CurrentVersion"
   StrCpy $2 "CurrentVersion"
   StrCpy $3 "SOFTWARE\Microsoft\Microsoft SQL Server\$SQLCatalog\MSSQLServer\CurrentVersion"
   StrCpy $4 "CSDVersion"
   Call TestMSDE
  
   pop $1
   IntCmp $1 1 Found
  
   ;jump to not found which will then start the installer
   ;IfFileExists 'C:\MSDERelA\Setup.exe' NotFound
  
   ; let's try to download SQLExpress 2005
   MessageBox MB_YESNO|MB_ICONEXCLAMATION  "SQLExpress 2005 not found. Do you want me to download installer from ${URL_MSDE}?" IDYES true IDNO false

true:
   nsisdl::download /TIMEOUT=30000 "${URL_MSDE}" "$PLUGINSDIR\SQLEXPR.EXE"
   Pop $0
   StrCmp $0 "success" Downloaded
   MessageBox MB_OK "Download failed: $0"
  
false:
   MessageBox MB_OK "Failed to detect MSDE or SQLExpress on this machine. The installer will continue but the application will fail to start. You will have to manually install the database engine and run the database creation scripts."
   Goto NotFound
  
Downloaded:
   ; run installer
   ExecWait "$PLUGINSDIR\SQLEXPR.EXE -q /norebootchk /qb reboot=ReallySuppress addlocal=all instancename=$SQLCatalog SCCCHECKLEVEL=IncompatibleComponents:1;MDAC25Version:0 ERRORREPORTING=1 SQLAUTOSTART=1 SAPWD=$SQLPassword SECURITYMODE=SQL DISABLENETWORKPROTOCOLS=0"
   ;ExecWait 'net start mssql$$$SQLCatalog'
   Sleep 10000 ; wait for a 10 seconds
   Goto Found
  
NotFound:
   Push 0
  
   Goto Exit
  
Found:
   Push 1
  
Exit:
  
FunctionEnd

Function UpdateMSDE
   Call ExistsMSDE
   pop $1
  
   IntCmp $1 1 Found
 
Found:
 
Exit:

FunctionEnd

Yes I know. The script needs a bit of cleaning. But I trust you can do it.

4/17/2006 9:45:35 AM (AUS Eastern Standard Time, UTC+10:00)  #    Comments [0]   MSSQL  | 
Copyright © 2008 Emile Bassil. All rights reserved.