# Dr. Sajid Muhaimin Choudhury

>
Hello,

#### I'm Dr. Sajid Muhaimin Choudhruy

I am currently working in the Department of Electrical and Electronic Engineering of Bangladesh University of Engineering and Technology, Dhaka-1205. My official website is located at sajid.buet.ac.bd. I previously maintained various personal blogs and websites (sajidmc.net). I decided to move to a permanent web solution to host all my previous blogposts.

##### Blog
A reader of my blog was kind to let me know by telephone that he was eager to use Google dictionary with my inline dictionary bookmarklet. So today I am launching the Google version of my bookmarklet. As usual, drag them to your browser bar to use. The English to Bangla dictionary is still being developed, and not that robust.

[English to Bangla]

[English to English]

I like wordpress  as a blogging environment. And freebeehosting is a as great as a hosting platform can ever be. But for my academic materials, I need a hosting platform that is 24x7 available without any interruption. Google sites seemed to be a good option.

The BUET website management allows to upload 5 files at a time. So all I did was to create an index.html file with iframe set to my google site page.

Google sites give options to rapidly create a website. I edited a default theme to incorporate the BUET logo into the banner. Problem is, you can’t have any custom CSS or javascript code, and if you are logged in, the google icons appear overhead.

Nevertheless, it is where I am hosting all my course related materials.

My BUET page: teacher.buet.ac.bd/sajid

Update: Some of my friends are also using this technique. I'll keep link of their sites here:

Raisul  - http://teacher.buet.ac.bd/raisulislam (Hosting24)

I like wordpress  as a blogging environment. And freebeehosting is a as great as a hosting platform can ever be. But for my academic materials, I need a hosting platform that is 24x7 available without any interruption. Google sites seemed to be a good option.

The BUET website management allows to upload 5 files at a time. So all I did was to create an index.html file with iframe set to my google site page.

Google sites give options to rapidly create a website. I edited a default theme to incorporate the BUET logo into the banner. Problem is, you can’t have any custom CSS or javascript code, and if you are logged in, the google icons appear overhead.

Nevertheless, it is where I am hosting all my course related materials.

My BUET page: teacher.buet.ac.bd/sajid

Avro and other phonetic typing software enabled us to forget about memorizing the so called “Bijoy Keyboard”, where h means ba and l means da. Any way, I don’t like their keyboard for one reason: you have to keep pressing the shift key to switch between letters. To me, phonetic typing means I’ll type the pronunciation in English, and computer will understand what I mean. That is when Google Transliteration came. First it started as a browser based text only editor. Then it brought rich text editor support and bookmarklets to support any web based text editor. But it still isn’t enough. I do a lot of typing using windows live writer and Microsoft Word. So I was still somewhat dependent on Ekushey and Avro. Now google has decided to end that misery. Google has launched it’s own version of Ekushey, the Google Indic IME. Imagine what google has to offer:

• Offline Support - No dependency on internet connection.

• Word Completions - Dictionary based word completions for prefixes.

• Personalized Choices - Remember user corrections for personalized service.

• Easy Keyboard - Dictionary enabled keyboard to enter rare and complex words.

• Cool Customization - Customize suggestions page size, display font and more.

Beware, however that Google will be able to access every word you type, so careful what you are typing. Download it from : http://www.google.com/ime/transliteration/index.html Some people may have some difficulty with google update behind a firewall. (Especially my BUET colleagues). For them, here is a direct link to the installer. http://sites.google.com/site/sajiduc/my-files/googlebengaliinputsetup.zip

This series is from my Chords collection, some of which I collected online, and some of which I figured out with software. Many of the chords may have errors, as they were done when I was just learning to play the guitar and used blogger as a diary. These chords are here in my blog, just as they represent my journey with my guitar. I now upload mostly in the Ultimate Guitar. (Click here to go to my user profile there.)
খালিদ হাসান মিলুর গাওয়া  অসাধারণ একটি গান|

