Email: dtbnguyen(at)gmail(dot)com
Website: http://sites.google.com/site/dtbnguyen/
Blog: http://dtbnguyen.blogspot.com/
LinkedIn: http://au.linkedin.com/pub/binh-nguyen/6/832/934
GitHub: https://github.com/dtbnguyen
Short Biography
Binh Nguyen was born in Melbourne, Australia. He has multiple
undergraduate and postgraduate degrees in multiple fields but his
primary interest remains in the IT sector. His background is strongly biased towards science and mathematics. Nonetheless, he does have an appreciation for the arts, humanities and sport. He has broad experience in IT and a number of his product concepts have been commercialised.
Some of his technical documents have been incorporated into the Linux Documentation Project ("Linux Dictionary" and "Linux Filesystem Hierarchy", www.tldp.org/guides.html) Furthermore, they are being
used as reference books in many Universities, Colleges and also for professional certification purposes around the world.
Moreover, as can be demonstrated below, his articles and documents have been published in both industry and enthusiast publications, submitted to goverment, and he has a strong interest in the latest innovations in science and technology.
For samples of his work and an indication of his interests please see his website, blog, etc...
http://www.sci.usq.edu.au/courses/CSC3412/resources/dvdrom/index.html
http://www.sci.usq.edu.au/courses/csc2408/semester2/resources/ldp/index.html
http://www.coursehero.com/sitemap/schools/223-Allan-Hancock-College/courses/761192-CSC3412/
http://web.archive.org/web/20090604053516/http://www.swpearl.com/eng/scripts/dictionary/
http://www.kishwaukeecollege.edu/faculty/dklick/cis170/index.htm
http://www.coursehero.com/textbooks/44858-Getting-Started-with-Linux-Novells-Guide-to-CompTIAs-Linux-Course-3060/
http://student.eepis-its.edu/~izankboy/laporan/adminlinuxpdf/4%20sistem%20managementfile.pdf
http://www.pages.drexel.edu/~nsk62/files/Project_report.pdf
http://ndustudents.com/index.php?dir=Tutorials%2FLINUX+TUTORIAL%2FSome+Unix+Tutorial%2FUnix-PDF-Tutorials%2F&download=Linux-Filesystem-Hierarchy.pdf
https://wiki.abertay.ac.uk/display/~0400653/Dissertation
http://clusters.engineering.wustl.edu/guide/guide/more_on_linux.html
http://studies.ac.upc.edu/FIB/ASO/llibres.html
http://student.eepis-its.edu/~izankboy/laporan/adminlinuxpdf/Manajemen%20Sistem%20Fileppt.pdf
http://softice.poly.usf.edu/wiki/index.php/ELSA:lab-03
https://users.cs.jmu.edu/abzugcx/public/Operating-Systems/Assignments.pdf
http://www.dtic.mil/cgi-bin/GetTRDoc?Location=U2&doc=GetTRDoc.pdf&AD=ADA479294
http://spectrum.library.concordia.ca/7075/1/Fadel_MASc_S2011.pdf
http://gsyc.escet.urjc.es/~cespedes/dasr/
http://elib.lhu.edu.vn/handle/123456789/5040
http://www.uca.es/centro/1C11/wuca_fichasig_todasasig_xtitulacion?titul=1711
http://edice.vos.cz/files/swf/3150_bc_brace_supa_ANG_2010.htm
Personal Blog
Sample Technology Documents
ABSTRACT
As the world moves towards a more globally and electronically connected future, access to the
Internet is becoming more commonplace for business, educational, as well as entertainment
purposes. Virtually everyone now has a small, mobile device of some sort which will allow them access to the Internet. The concept of "Cloud Computing" was born as a direct consequence of such connectivity and this has resulted in services advancing towards the Internet "Cloud". This allows smaller devices to possess far greater functionality than ever before whether it is via websites and/or other secondary protocols. This document provides advice on how to build a cloud service whether that may be for commercial, educational, and/or more altruistic purposes. It is based on past experience, general knowledge, as well as personal research. It is not intended to be read by people who are new to computing. While it was originally intended only to cover technical aspects of building a cloud service-based company it has since expanded into a document that covers the actual business aspects of building a cloud service-based company as well. It uses Open Source technologies, but takes concepts from all fields.
ABSTRACT
This document outlines the set of requirements and guidelines for file and directory placement under the Linux operating system according to those of the FSSTND v2.3 final (January 29, 2004) and also its actual implementation on an arbitrary system. It is meant to be accessible to all members of the Linux community, be distribution independent and is intended to discuss the impact of the FSSTND and how it has managed to increase the efficiency of support interoperability of applications, system administration tools, development tools, and scripts as well as greater uniformity of documentation for these systems.
ABSTRACT
This document is designed to be a resource for those Linux users wishing to seek clarification on Linux/UNIX/POSIX related terms and jargon. At approximately 24700 definitions and two thousand pages it is one of the largest Linux related dictionaries currently available. Due to the rapid rate at which new terms are being created it has been decided that this will be an active project. We welcome input into the content of this document. At this moment in time half yearly updates are being envisaged.
Extracts from an article that was written about the Linux Dictionary.
ABSTRACT
The Computer Dictionary is an open source project, released under terms of the Creative Commons ShareAlike 2.0 license, that aims to develop a Docbook XML glossary database containing definitions of computing nomenclature. The primary application for the source is realized in context of Docbook XML-based publishing systems. However, as a desired side-effect, the glossary is also available online as a 'browsable' reference. What makes this project unique is that it is the first free and open glossary database to be developed specifically for use with Docbook XML-based publishing systems.
Sample Computer Programs
Mail Quota/My Documents Script
MAIL QUOTA/MY DOCUMENTS SCRIPT
Obviously, you can run this script on an ad-hoc basis and/or you can also run it continuously with a scheduling program such as 'cron'. You also need the following utilities to be installed, gnuplot, ImageMagick, and ldapsearch.
http://adminschoice.com/crontab-quick-reference
http://www.math-linux.com/spip.php?article45
As this is the very first version of the program (and I didn't have access to the original server while I was cleaning this up it may be VERY buggy). Please test prior to deployment in a production environment.
MAIL OVER SCRIPT
As this is the very first version of the program it may be VERY buggy. Please test prior to deployment in a production environment.
LDAP PASSWORD SCRIPT
As this is the very first version of the program it may be VERY buggy. Please test prior to deployment in a production environment.
IDLE WATCH
This work is a continuation from that of a German programmer who originally intended to warn (and subsequently automatically logout) users who were idle during terminal sessions. The original tarball is available from the following location and is also included in this tarball for reference.
http://www.filewatcher.com/b/ftp/ftp.mao.kiev.ua/pub/software/Linux/system/admin/idle.0.0.html
Several modifications have been made to the original program. First, this version runs entirely 'silently' (there is no indication to the end user that the program is running). Second, it does not log users out. Third, the file which holds the usernames of those users to be excluded from monitoring has been changed from /etc/nologout to /etc/idle_nolog.
Elastix Batch Extensions Script
ELASTIX BATCH EXTENSIONS SCRIPT
This script is designed to create a group of extensions suitable for export to the Elastix PBX phone system. Information required for extension creation is taken from names.txt which contains names of people in the format of "FirstName LastName" on each line as well as the variable EXT which is the starting extension in the sequence. A suitable CSV file for import can then be used by logging into the Elastix web interface and then going to PBX -> Batch Extensions.
ZARAFA ADDRESS BOOK SCRIPT
This script is designed to extract information required for an Address Book from an OpenLDAP database and then produce a suitable CSV file for import into an address book such as those used by Outlook, Thunderbird, and Zarafa.
As this is the very first version of the program it may be VERY buggy.
Please test prior to deployment in a production environment.
LDAP REPORT SCRIPT
This script is designed to generate LDAP text and PDF reports to send to a particular end email address (in this case, sysadmin@company.com) based on a LDAP query of a particular server named (funnily enough) ldap. Please modify to suit your particular circumstances. It is designed to be used from the BASH shell and the gcc compiler is required in order to compile the text2pdf.c program.
As this is the very first version of the program it may be VERY buggy.
Please test prior to deployment in a production environment.
MAKEVPN FOR DD-WRT SCRIPT
This script is designed to generate an OpenVPN configuration suitable for use with DD-WRT on a Linksys WRT-54GL wireless router. Please modify to suit your particular circumstances. It is designed to be used from the BASH shell.
As this is the very first version of the program it may be VERY buggy. Please test prior to deployment in a production environment.
LDAP BACKUP SCRIPT
http://havegnuwilltravel.apesseekingknowledge.net/2005/02/automatically-back-up-your-ldap.html
As this is the very first version of the program it may be VERY buggy. Please test prior to deployment in a production environment.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Outlook Roaming Profile Compatibility Script
OUTLOOK ROAMING PROFILE COMPATIBILITY SCRIPT
One of the biggest problems with using Microsoft Outlook on a computer network using roaming profiles is the fact that settings aren't saved because of the location where these settings are normally saved. These scripts are designed to address these particular problems by moving them to the correct locations on logon/logoff.
To use them open up gpedit.msc, User Configuration > Windows Settings > Scripts Logon/Logoff and then select the relevant logon files for logon/logoff. Obviously, you'll need a Perl interpreter for these scripts to be run. A good, free choice is ActivePerl, http://www.activestate.com/activeperl/
As this is the very first version of the program it may be VERY buggy. Please test prior to deployment in a production environment.
ROAMING PROFILE CLEANER
In a roaming profile environment one of the problems faced by users and administrators alike is dealing with the people who go over their size limit. There are a number of ways to deal with this particular problem. One is to increase their roaming profile size limit, another is to tell users to delete their files every once in a while. These scripts, (one for use in a Linux environment and the other for a Windows environment) are designed to delete as many files as safely possible to keep users under quota. As this is the very first version of the program it may be VERY buggy. Also please, check that the files being deleted aren't important to users in your particular environment and that the starting directory from which files are being deleted are correct. Obviously, you'll need a Perl interpreter for these scripts to be run. A good, free choice is ActivePerl, http://www.activestate.com/activeperl/
X-Lite Roaming Profile Settings Saver
X-LITE ROAMING PROFILE SETTINGS SAVER
One of the biggest problems with using X-Lite on a computer network using roaming profiles is the fact that settings aren't saved because of the location where these settings are normally saved. These scripts are designed to address these particular problems by moving them to the correct locations on logon/logoff.
To use them open up gpedit.msc, User Configuration > Windows Settings > Scripts Logon/Logoff and then select the relevant logon files for logon/logoff. Obviously, you'll need a Perl interpreter for these scripts to be run. A good, free choice is ActivePerl, http://www.activestate.com/activeperl/
As this is the very first version of the program it may be VERY buggy. Please test prior to deployment in a production environment.
SRHC, pronounced 'SHR-C', Simple Rapid HOWTO Creator
This shell script provides a rapid means by which to write an XML Docbook conforming document suitable for submission to the LDP (Linux Documentation Project), http://www.tldp.org. As this is the very first version of the program it is VERY buggy. It is also extremely limited in that it currently does not encode character entities, nor does it check whether your input is vaild or not. To use it place it in an empty folder, run it, and follow the prompts. At this stage I do not think that I will be developing this program further. However, I consider the source to be extremely simplistic and that if someone were willing to apply themselves quite good markup could be created. This program is distributed under the terms of the GNU GPL License.
TOOLS FOR EDITING THE 'LINUX DICTIONARY'
These tools are designed to aid people in the editing and modification of the 'Linux Dictionary', http://www.tldp.org/LDP/Linux-Dictionary/
SPEECH SOFTWARE PROJECT
The SpeechSuite group of programs is basically an attempt at using speech recognition/synthesis in real world applications. It is currently composed of three programs :-
- GUIShellTutor
GUIShellTutor is an extension of the GUIShell project whose primary aim is to make the shell interface more useable. The key differences though are that it possesses a speech synthesis and recognition capablity. Also there is no 'real program'. All the source code is generated by the runme.sh file. Though this is slow it will call other scripts which will search through the entire system based on your PATH environment, get their 'whatis' descriptions, sort them and format them. During this process all files are stored in *.tml files. Finally, the file is split alphabetically and stored in *.bml files. After this, the Java sourcecode is created and moved into their correct locations, 'ant' (a more advanced version of 'make' and was designed with Java in mind) is called and the main interface is brought up. Please note that for the speech capablities (and hence this program) to work the 'festival', 'ant', and 'sphinx' programs must be installed in accordance with the instructions below. Note that you only need to run the runme.sh script once, thereafter you can simply launch the GUIShellTutor main interface via 'java GUIShellTutor' or any of the 'letters' via 'java -jar bin/(Some Letter)Digits.jar' from the location of your sphinx installation.
- HouseDigits
HouseDigits is a program that provides a more user friendly interface to the k74 command line program. However, it is also designed specifically to be used with Binh Nguyen's Home Control Prototype Device (HCPD), a device which provides a real world example of an aesthetically pleasing and truly inexpensive voice activated power control mechanism. To run the program just type 'java -jar bin/HouseDigits.jar' Please note, that if you wish to run HouseDigits it is advisable for you to install the enhanced k74 program available on this webpage.
- CustomDigits
CustomDigits allows you to run customised commands. The interface is identical to that of GUIShellTutor. However, in order to run customised commands you must first alter the Custom.bml file and organise it so that each line is composed of a command, a tab, and then a description of that command. After doing so, run the runme.sh script, and to run CustomDigits just type 'java -jar bin/CustomDigits.jar'
At this stage I don't think I'll be developing this suite of applications further. However, if there are enough people who want it, I'll consider it.COMPUTER CONVERSATION SIMULATOR
Lizzy is an extension to the Java implementation of Eliza written by Charles Hayden, http://www.chayden.net/eliza The primary enhancement is that it also possesses a voice synthesis capability providing for a more realistic and engaging computer conversation simulation experience. To 'speak' with Lizzy, simply type your topic of conversation into the textfield at the bottom of the window and click 'OK'. Operation of the rest of the program should be intuitive. It should be noted that in order for the speech synthesis capability and hence this program to work it is required that 'festival', http://www.cstr.ed.ac.uk/projects/festival/ be installed.
PARALLEL PORT UTILITY PROGRAM
This version of the K74 program is designed to be specifically used with the SpeechSuite group of programs and Binh Nguyen's Home Control Prototype Device (HCPD), a device which provides a real world example of an aesthetically pleasing and truly inexpensive voice activated power control mechanism.
CONFIGURATION CLEANER
This script is designed to address the the problem of having a cluttered home directory full of "dotfiles". It basically moves all of your configuration files into a .etc directory which is located in your home directory and creates symblic links to them so that existing applications remain unbroken. This is a first release so there may be bugs. You should be in your home directory as you run it. However, I've left this condition out so that you may test it on a non-critical directory before trying it in your home directory. To use the new layout run the program with the "new" parameter. To revert to the old layout run it with the "old" parameter.
VOICE RECOGNIZING/SYNTHESISING PROGRAM LAUNCHER/SHELL
This program is an extension of the GUIShell project whose primary
aim is to make the shell interface more useable. The key differences
though are
that it possesses a speech synthesis and recognition capablity. Also
there is no 'real program'. All the source code is generated by the
runme.sh file. Though this is slow it will call other scripts
which will search through the entire system based on your PATH
environment,
get their 'whatis' descriptions, sort them and format them. During this
process
all files are stored in *.tml files. Finally, the file is split
alphabetically and stored in *.bml files. After this, the Java
sourcecode
is created and moved into their correct locations, 'ant' (a more
advanced
version of 'make' and was designed with Java in mind) is called and the
main interface is brought up. Please note that for the speech
capablities
(and hence this program) to work the 'festival', 'ant', and 'sphinx'
programs must be installed in accordance with the instructions included
in the README file. Note that you only need to run the runme.sh script
once,
thereafter you can simply launch the GUIShellTutor main interface via
'java GUIShellTutor'or any of the 'letters' via 'java -jar bin/(Some
Letter)Digits.jar' from the location of your sphinx installation.
GUIShellTutorFast is a version of GUIShellTutor that speeds up
generation of code by a factor of four.
Sample Technology Devices
INSTRUCTIONS FOR BUILDING THE HCPD (HOME CONTROL PROTOTYPE DEVICE)
There currently exist many solutions by which to achieve home automation. However, in my opinion these solutions are either prohibitively expensive or are well.... ugly. With these issues in mind the Home Control Prototype Device (HCPD) was born. It basically makes use of the K74v2 PCB from, http://www.kitsrus.com and the associated software created by James Cameron, http://quozl.netrek.org. Please note, that the instructions that follow will be rather spartan given that I will assume that most people will have their own interpretation of how their device should look. Also, note that I am not a qualified electrical technician and that the wiring looks a bit peculiar due to my lack of materials. Please read this entire document (most especially the Disclaimer) before you make a decision as to whether you would like to build such a device.
Sample Technology Articles
These
articles focus on mechanisms through which one can establish network
connectivity and the basic steps towards building a firewall in Fedora 9.
Steve Ballmer once said that "innovation is not something that is easy to do in the kind of distributed environment that the open-source/Linux world works in". He argued that Microsoft's customers "have seen a lot more innovation from us than they have seen from that community" and that "Linux itself is a clone of an operating system that is 20-plus years old...." (http://rss.com.com/2008-1082-998297.html).
Indeed, I must agree with most of what he says. However, it is not without some derision that I do so. After all, if we were to examine the core of the Microsoft Operating System we could also come to the same conclusion. For example, the basis for the latest and greatest iteration of the Microsoft Operating System, 'Windows XP' is itself based on the Windows NT kernel which was conceived some 20-25 years ago. The GUI (Graphical User Interface) that has become so ubiquotous and at times beguiled is nothing more than an evolution of what was created at XEROX Parc Laboratories some 30 years ago and TCP/IP? Well, we all know about that....
A few months ago we were asked to complete a program that was supposed to increase the usability of the Linux/UNIX shell interface as a university project. The basic idea was to provide a GUI (Graphical User Interface) that would give access to the most commonly used utilities on the command line, their options, as well as making the interface as usable and intuitive as possible. We were given a rough idea of how it was to be implemented and all in all most people ended up creating a very basic file manager like interface with a set of buttons representing commands running down the left hand side, a group of options represented as checkboxes next to them and then a command line at the bottom of the window which would allow for manual typing/editing of commands....
A recent post to a local LUG mailing list made set my mind wandering. The predicament was thus, believe it or not, an enterprise class server, a system worth tens of millions of dollars was purchased without an operating system. Furthermore, the proprietry operating system that was originally intended to be used and optimised for that machine was substantial to say the least (approximately $40000 AUSD). Hence, this user wanted to know whether Linux could be run on such a system. In short, the answer was yes. However, compromises had to be made but since this is not the topic that I wish to discuss I shall not delve into this issue any further.
In light of recent events, (especially in regards to SCO and its efforts to litigate IBM, Novell, all in all, almost the entire Linux world) I have had to begin to question the very nature of open source, how it has managed to alter the face of computing and most importantly, its impact upon software developers...
The /usr directory usually contains by far the largest share of data on a system. Hence, this is one of the most important directories in the system as it contains all the user binaries, their documentation, libraries, header files, etc.... X and its supporting libraries can be found here. User programs like telnet, ftp, etc.... are also placed here. In the original Unix implementations, /usr was where the home directories of the users were placed (that is to say, /usr/someone was then the directory now known as /home/someone). In current Unices, /usr is where user-land programs and data (as opposed to 'system land' programs and data) are. The name hasn't changed, but it's meaning has narrowed and lengthened from "everything user related" to "user usable programs and data"....
This document will review Linux on the HP NX5000 laptop computer. Supposedly, the first ever laptop to be designed with Linux in mind by a major computing company.
Sample Golf Articles
The culmination of this work was borne out of the frustration at the inability of a person (myself) to be able to hit a golf ball consistently in the same direction whether that may be at the driving range or on the golf course. Even though I had tried to mimic various different mechanical techniques such as those used by Hogan, Snead, Duval and even several different types of mental techniques such as those proposed by Chopra (2003) and Gallwey (1981), I could never gain any consistency from day to day without either practising constantly or completely immersing myself in the golfing experience via continual exposure to the sport whether that may be via watching television tournaments or even having a golf club near me at all times. Hence, I set about finding a way through which any golfer (primarily myself) could reduce the golf swing to a small number of key steps (much like Hogan did in his seminal work, Ben Hogan's Five Lessons - The Modern Fundamentals of Golf) so that he could theoretically play golf as little as twice a month and yet still be able to play reasonably competent golf (i.e. Score in the mid 80's and high 70's on the assumption that they have reasonable short games already). The target audience for this manuscript is primarily myself (just in case I forget how to swing a golf club) as well as golf enthusiasts who would an insight into how I have attempted to develop a swing myself or would like some ideas on how to further develop their own swing. Please note that I am not a professional golfer or instructor nor do I have intention becoming one. Golf was and continues to remain a marvellous curiosity in my life and will continue to remain so. As such, this document will be updated as time goes by based on my perception of what a golf swing should be (for me). Further, while this document provides a fairly good overview for what I believe a golf swing should feel and look like it is not a comprehensive manual for each and every person. If possible and whenever there are competent and ethical professionals near by, by all means seek their help. They have spent years studying existing methodologies and understand what techniques may suit your existing physical and mental capabilities.
The purpose of this article is to provide an overview of various different methods by which to generate power through technical/mechanical alterations to one's golf swing.
The purpose of this article is to provide details of several methods of generating spin using wedges.
The purpose of this article is to provide details on how to improve the game of golf (especially at the amateur level).
This document is essentially a collection of websites and forums that I have found to be informative and worthwhile. As one can see, there are no manufacturers or company websites listed here. For the most part, these websites and forums are run independently so most information can be assumed to be relatively unbiased.
The purpose of this article is to provide details of several methods on shot shaping. That is, techniques through which one will be able to manipulate the trajectory of the ball such as causing the ball to spin left to right or changing the height of your ball flight. IT IS ASSUMED THAT YOU ALREADY HAVE A CONSISTENT SWING.
The purpose of this article is to provide details of several methods on playing the running chip shot.
The purpose of this article is to explore some of the issues that can be caused by tension in the golf swing.
The purpose of this article is to explore methods through which to control distance (especially with regards to pitch shots which seems to be weakness of many amateurs that I've seen).
This is a simple review of the book entitled, Paper Tiger by Tom Coyne. (2006)
The purpose of this article is to outline some of the reasons why I believe learning through feel in combination with conventional teaching methods is superior than purely through conventional positioning techniques alone.
The purpose of this article is to explore methods through which to achieve better synchronisation in the golf swing.