কতদিন দেখিনা মায়ের মুখ
শুনি না সেই কোকিল নামের
কালা পাখির গান
হায়রে পরান

হায় রে আমার গাঁয়ের বাড়ি
সারি সারি গরুর গাড়ি
মরা নদীর চর

দিঘির জলে হাঁসের খেলা
ঘরের চালে দুপুর বেলা
রঙ্গিলা কইতাম

উঠানে ছরাইনা সোনার ধান
হায়রে পরান

কতদিন ধরিনা ডোবায় মাছ
করি না সেই মরা নদীর
মিঠা পানি পান
হায়রে পরান

হায়রে আমার রাখল মিয়া
কাজলা গরুর গোসল দিয়া
মাঠে নিয়া যায়
বিকাল বেলা বাঁশের বনে
ঝিকি মিকি রোদের সনে
মন মিলাইতে চায়

ভুলিতে পারি না মাটির টান
হায় হায়রে পরান

কতদিন রাখিনা চাঁদের খোঁজ
দেখিনা সেই তারার চকের
মিছা অভিমান
হায় রে পরান
খালিদ হাসান মিলুর গাওয়া  অসাধারণ একটি গান|

কতদিন দেখিনা মায়ের মুখ
শুনি না সেই কোকিল নামের
কালা পাখির গান
হায়রে পরান

হায় রে আমার গাঁয়ের বাড়ি
সারি সারি গরুর গাড়ি
মরা নদীর চর

দিঘির জলে হাঁসের খেলা
ঘরের চালে দুপুর বেলা
রঙ্গিলা কইতাম

উঠানে ছরাইনা সোনার ধান
হায়রে পরান

কতদিন ধরিনা ডোবায় মাছ
করি না সেই মরা নদীর
মিঠা পানি পান
হায়রে পরান

হায়রে আমার রাখল মিয়া
কাজলা গরুর গোসল দিয়া
মাঠে নিয়া যায়
বিকাল বেলা বাঁশের বনে
ঝিকি মিকি রোদের সনে
মন মিলাইতে চায়

ভুলিতে পারি না মাটির টান
হায় হায়রে পরান

কতদিন রাখিনা চাঁদের খোঁজ
দেখিনা সেই তারার চকের
মিছা অভিমান
হায় রে পরান

আপনি যদি কোন শব্দের আভিধানিক অর্থ পেতে চান, তবে ব্রাউজার উইন্ডোতে সরাসরি তা পেতে পারেন। এই বুকমার্কলেটটি ব্যবহার করুন:

Define It

ব্যবহার:

লেখা থেকে কোনও শব্দ নির্বাচন করুন ও Define It!  এ ক্লিক করুন। আপনার ব্রাউজার উইন্ডোতে সরাসরি শব্দের অর্থ দেখাবে

If you need to quick peek for the meaning of a word in the dictionary, you can use this bookmarklet. Just Drag it to your bookmark toolbar and enjoy.

### Prothom Alo and other Bangla news papers use non Unicode fonts. These pages cannot be viewed properly using Firefox or Google Chrome.

Use this bookmarklet to convert sites such as Prothom Alo, ... to Unicode

# [ইউনিকোড]

This bookmarklet is recommended. Drag it to your bookmark bar, and click on it to correct Bangla rendering in Firefox or Chrome

## [Ascii 2 Uni Bangla]

News sites use three type of encoding. Use these bookmarklets to Change manually, the encoding of the page. (If you select the wrong encoding, press refresh to reload the page)

## [BijoyMJ 2 UniBangla]

Used in amadershomoy.com, ittefaq.com, bhorerkagoj.net, manabzamin.net, jaijaidin.com

[BijoyShamokal 2 UniBangla]

Used in shamokal.com

## [Alpona 2 UniBangla]

Used in Prothom Alo

If you are using firefox, or using chrome with grease monkey, you can add the script directly without needing to press the bookmarklet every time.

Declaration: The Grease monkey scripts are largely adapted, and to be more specific, copy-pasted and minorly edited from the Poroshmoni extesion by Rifat Nabi . Special thanks to him for providing the firefox extension. However, in the firefox extension page, no license is specified for the extension. So it might be copyright protected. This article is for educational purpose only, following the "Fair Use" policy of US Copyright law. You are forbidden to use this information for commercial purpose

### Prothom Alo and other Bangla news papers use non Unicode fonts. These pages cannot be viewed properly using Firefox or Google Chrome.

Use this bookmarklet to convert sites such as Prothom Alo, ... to Unicode

# [ইউনিকোড]

This bookmarklet is recommended. Drag it to your bookmark bar, and click on it to correct Bangla rendering in Firefox or Chrome

## [Ascii 2 Uni Bangla]

News sites use three type of encoding. Use these bookmarklets to Change manually, the encoding of the page. (If you select the wrong encoding, press refresh to reload the page)

## [BijoyMJ 2 UniBangla]

[BijoyShamokal 2 UniBangla]

Used in shamokal.com

## [Alpona 2 UniBangla]

Used in Prothom Alo

If you are using firefox, or using chrome with grease monkey, you can add the script directly without needing to press the bookmarklet every time.

Declaration: The Grease monkey scripts are largely adapted, and to be more specific, copy-pasted and minorly edited from the Poroshmoni extesion by Rifat Nabi . Special thanks to him for providing the firefox extension. However, in the firefox extension page, no license is specified for the extension. So it might be copyright protected. This article is for educational purpose only, following the "Fair Use" policy of US Copyright law. You are forbidden to use this information for commercial purpose

Using the Wordpress for Latex Plugin, I'm able to use Latex Equations in my post now
$$\alpha+\beta\geq\gamma$$

This might come in handy, for explaining some equations here. I could not install Latex on my webserver, so I am just using the default public server given by wordpress
http://wordpress.org/extend/plugins/latex/

Using the Wordpress for Latex Plugin, I'm able to use Latex Equations in my post now
$$\alpha+\beta\geq\gamma$$

This might come in handy, for explaining some equations here. I could not install Latex on my webserver, so I am just using the default public server given by wordpress
http://wordpress.org/extend/plugins/latex/

Most people programming at Matlab first get accustomed to some other programming languages like C, C++, Java or even Visual Basic. They learn tactics of manipulating arrays with loops. But as more and more loops are added to a program, the clumsier it gets. In Matlab also, the techniques learned at the previous mentioned languages can apply. But Matlab has some other advantages. In Matlab, every variable is a matrix. This gives some inherent advantages of matrix manipulation. In C, (and in C++ without having a custom class) you will not be able to do a matrix multiplication by simple A*B, in Matlab, you have a provision of doing so.

Ok let's start with some basic array operations. These may not be arcane secrets, still it's always good to know.

## Identity Matrix, Zero Matrix and Unity Matrix

n = 3;
A = eye (n); %creates n x n identity matrix
A = eye (n, 1); %creates n x 1 identity matrix
A = zeros(n); % creates n x n zero matrix (all elements zero)
A = ones(n); %  creates n x n  matrix (all elements one)

## A set of linearly increasing values

This one is useful if you are making a sine wave or other functions.  linspace (initialvalue, finalvalue, number of samples)
t = linspace (0, 2*pi, 1000); %creates linearly increasing array with values 0 to 2*pi
S = sin (t);  % creates the sine wave

## Accessing a particular row or column

A(i,:) = 1 % makes all the elements of row i of matrix/vector A equal to 1.
A(:,i) = 1 % does the same thing with column 1.
B = A(i,:) % stores row i in a row vector B

## Accessing more than one rows/columns simultaneously

A = ([1,
A([i,j],:) = 1 % makes all elements of rows i and j equal to 1
B = A(:,[i,j])% B is a matrix with columns i and j of A as its two columns

## Swapping rows / columns

A([i,j],:) = A([j,i],:) % swaps the elements of rows i and j
A(:,[i,j]) = A(:,[j,i]) % swaps the column elements of col i and col j

## Replacing Values of A

To make a unipolar signal bipolar:
A = double(A); % required if the signal is of boolean type
A (A==0) = -1;

## The find( ) function

Used to find index of elements satisfying some condition.
find(A) % returns indices of all non-zero elements
find(A > 5) % finds indices of all elements greater than 5.
length(find(A==1)) %number of ones in A

## Inserting blank Rows / Columns:

A = [zeros(1,n-1); A]; % insert column
A = [A zeros(n,1)]; %insert Row

## Repeating or tiling a Matrix

Use repmat() to tile matrix to form a larger version.
A = [1 2 3; 4 5 6]

A =



1 2 34 5 6



>> repmat(A, 3, 3)



ans =



1 2 3 1 2 3 1 2 3

 4 5 6 4 5 6 4 5 61 2 3 1 2 3 1 2 34 5 6 4 5 6 4 5 61 2 3 1 2 3 1 2 34 5 6 4 5 6 4 5 6

## Deleting a row/column of a matrix

A(i) = [] % Deletes the i-th element of a row/column vector A
A(i,:) = [] % Deletes an entire row
A(:,i) = [] % Deletes an entire row

## Changing Size of Matrix

Wanna make a 3x4 matrix a 2x6 Matrix?
use the reshape command
A = [2 3 4 5; 6 7 8 9]



A =

2 3 4 56 7 8 9



>> reshape (A, 4, 2)

ans =



2 4

 6 83 57 9

If you want to make only a vector,
B = A(:);

Warning: reshape, *ALWAYS* takes data from columns, and put them in column serially. You may get unexpected result, if, you want the data to be taken from rows instead. Try to transpose the matrix (A') instead.

## Ctrl+C. Break the running loop of Matlab.

You may need to select the command window first to activate this.

## Making Plots pretty

http://blogs.mathworks.com/loren/2007/12/11/making-pretty-graphs/

## Repeating Values of a Matrix

### Kronecker Tensor Product

Use the Kronecker Tensor Product function (kron),

A = [1 2 3]

A =

1 2 3

 >> kron (A, ones(1, 3))

ans =

1 1 1 2 2 2 3 3 3

### Tony's Trick

This is a popular (and allegedly faster) trick used to form a matrix by repeating a row/column vector. (Courtesy of omar)

B = A(ones(3,1),:)
*Example:
>> A =[1 2 3] % A is a row vector

>> B = A(ones(3,1),:)
>> B =

1 2 3
1 2 3
1 2 3

>> A = [1 ; 2 ; 3] % A as a column vector

>> B = A(:,ones(3,1))

>> B =

1 1 1
2 2 2
3 3 3

And WOW! it's really faster for replication in one dimension! For matrix A given above:
Elapsed time is 0.014354 seconds. %Using repmat()function
Elapsed time is 0.000063 seconds. %Using Tony's trick

Repeating Matlab row elements:

Based on the Tony's trick mentioned above, this is a program I've written for the 'time scaling' a matrix by repeating elements.
 %time scaling
function y = timescale (Mat, L)
[m, n] = size(Mat);
temp = zeros(m, n*L);
for i = 1:m
cur_row =Mat(i,:);
cur_row = cur_row (ones(1,L),:);
temp(i,:) = reshape(cur_row, 1, n*L);
end
y = temp;
end

Most people programming at Matlab first get accustomed to some other programming languages like C, C++, Java or even Visual Basic. They learn tactics of manipulating arrays with loops. But as more and more loops are added to a program, the clumsier it gets. In Matlab also, the techniques learned at the previous mentioned languages can apply. But Matlab has some other advantages. In Matlab, every variable is a matrix. This gives some inherent advantages of matrix manipulation. In C, (and in C++ without having a custom class) you will not be able to do a matrix multiplication by simple A*B, in Matlab, you have a provision of doing so.

Ok let's start with some basic array operations. These may not be arcane secrets, still it's always good to know.

## Identity Matrix, Zero Matrix and Unity Matrix

n = 3;
A = eye (n); %creates n x n identity matrix
A = eye (n, 1); %creates n x 1 identity matrix
A = zeros(n); % creates n x n zero matrix (all elements zero)
A = ones(n); %  creates n x n  matrix (all elements one)

## A set of linearly increasing values

This one is useful if you are making a sine wave or other functions. linspace (initialvalue, finalvalue, number of samples)
t = linspace (0, 2*pi, 1000); %creates linearly increasing array with values 0 to 2*pi
S = sin (t);  % creates the sine wave

## Accessing a particular row or column

A(i,:) = 1 => makes all the elements of row i of matrix/vector A equal to 1.
A(:,i) = 1 => does the same thing with column 1.
B = A(i,:) => stores row i in a row vector B

## Accessing more than one rows/columns simultaneously

A = ([1,
A([i,j],:) = 1 => makes all elements of rows i and j equal to 1
B = A(:,[i,j])=> B is a matrix with columns i and j of A as its two columns

## Swapping rows / columns

A([i,j],:) = A([j,i],:) => swaps the elements of rows i and j
A(:,[i,j]) = A(:,[j,i]) => swaps the column elements of col i and col j

## Replacing Values of A

To make a unipolar signal bipolar:
A = double(A); % required if the signal is of boolean type
A (A==0) = -1;

## The find( ) function

Used to find index of elements satisfying some condition.
find(A) % returns indices of all non-zero elements
find(A > 5) % finds indices of all elements greater than 5.
length(find(A==1)) %number of ones in A

## Inserting blank Rows / Columns:

A = [zeros(1,n-1); A]; % insert column
A = [A zeros(n,1)]; %insert Row

## Repeating or tiling a Matrix

A = [1 2 3; 4 5 6]

A =



1 2 34 5 6



>> repmat(A, 3, 3)



ans =

1 2 3 1 2 3 1 2 3

 4 5 6 4 5 6 4 5 61 2 3 1 2 3 1 2 34 5 6 4 5 6 4 5 61 2 3 1 2 3 1 2 34 5 6 4 5 6 4 5 6

## Deleting a row/column of a matrix

A(i) = [] % Deletes the i-th element of a row/column vector A
A(i,:) = [] % Deletes an entire row
A(:,i) = [] % Deletes an entire row

## Chaning Size of Matrix

Wanna make a 3x4 matrix a 2x6 Matrix?
use the reshape command
A = [2 3 4 5; 6 7 8 9]



A =

2 3 4 56 7 8 9



>> reshape (A, 4, 2)

ans =



2 4

 6 83 57 9

If you want to make only a vector,
B = A(:);

Warning: reshape, *ALWAYS* takes data from columns, and put them in column serially. You may get unexpected result, if, you want the data to be taken from rows instead. Try to transpose the matrix (A') instead.

## Ctrl+C. Break the running loop of Matlab.

You may need to select the command window first to activate this.

## Making Plots pretty

http://blogs.mathworks.com/loren/2007/12/11/making-pretty-graphs/

## Repeating Values of a Matrix

### Kronecker Tensor Product

Use the Kronecker Tensor Product function (kron),

A = [1 2 3]

A =

1 2 3

>> kron (A, ones(1, 3))

ans =

1 1 1 2 2 2 3 3 3

### Tony's Trick

This is a popular (and allegedly faster) trick used to form a matrix by repeating a row/column vector. (Courtesy of omar)

B = A(ones(3,1),:)
*Example:
>> A =[1 2 3] % A is a row vector

>> B = A(ones(3,1),:)
>> B =

1 2 3
1 2 3
1 2 3

>> A = [1 ; 2 ; 3] % A as a column vector

>> B = A(:,ones(3,1))

>> B =

1 1 1
2 2 2
3 3 3

And WOW! it's really faster for replication in one dimension! For matrix A given above:
Elapsed time is 0.014354 seconds. %Using repmat()function
Elapsed time is 0.000063 seconds. %Using Tony's trick

Repeating Matlab row elements:

Based on the Tony's trick mentioned above, this is a program I've written for the 'time scaling' a matrix by repeating elements.
 %time scaling
function y = timescale (Mat, L)
[m, n] = size(Mat);
temp = zeros(m, n*L);
for i = 1:m
cur_row =Mat(i,:);
cur_row = cur_row (ones(1,L),:);
temp(i,:) = reshape(cur_row, 1, n*L);
end
y = temp;
end

তান্ত্রিক জগতটার তন্দ্রা ছিড়ে
শকুনীর হিংস্র চোখের ফাঁদ চিরে
বাধ ভাঙ্গার উল্লাসে ওঠো মেতে,
ঝঞ্ঝা মাতোয়ারা এ রক্তিম ধরণীতে।

অশান্ত ধরায় যত ভয়াল দানব,
খঞ্জরের শিঞ্জনে আজ শিহরিত মানব!
রক্তের হোলিতে মেতেছে জন্তু জানব-
পিঞ্জর ভেঙ্গে ছুটে যাও শান্তির ঝান্ডা নেড়ে।

রণাঙ্গনের কলরবে পরিশ্রান্ত এ ধরা
যুদ্ধের দামামা আর শুনতে চায়না তারা
সাদা পতাকা, সাদা পায়রা, হোক না উড্ডীন
পিশাচীর যত রক্তপিপাসা, হয়ে যেতে দাও লীন।তান্ত্রিক জগতটার তন্দ্রা ছিড়ে
শকুনীর হিংস্র চোখের ফাঁদ চিরে
বাধ ভাঙ্গার উল্লাসে ওঠো মেতে,
ঝঞ্ঝা মাতোয়ারা এ রক্তিম ধরণীতে।

অশান্ত ধরায় যত ভয়াল দানব,
খঞ্জরের শিঞ্জনে আজ শিহরিত মানব!
রক্তের হোলিতে মেতেছে জন্তু জানব-
পিঞ্জর ভেঙ্গে ছুটে যাও শান্তির ঝান্ডা নেড়ে।

রণাঙ্গনের কলরবে পরিশ্রান্ত এ ধরা
যুদ্ধের দামামা আর শুনতে চায়না তারা
সাদা পতাকা, সাদা পায়রা, হোক না উড্ডীন
পিশাচীর যত রক্তপিপাসা, হয়ে যেতে দাও লীন।
This tutorial shows you how to create circuits in Proteus Isis, simulate them and then create PCB with Proteus.

Proteus is software for microprocessor simulation, schematic capture, and printed circuit board (PCB) design. It is developed by Labcenter Electronics.
The Proteus Design Suite inludes:
* ISIS - A schematic capture tool with the possibility to simulate programmable ICs like Microchip PIC, Atmel AVR (ATmega8, ATmega32, or ATtiny2313) etc.
*ARES - for PCB layouts.

The URL for Proteus is http://www.labcenter.co.uk/

Unfortunately, there are few / no good tutorials for Proteus out there, and therefore I took the trouble of making one myself. The tutorial has 3 parts. First part demonstrates Drawing circuits in Proteus Isis. Second part shows how to simulate circuits in Proteus ISIS, and how to export to ARES for making PCB layout. The third video shows Routing and how to print masks for PCB making.

আমি আরেকটি প্লাগইন রিলিজ করেছি, এটি primitive স্তরে আছে, তবে কাজ করে।  এটি একই সাথে খ্রিস্টাব্দ ও বঙ্গাব্দে তারিখ প্রদর্শন করে।

প্লাগইনটি Ajax calendar এর ভিত্তিতে বানানো (http://wordpress.org/extend/plugins/ajax-calendar/)

ডাউনলোড লিঙ্ক: http://wordpress.org/extend/plugins/bangla-ajax-calendar/

I've released a sidebar plugin for wordpress. The Plugin created a post calendar.

[caption id="" align="alignnone" width="312" caption="Wordpress Bangla Calendar"]
[/caption]

The plugin is based on Ajax calendar (http://wordpress.org/extend/plugins/ajax-calendar/)

http://wordpress.org/extend/plugins/bangla-ajax-calendar/
আমার ওয়ার্ডপ্রেস প্লাগইনটির পর আমার প্রোগ্রামটি দিয়ে একটি অনলাইন কনভার্টার বানিয়েছি। প্লাগইনটি দিয়ে ইংরেজি তারিখ কে তারিখ (বঙ্গাব্দে) রূপান্তর করা যায়।

ঠিকানা:

http://www.sajidmc.net/progs/bangladate/After my Wordpress Plugin, I have created an Online Converter with my program. It can convert English date of Gregorian calender to Bangla Date according to the Bangla Calender Proposed by Dr. Muhammed Shahidullah.

আমি ২০০১ সালে একটি প্রোগ্রাম লিখেছিলাম। প্রোগামটি Qbasic এ লেখা ও সেটি গ্রেগরীয় পঞ্জিকার তারিখ কে বাংলা পঞ্জিকার তারিখে রূপান্তর করতে পারত। প্রোগ্রামটি পরবর্তীতে Visual Basic 6 এ পরিবর্তিত করা হয়, ও বিজয় স্ক্রিপ্ট ব্যবপার করে বাংলা হরফে কারিখ প্রদর্শন করতে পারে। এখন আমি প্রোগ্রামটিকে ওয়ার্ডপ্রেসের Plugin হিসেবে তৈরি করেছি।

তেমন কোন কোডিং করতে হয়নি। শুধু Qbasic এর কোড কে PHP তে রূপান্তর করতে হয়েছে।

http://wordpress.org/extend/plugins/bangla-date/

আপনি অনলাইন কনভার্টার চাইলে এই পোস্টে দেখুনI created a program back in 2001. The program was written in qbasic, and it could convert English date of Gregorian calendar to Bengali date in the calender created by Dr. Md. Shahidullah. The program was ported to Visual Basic 6.0, and using bijoy script, the program was translated to bengali script. Now, Here in 2009, I had the idea of porting it to the increasingly popular blogging platform - wordpress.

Not much of coding had to be done. I simply converted the QBasic syntax to PHP.

http://wordpress.org/extend/plugins/bangla-date/

এই মাস্ক গুলো থমাস ফিচ্যাল এর বানানো ইউ এস বি প্রোগ্রামার এর জন্য আমি বানিয়েছি। (http://www.fischl.de/usbasp/)

I used series resistors with MOSI MISO SCK and RST lines. They are used for protection of the ATmega8 of the programmer. They can be replaced with short circuits like the original design.In my design, the resistors probably causes some rise time issue, so the programmer will not work unless the slow sck jumper is shorted out. And power is not drawn from the USB port, and taken from the external circuit. Reversing polarity of Vcc and GND will certainly cause the programmer to die. I included a Zener Diode in my design to limit the reverse polarity voltage, but don't know how effective it would be. I'll try to make another design with 5 wire-output, that draws power from USB port.

These masks are designed by me for the USB ASP Programmer designed by Tomas Fischl (http://www.fischl.de/usbasp/)

I used series resistors with MOSI MISO SCK and RST lines. They are used for protection of the ATmega8 of the programmer. They can be replaced with short circuits like the original design.In my design, the resistors probably causes some rise time issue, so the programmer will not work unless the slow sck jumper is shorted out. And power is not drawn from the USB port, and taken from the external circuit. Reversing polarity of Vcc and GND will certainly cause the programmer to die. I included a Zener Diode in my design to limit the reverse polarity voltage, but don't know how effective it would be. I'll try to make another design with 5 wire-output, that draws power from USB port.

Today, I went to make the PCB of my AVR USB Programmer (USBASP). BUET Students usually go to 'Toru Bhai'  for making PCBs. I did my design in Proteus Isis and Ares. I talked to Toru Bhai, and he asked me to bring print out of the masks I designed. Basically 3 masks are required for single layer PCB:

Bottom Copper

Top Components (Silk Screen)

Solder Resist

Although, Toru Bhai is reluctant to do the Solder Resist, as he claims it is too expensive. As I went today in his 'factory', in 6/1/F, Ram Krishna Mission Road, he didn't have much work load and insisted me to wait and take my PCB with me. So I watched the fabrication process. Surprisingly, the screen printing is very much similar to VLSI fabrication.

Basically, a thin fabric with tiny holes in it is first covered in paint, and the tracing paper with the print out of the pattern is held in front of it. The screen is enclosed in glass, and exposed to solar light. The region covered by ink in the tracing paper remain unchanged, but the region exposed to light hardened. The screen is then washed, and the region covered by ink on tracing paper during solar exposure has its paint removed.

Then the screen is used to imprint the pattern of the tracing paper on copper board. The paint has to be insoluble to water. After the print, the board is submerged to FeCl3 (Ferric Chloride). Regions not covered by paint has its copper removed, as Copper reacts with FeCl3 to produce Cu-Chloride.

Afterwards, the paint is removed. Then holes are drilled to it, and the top layer patterns are drawn accordingly.

I got some pictures of the process:
The lab:

A screen looks like this:

Fitting the screen

Patternizing
FeCl3 Etching

Drilling Holes

Grinder used to smoothen the sides

Finally I could get my USB programmer to work with windows vista. Firstly, I stripped of the breadboard from all previous connections, and reconnected the circuit. This ofcourse proved fatal to two of my microcontrollers, as I accidentally connected +12V to Vcc rail, instead of the input to the 7805 IC. I connected the programmer to PC, and it said unknown device. I knew I connected the D+ and D- wires from USB port wrong. The final bread board looks like this:

So I swapped them and replugged the USB. This time the device was recognised as usbasp, and windows vista asked for driver. I supplied the libusb driver given with the fischel's package (http://www.fischl.de/usbasp/). Windows said something about device compatibiliy. I chose to ignore, and the device installed successfully.

Now I opened command prompt and typed  avrdude -c usbasp -p t2313

Command prompt returned  error: could not find USB device "USBasp" with vid=0x16c0 pid=0x5dc

I tried to search the forums. They suggested to use 2007 build of winavr, I tried that (replaced avrdude.exe in the C:\winavr\bin directory with the 2007 version). Some of them also suggested to use an older version of libusb. So I did that too. After spending an hour, I did some thing I should have done a long time ago. I clicked on the orb (start), typed 'cmd', so Vista start menu searched cmd.exe. I right clicked on it and selected "Run as Administrator". Now when I typed

C:\Windows\system32>avrdude -c usbasp -p t2313
found 8 busses

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.02s

avrdude: Device signature = 0x1e910a

avrdude: safemode: Fuses OK

avrdude done.  Thank you.

Wow, the device actually worked!! I tried several times and it was working. I started the AVR8-Burn-O-Mat and changed some settings.

Burn O Mat seems to work fine too. Just too bad it doesn't have the buffer of ponyprog, and the hex display. It is just great otherwist, and has a lot better fusebit editor.

Sajid Choudhury
+9665650