<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3852393033332471751</id><updated>2011-11-27T16:28:02.903-08:00</updated><category term='Swing'/><category term='C#'/><category term='Writing services'/><category term='word processing'/><category term='consonant vowel'/><category term='passphrase generation'/><category term='Markup languages'/><category term='CV writing'/><category term='Eclipse'/><category term='SharpDevelop'/><category term='.Net'/><category term='typeset mathematics'/><category term='IT. Information technology'/><category term='Mono'/><category term='MonoDevelop'/><category term='LaTex'/><category term='Winforms'/><category term='equation handling'/><category term='algorithm'/><category term='Java'/><category term='password'/><category term='Text Processing'/><category term='OS X'/><category term='GUI'/><title type='text'>Alex Kashko</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://alexkashko.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3852393033332471751/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://alexkashko.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>AlexK</name><uri>http://www.blogger.com/profile/11330042575905359270</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_NM6m7bxKC7E/SfymmdJJX1I/AAAAAAAAAAM/nr3J2mJW96o/S220/P1120587+copy.JPG'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>6</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3852393033332471751.post-5030213973353147098</id><published>2009-06-24T10:52:00.000-07:00</published><updated>2009-06-24T11:01:45.865-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Markup languages'/><category scheme='http://www.blogger.com/atom/ns#' term='typeset mathematics'/><category scheme='http://www.blogger.com/atom/ns#' term='equation handling'/><category scheme='http://www.blogger.com/atom/ns#' term='LaTex'/><title type='text'>Basic LaTeX</title><content type='html'>&lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Arial"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, -webkit-fantasy; "&gt;I have indicated there are good reasons to use LaTeX, the markup language developed by Lamport to run on top of Knuth's Tex. If you have read my earlier post and installed LaTeX  here is an annotated file you can use  as a building block for  a simple  project. I developed it on an Apple powerbook using MacTex&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Times New Roman; min-height: 15.0px"&gt;&lt;span class="Apple-style-span"  style="font-family:'Times New Roman', -webkit-fantasy;"&gt;&lt;span class="Apple-style-span" style="font-size: -webkit-xxx-large;"&gt;&lt;span class="Apple-style-span"   style="font-family:'Times New Roman', fantasy;font-size:100%;"&gt;&lt;span class="Apple-style-span" style="font-size: 12px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Arial"&gt;&lt;b&gt;% File to show  basic usage of Latex&lt;/b&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Arial"&gt;&lt;b&gt;% © Alex Kashko 2009&lt;/b&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Times New Roman; min-height: 15.0px"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Arial"&gt;&lt;b&gt;% a "%" sign is a comment&lt;/b&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Arial"&gt;&lt;b&gt;\documentclass[11pt]{article}  &lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;% This tells LaTeX what type of  document to produce&lt;/b&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Times New Roman; min-height: 15.0px"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Arial"&gt;&lt;b&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;% This is the prolog to the document. MOST things here apply to the whole&lt;/b&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Arial"&gt;&lt;b&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;% Document and   any documents read in using \include{filename}&lt;/b&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Arial"&gt;&lt;b&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;% Font size changes  made here seem to have no effect&lt;/b&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Times New Roman; min-height: 15.0px"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Arial"&gt;&lt;b&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;\usepackage{hyperref}  &lt;span class="Apple-tab-span" style="white-space:pre"&gt;     &lt;/span&gt;% package (stylesheet) used to convert &lt;/b&gt;&lt;/p&gt;&lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Arial"&gt;&lt;b&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;           &lt;/span&gt;%every \ref to a link&lt;/b&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Arial"&gt;&lt;b&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;\pagestyle{myheadings}&lt;span class="Apple-tab-span" style="white-space:pre"&gt;     &lt;/span&gt;% Define  how headers  and page&lt;/b&gt;&lt;/p&gt;&lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Arial"&gt;&lt;b&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;           &lt;/span&gt;%numbering are handled&lt;/b&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Arial"&gt;&lt;b&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;\parskip 0.3 cm&lt;span class="Apple-tab-span" style="white-space:pre"&gt;       &lt;/span&gt;% Gap between paragraphs&lt;/b&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Arial"&gt;&lt;b&gt;%&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;\newfont{\helvetica}{cmss12}&lt;span class="Apple-tab-span" style="white-space:pre"&gt;    &lt;/span&gt;% Define a reference to a font.&lt;/b&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Arial"&gt;&lt;b&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;\textheight 9 in&lt;span class="Apple-tab-span" style="white-space:pre"&gt;       &lt;/span&gt;% Depth of printed matter on page.&lt;/b&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Arial; min-height: 18.0px"&gt;&lt;b&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;&lt;/b&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Arial"&gt;&lt;b&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;% start of document&lt;/b&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Arial"&gt;&lt;b&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;\begin{document}&lt;/b&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Arial"&gt;&lt;b&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;\section{in the beginning \label{math}}&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;% Define a label for the section&lt;/b&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Arial"&gt;&lt;b&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;\Huge  &lt;span class="Apple-tab-span" style="white-space:pre"&gt;         &lt;/span&gt;%change fontsize till further notice &lt;/b&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Arial"&gt;&lt;b&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;            &lt;/span&gt;%(\normalsize for example) &lt;/b&gt;&lt;/p&gt;&lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Arial"&gt;&lt;b&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;            &lt;/span&gt;% Case sensitive&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;&lt;/b&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Arial; min-height: 18.0px"&gt;&lt;b&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;             &lt;/span&gt;&lt;/b&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Arial"&gt;&lt;b&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;\bf{HELLO WORLD} \rm    &lt;span class="Apple-tab-span" style="white-space:pre"&gt;     &lt;/span&gt;%\rm returns font style to normal&lt;/b&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Arial; min-height: 18.0px"&gt;&lt;b&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;&lt;/b&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Arial"&gt;&lt;b&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;\begin{equation} &lt;/b&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Arial"&gt;&lt;b&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;x=3\alpha  &lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;\label{magnify}&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;% label the equation &lt;/b&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Arial"&gt;&lt;b&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;             &lt;/span&gt;% refer to the equation with &lt;span class="Apple-tab-span" style="white-space:pre"&gt;             &lt;/span&gt;%\ref{magnify}&lt;/b&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Arial"&gt;&lt;b&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;\end{equation}&lt;/b&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Arial; min-height: 18.0px"&gt;&lt;b&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;&lt;/b&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Arial"&gt;&lt;b&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;\begin{equation}&lt;/b&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Arial"&gt;&lt;b&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;2^{\aleph_0} = C &lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;\label{continuum}&lt;/b&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Arial"&gt;&lt;b&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;\end{equation}&lt;/b&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Arial; min-height: 18.0px"&gt;&lt;b&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;&lt;/b&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Arial"&gt;&lt;b&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;Equation \ref{magnify} deals with scaling   and \ref{continuum} is to do with logic&lt;/b&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Times New Roman; min-height: 15.0px"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Arial"&gt;&lt;b&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;\section{next}&lt;/b&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Arial; min-height: 18.0px"&gt;&lt;b&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;&lt;/b&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Arial"&gt;&lt;b&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;And now for something totally different from \ref{math}&lt;/b&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Arial"&gt;&lt;b&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;\end{document}&lt;/b&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Arial"&gt;&lt;b&gt;\end&lt;/b&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Times New Roman; min-height: 15.0px"&gt;&lt;br /&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Times New Roman; min-height: 15.0px"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Arial"&gt;The structure  of the file is &lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Times New Roman; min-height: 15.0px"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Arial"&gt;&lt;b&gt;\documentclass[11pt]{article}&lt;/b&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Arial"&gt;&lt;b&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;% Document prologue goes here&lt;/b&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Arial"&gt;&lt;b&gt;\begin{document}&lt;/b&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Arial"&gt;&lt;b&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;% Latex commands go here&lt;/b&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Arial"&gt;&lt;b&gt;\end{document}&lt;/b&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Arial"&gt;&lt;b&gt;\end&lt;/b&gt;&lt;/p&gt;&lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Arial"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Arial"&gt;The prologue defines global formatting and this can be over-ridden in the document. &lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Times New Roman; min-height: 15.0px"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Arial"&gt;Cut and paste the document (bold text above)   into a file  beginlatex.tex&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Arial"&gt;From the command line type&lt;/p&gt;&lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Arial"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Arial"&gt;latex beginlatex.text&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Arial"&gt;dvipdf beginlatex.dvi&lt;/p&gt;&lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Arial"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Arial"&gt;Ignore the other files produced. They are fun to look at though&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Times New Roman; min-height: 15.0px"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Arial"&gt;You should get a PDF file   you can open in any reader and see the formatting. On my powerbook the links are highlighted.&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Times New Roman; min-height: 15.0px"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Arial"&gt;In future posts I will  look at top down document structuring basing  the presentation on the maths textbook I had published a few years ago.&lt;/p&gt;&lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Arial"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Arial"&gt;Enjoy&lt;/p&gt; &lt;p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Times New Roman; min-height: 15.0px"&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3852393033332471751-5030213973353147098?l=alexkashko.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alexkashko.blogspot.com/feeds/5030213973353147098/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://alexkashko.blogspot.com/2009/06/ba-sic-latex-alex-kashko-2008-i-have.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3852393033332471751/posts/default/5030213973353147098'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3852393033332471751/posts/default/5030213973353147098'/><link rel='alternate' type='text/html' href='http://alexkashko.blogspot.com/2009/06/ba-sic-latex-alex-kashko-2008-i-have.html' title='Basic LaTeX'/><author><name>AlexK</name><uri>http://www.blogger.com/profile/11330042575905359270</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_NM6m7bxKC7E/SfymmdJJX1I/AAAAAAAAAAM/nr3J2mJW96o/S220/P1120587+copy.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3852393033332471751.post-8020329036058275168</id><published>2009-06-20T13:36:00.000-07:00</published><updated>2009-06-20T13:42:38.205-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IT. Information technology'/><category scheme='http://www.blogger.com/atom/ns#' term='Markup languages'/><category scheme='http://www.blogger.com/atom/ns#' term='Text Processing'/><category scheme='http://www.blogger.com/atom/ns#' term='word processing'/><category scheme='http://www.blogger.com/atom/ns#' term='LaTex'/><title type='text'>Why your enterprise should use LaTex</title><content type='html'>Digital text production today is dominated by the word processor and the word processor universe is dominated by Microsoft Word, though free open source products such as Open Office are, as of 2009 challenging that dominance.  While word processors have a lot of advantages  they also have some disadvantages ad tend to be a middle ground between text processing and desktop publishing.&lt;br /&gt;&lt;br /&gt;A word processor  formats  the text on screen in real time to give a close approximation to the format the  user intends. The user can then save their work or print it.&lt;br /&gt;&lt;br /&gt;An alternative approach, no longer in fashion, is the markup language. When working  with a markup language the textual content is produced in a text editor,  embellished with  markup tags, and  sent to a preprocessor which formats the text  the way the author intended.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-weight: bold;"&gt;Advantages of  markup languages  &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;These include freedom from  macro viruses, voiding vendor lock-in -  the preprocessor is given a plain ascii text file to to work on, zero risk of data loss from corruption of the source file, ability to enforce standards, ability to divide work on a document within a team, and easier programmatic generation and manipulation of documents.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-weight: bold;"&gt;Disadvantages of  markup languages&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;Disadvantages of markup languages such as HTML, SGML, XML, and the early languages such as nroff and troff  include a perceived learning curve and the possible obscuration of the content by the markup tags.   It is true that a beginner will initially be more productive with a  word processor  than with a markup language but  the learning curve for real mastery of Word or Open Office is probably greater than with a markup language such as LaTeX. When it comes to programmatic manipulation of a document  a markup language  can reduce development time and cost dramatically.  One major issue with a markup language if you are seeking work is that almost all recruiters require a CV in Word Format.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-weight: bold;"&gt;Which to use?&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Horses for courses. If you are seeking work or need to get a short document out quickly use a Word processor.  Using a word processor becomes unpleasant for long documents and  it is hard, if not impossible, to create a word processor document on which many people can work at the same time.&lt;br /&gt;If you  need to produce a flyer or a brochure  a full desktop publishing program is more appropriate. If you need to produce a book or a long report where adherence to in-house or legal standards is needed a markup  Language such as LaTeX  can enforce the standards without the user noticing.  If you are producing mission critical documents a markup language will eliminate the risk of your source data becoming unreadable.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-weight: bold;"&gt;What can you do with LaTeX&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;LaTeX is a text markup language now  under continuous improvement by a group of  experts. It has a moderate learning curve and allows the user to do just about  everything a word processor user  would want to do – but not   writing macro viruses – though some features like embedding a spreadsheet in a document may require non trivial skills.  It is possible to produce indexes, lists of figures and tables, a table of contents and embed pictures and animations using LaTeX, and CJK (Chinese, Japanese Korean) writing is possible. Output can be to a printer  or to a PDF HTML or postscript file. In principle LaTeX could be used to generate web pages though PHP is probably more suitable for this, at the cost of a higher learning curve.  It is easy however to create a document in such a way that more than one person can work on it at a time. This has obvious advantages for internal corporate security. Technical people can work on tech ical sections and  work on sensitive portions of the document can be confined to those authorised to handle such data.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-weight: bold;"&gt;Resources&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;Hopefully the discussion so far has established that there may be a place for LaTeX in the enterprise along with Word Processors and Desktop Publishing Systems.&lt;br /&gt;&lt;br /&gt;There are many distributions of LaTeX  on the internet, either free or commercial. MikeTex for Windows, MacTex for OS X  and various varieties for Linux and other forms of UNIX. Resources for learning are easy to find and there is a thriving user community.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.latex-project.org/ftp.html"&gt; The Latex project &lt;/a&gt; should be a good place to start and&lt;br /&gt;the  &lt;a href="http://www.latex-community.org/"&gt; latex community&lt;/a&gt; site has a useful forum.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The next part of this series will demonstrate basic LaTex Usage&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3852393033332471751-8020329036058275168?l=alexkashko.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alexkashko.blogspot.com/feeds/8020329036058275168/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://alexkashko.blogspot.com/2009/06/why-your-enterprise-should-use-latex.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3852393033332471751/posts/default/8020329036058275168'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3852393033332471751/posts/default/8020329036058275168'/><link rel='alternate' type='text/html' href='http://alexkashko.blogspot.com/2009/06/why-your-enterprise-should-use-latex.html' title='Why your enterprise should use LaTex'/><author><name>AlexK</name><uri>http://www.blogger.com/profile/11330042575905359270</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_NM6m7bxKC7E/SfymmdJJX1I/AAAAAAAAAAM/nr3J2mJW96o/S220/P1120587+copy.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3852393033332471751.post-1465949501810461839</id><published>2009-06-17T13:00:00.000-07:00</published><updated>2009-06-17T13:07:53.038-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='IT. Information technology'/><category scheme='http://www.blogger.com/atom/ns#' term='password'/><category scheme='http://www.blogger.com/atom/ns#' term='SharpDevelop'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='.Net'/><category scheme='http://www.blogger.com/atom/ns#' term='consonant vowel'/><category scheme='http://www.blogger.com/atom/ns#' term='OS X'/><category scheme='http://www.blogger.com/atom/ns#' term='MonoDevelop'/><category scheme='http://www.blogger.com/atom/ns#' term='Mono'/><category scheme='http://www.blogger.com/atom/ns#' term='GUI'/><category scheme='http://www.blogger.com/atom/ns#' term='passphrase generation'/><category scheme='http://www.blogger.com/atom/ns#' term='Winforms'/><title type='text'>Graphical user interface for passphrase generator in c#</title><content type='html'>&lt;span style="font-style: italic;"&gt;**&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; * This class is the code for  the user interface of an application to generate random&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; * but memorable  and generally pronounceable passwords and phrases.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; * The  user specifies password length using a slider and  may generate as many&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; * phrases as they wish till they find one they like.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; * Minimum length is 8 characters and maximum length is 50 characters&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; * The resulting passphrase is all lower case&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; * The passphrase generation algorithm is not supplied at this time.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; * I have produced several such algorithms and am not yet totally satisfied&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; *&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; * The code is intended to illustrate key features of  some commonly used&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; * Winforms components.  It is not intended to be a complete and slick application.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; * That will come later.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; *&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; *  I posted this  as a  generally accessible note to myself. If you find it helpful&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; *  I will be pleased.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; *&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; *  I wrote the code by hand ( i.e  in a text editor outside an IDE)  on a Power PC Macintosh&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; * using the Mono  .NET framework.  If Monodevelop OS X ever beomes  truly usable&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; *  there are many cosmetic improvements to be made&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; *&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; *&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; * Disclaimer: This code is supplied as is and you use it at your own risk&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; *                     All rights reserved.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; *&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; *  © Alex Kashko  November 2008&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; *&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; *&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; */&lt;/span&gt;&lt;br /&gt;using System;&lt;br /&gt;using System.Drawing;&lt;br /&gt;using System.Collections;&lt;br /&gt;using System.ComponentModel;&lt;br /&gt;using System.Windows.Forms; &lt;p&gt;namespace passwordgenerator&lt;br /&gt;{&lt;br /&gt;public class passwordgenerator : Form&lt;br /&gt;{&lt;/p&gt; &lt;p&gt;&lt;span style="font-style: italic;"&gt;// Form variables. All we need is a button, a slider and a couple of labels.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;TrackBar  passwordLengthTrackBar;&lt;br /&gt;Label passwordLengthLabel;&lt;br /&gt;Label generatedPasswordLabel = new Label();&lt;br /&gt;Button generateButton = new Button();&lt;/p&gt; &lt;p&gt;&lt;span style="font-style: italic;"&gt;// Constructor. In the Sharpdev IDE  the component formatting is hidden in&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; // a generated routine called initializeComponent()&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;public passwordgenerator()&lt;br /&gt;{&lt;br /&gt;this.Text = “Password Generator”;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;// initialise controls&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;passwordLengthLabel=  createPasswordLengthLabel();&lt;br /&gt;generatedPasswordLabel  = createGeneratedPasswordLabel();&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;// The trackbar is the most complex component in terms of the initialisation needed.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;// X and Y positions&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;int trackbarx= 20;&lt;br /&gt;int trackbary=40;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;// Width and height&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;int trackbarwidth =48;&lt;br /&gt;int trackbarheight = 200;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;// Minimum and maximum passphrase length&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;int minlength=8;&lt;br /&gt;int maxlength=50;&lt;br /&gt;passwordLengthTrackBar = createPasswordLengthTrackBar(&lt;br /&gt;trackbarx,trackbary,&lt;br /&gt;trackbarwidth,trackbarheight,&lt;br /&gt;minlength,maxlength);&lt;/p&gt; &lt;p&gt;generateButton = createGeneratorButton();&lt;/p&gt; &lt;p&gt;&lt;span style="font-style: italic;"&gt;// Add the controls to the form&lt;/span&gt;&lt;br /&gt;Controls.Add(generatedPasswordLabel );&lt;br /&gt;Controls.Add(passwordLengthTrackBar );&lt;br /&gt;Controls.Add(passwordLengthLabel);&lt;br /&gt;Controls.Add(generateButton);&lt;br /&gt;}&lt;/p&gt; &lt;p style="font-style: italic;"&gt;// ========== EventHandlers ===================&lt;/p&gt; &lt;p&gt;void generateButtonClick(object sender, EventArgs e)&lt;br /&gt;{&lt;br /&gt;&lt;span style="font-style: italic;"&gt;//            this.generatePassword(); // to be written&lt;/span&gt;&lt;br /&gt;generatedPasswordLabel.Text= “Passphrase generator not supplied”;&lt;br /&gt;}&lt;/p&gt; &lt;p&gt;void trackbarScroll(object sender, System.EventArgs e)&lt;br /&gt;{&lt;br /&gt;int value = this.passwordLengthTrackBar.Value;&lt;br /&gt;this.passwordLengthLabel.Text = value.ToString();&lt;br /&gt;}&lt;/p&gt; &lt;p&gt;&lt;span style="font-style: italic;"&gt;// ========== Methods to hide initialisation of controls &lt;/span&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;private Button createGeneratorButton()&lt;br /&gt;{&lt;br /&gt;Button theButton = new Button();&lt;br /&gt;theButton.Location = new System.Drawing.Point(100, 150);&lt;br /&gt;theButton.Text=”GENERATE”;&lt;/p&gt; &lt;p&gt;theButton.Click += new System.EventHandler(generateButtonClick);&lt;/p&gt; &lt;p&gt;return theButton;&lt;br /&gt;}&lt;/p&gt; &lt;p&gt;private Label createGeneratedPasswordLabel()&lt;br /&gt;{&lt;br /&gt;Label theLabel = new Label();&lt;br /&gt;theLabel.Location =new System.Drawing.Point(100, 100) ;&lt;br /&gt;theLabel.BackColor = System.Drawing.Color.LightSalmon;&lt;br /&gt;theLabel.Text = “GENERATED PASSWORD”;&lt;br /&gt;return theLabel;&lt;br /&gt;}&lt;/p&gt; &lt;p&gt;private Label createPasswordLengthLabel()&lt;br /&gt;{&lt;br /&gt;Label theLabel = new Label();&lt;br /&gt;theLabel.Text = “PASSWORD LENGTH”;&lt;br /&gt;theLabel.Location =  new System.Drawing.Point(60, 10);&lt;br /&gt;return theLabel;&lt;br /&gt;}&lt;/p&gt; &lt;p&gt;&lt;span style="font-style: italic;"&gt;// Creates a trackbar at the specified location with given height and width and sets&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; //  minimum and maximum passphrase length;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;private TrackBar createPasswordLengthTrackBar(&lt;br /&gt;int xpos, int ypos,&lt;br /&gt;int width, int height,&lt;br /&gt;int minlength, int maxlength&lt;br /&gt;)&lt;br /&gt;{&lt;br /&gt;&lt;span style="font-style: italic;"&gt;// Attributes&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;TrackBar  trackbar     = new TrackBar();&lt;br /&gt;trackbar.Location         = new System.Drawing.Point(xpos, ypos);&lt;br /&gt;trackbar.Orientation = System.Windows.Forms.Orientation.Vertical;&lt;br /&gt;trackbar.Size             = new System.Drawing.Size(width, height);&lt;br /&gt;trackbar.BackColor = System.Drawing.Color.LightSalmon;&lt;/p&gt; &lt;p&gt;trackbar.Minimum = minlength;&lt;br /&gt;trackbar.Maximum=maxlength;&lt;br /&gt;// Event handlers&lt;br /&gt;trackbar.Scroll += new System.EventHandler(this.trackbarScroll);&lt;/p&gt; &lt;p&gt;return trackbar;&lt;br /&gt;}&lt;/p&gt; &lt;p&gt;// Main method&lt;br /&gt;public static void Main()&lt;br /&gt;       {&lt;br /&gt;           Application.Run(new passwordgenerator());&lt;br /&gt;       }&lt;br /&gt;}&lt;/p&gt; &lt;p&gt;}&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3852393033332471751-1465949501810461839?l=alexkashko.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alexkashko.blogspot.com/feeds/1465949501810461839/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://alexkashko.blogspot.com/2009/06/graphical-user-interface-for-passphrase.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3852393033332471751/posts/default/1465949501810461839'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3852393033332471751/posts/default/1465949501810461839'/><link rel='alternate' type='text/html' href='http://alexkashko.blogspot.com/2009/06/graphical-user-interface-for-passphrase.html' title='Graphical user interface for passphrase generator in c#'/><author><name>AlexK</name><uri>http://www.blogger.com/profile/11330042575905359270</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_NM6m7bxKC7E/SfymmdJJX1I/AAAAAAAAAAM/nr3J2mJW96o/S220/P1120587+copy.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3852393033332471751.post-6256421101084068142</id><published>2009-06-12T02:35:00.000-07:00</published><updated>2009-06-13T15:42:33.482-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CV writing'/><category scheme='http://www.blogger.com/atom/ns#' term='Writing services'/><title type='text'>CV Writing Service for IT specialists and others</title><content type='html'>A CV writing service specialising in the IT market.&lt;br /&gt;&lt;br /&gt;We will:&lt;br /&gt;&lt;br /&gt;discuss your needs&lt;br /&gt;&lt;br /&gt;Rework your CV&lt;br /&gt;&lt;br /&gt;Where appropriate recommend where you can place your CV&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3852393033332471751-6256421101084068142?l=alexkashko.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alexkashko.blogspot.com/feeds/6256421101084068142/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://alexkashko.blogspot.com/2009/06/cv-writing-service.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3852393033332471751/posts/default/6256421101084068142'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3852393033332471751/posts/default/6256421101084068142'/><link rel='alternate' type='text/html' href='http://alexkashko.blogspot.com/2009/06/cv-writing-service.html' title='CV Writing Service for IT specialists and others'/><author><name>AlexK</name><uri>http://www.blogger.com/profile/11330042575905359270</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_NM6m7bxKC7E/SfymmdJJX1I/AAAAAAAAAAM/nr3J2mJW96o/S220/P1120587+copy.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3852393033332471751.post-7053771429994009287</id><published>2009-06-08T14:10:00.000-07:00</published><updated>2009-06-08T16:37:03.323-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='IT. Information technology'/><category scheme='http://www.blogger.com/atom/ns#' term='password'/><category scheme='http://www.blogger.com/atom/ns#' term='Eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='algorithm'/><category scheme='http://www.blogger.com/atom/ns#' term='SharpDevelop'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='.Net'/><category scheme='http://www.blogger.com/atom/ns#' term='consonant vowel'/><category scheme='http://www.blogger.com/atom/ns#' term='MonoDevelop'/><category scheme='http://www.blogger.com/atom/ns#' term='Swing'/><category scheme='http://www.blogger.com/atom/ns#' term='GUI'/><category scheme='http://www.blogger.com/atom/ns#' term='Winforms'/><category scheme='http://www.blogger.com/atom/ns#' term='passphrase generation'/><title type='text'>Swing versus Winforms</title><content type='html'>As I write  it seems Swing programmers are hard to find and the demand for c# is rising. This means it is  a good time to compare  Swing and the ,NET Winforms framework.&lt;br /&gt;&lt;br /&gt;Note that I am NOT comparing the two languages, but,  for the record I think C# a much nicer language than Java ( and  I am a senior Java developer!!) but there is much more one can do rapidly with Java  and are far less  c# open source software around. Even if I were as expert in c# as  in Java ( and I consider myself only one or two pegs down, as the languages are very similar) I would probably be less productive because of the   relative lack of APIs, online documentation (Sun do a good job there) and open source software. Your mileage may vary and so may mine after a good c# contract.&lt;br /&gt;&lt;br /&gt; I picked a  relatively simple project, a pass-phrase generator.  The goal was to develop memorable random passphrases, To do this I used the universal  pattern of alternating consonants and vowels.&lt;br /&gt;&lt;br /&gt; Step one was to develop the model.  This took about two hours in each framework.  The first cut was passwords only (pass phrase without spaces) I used the free Sharp develop IDE  on a Windows PC to produce the .NET version and Eclipse  for OS X on a G4 Powerbook  to produce the Java version.  The details of the algorithms  ( Beyond the scope of this article) were slightly different in each case, but this did not seem to affect the end result much.&lt;br /&gt;&lt;br /&gt;Next stage was to develop the interface.  In each case all I needed was  a button, a label and a slider. Developing the interface took one hour in Winforms and two in Swing, including testing and tweaking.   The main reason for the difference was having to work round Swing's layout managers. The Swing GUI did not behave exactly as I would like  while the Winforms GUI behaved perfectly right away, and I recall experimenting with Swing a few years ago and finding a strange bug that seemed to be in the framework.&lt;br /&gt;&lt;br /&gt; I later repeated the parallel development exercise on an Apple power book using  Mono.NET. The comparison was not fair since currently the only free C# IDE  for OS X I know of is monodevelop and that is currently useless, as far as I can tell, for developing a GUI. However the framework itself  supports command line development  of a GUI provided you know which dll holds  the desired classes. It took me a few minutes to find where the installer had hidden them after which all was plain sailing.&lt;br /&gt;&lt;br /&gt; My tentative conclusion is that since it took me longer to develop a Swing Gui than a Winforms GUI, Winforms enables faster productivity -though this may simply because I do not have a drag and drop swing editor installed in Eclipse, - but  Swing, being  to my mind more like a form of Assembler for GUI. may  allow more control and be deployable on a wider range of platforms.   On the other hand Winforms seems to have overcome the problems  that arise in Swing from leaving threading control to the developer.&lt;br /&gt;&lt;br /&gt;I am happy to use Winforms for private c# projects and Swing for private Java projects. The lack of Winforms support in Monodevelop will slow down the speed with which I move to C#.  Swing however is showing its age, something evidenced by the number of Swing toolkits designed to simplify development&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3852393033332471751-7053771429994009287?l=alexkashko.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alexkashko.blogspot.com/feeds/7053771429994009287/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://alexkashko.blogspot.com/2009/06/swing-versus-winforms.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3852393033332471751/posts/default/7053771429994009287'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3852393033332471751/posts/default/7053771429994009287'/><link rel='alternate' type='text/html' href='http://alexkashko.blogspot.com/2009/06/swing-versus-winforms.html' title='Swing versus Winforms'/><author><name>AlexK</name><uri>http://www.blogger.com/profile/11330042575905359270</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_NM6m7bxKC7E/SfymmdJJX1I/AAAAAAAAAAM/nr3J2mJW96o/S220/P1120587+copy.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3852393033332471751.post-4014790171524527699</id><published>2009-05-06T09:42:00.000-07:00</published><updated>2009-05-06T09:49:59.473-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='algorithm'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='.Net'/><category scheme='http://www.blogger.com/atom/ns#' term='passphrase generation'/><category scheme='http://www.blogger.com/atom/ns#' term='consonant vowel'/><title type='text'>Memorable random passphrase generator in c#</title><content type='html'>&lt;p&gt;Not the most sophisticated algorithm and  a different RNG could give more satisfactory performance. I seem to recall better results from a Java version of this algorithm.&lt;/p&gt; &lt;address&gt; &lt;/address&gt; &lt;p&gt;/**&lt;br /&gt;* this is a first pass at the algorithm for generating  suggestions for pronounceable&lt;br /&gt;* and hence memorable  passphrases. There is some work to be done  to&lt;br /&gt;* give the user the power to  choose  things like mean "word" length and some&lt;br /&gt;* decision needed as to whether to include numbers or not.&lt;br /&gt;*&lt;br /&gt;*  the  resulting passphrases are all lower case and this means a phrase&lt;br /&gt;* of about  37 characters will be equivalent to 128 bit encryption. If you allow  Uppercase&lt;br /&gt;* A sequence of about 18 characters  seems to be enough.&lt;br /&gt;*&lt;br /&gt;* The algorithm is based on the near  universal  alternation of vowels and consonants in almost all languages&lt;br /&gt;*  First a  pattern comprising a series of alternating consonant and vowel ,markers is generated and then&lt;br /&gt;* some of these are replaced by space markers.&lt;br /&gt;*&lt;br /&gt;* After that each marker is replaced by a random vowel consonant or space as appropriate.&lt;br /&gt;*&lt;br /&gt;*  At present the sort of random 'words' generated seem to me to  have an African flavour.&lt;br /&gt;* This is interesting but I do not think it has implications for theories of the origin of language.&lt;br /&gt;*&lt;br /&gt;* A more sophisticated algorithm would mimic vowel and consonant or even digram&lt;br /&gt;* frequencies in  different languages allowing users to choose languages they know.&lt;br /&gt;*&lt;br /&gt;* At the  date of writing I do not intend spending a lot of time on more sophisticated algorithms&lt;br /&gt;* as I have other projects competing for priority.&lt;br /&gt;* However this project can lead me into the interesting area of synthetic language generation&lt;br /&gt;*&lt;br /&gt;*  I posted this  as a  generally accessible note to myself. If you find it helpful&lt;br /&gt;*  I will be pleased.  Plase acknowledge me as the originator.&lt;br /&gt;*&lt;br /&gt;*  I wrote the code by hand ( i.e  in a text editor outside an IDE)  on a Power PC Macintosh&lt;br /&gt;* using the Mono  .NET framework.&lt;br /&gt;*&lt;br /&gt;* Disclaimer: This code is supplied as is and you use it at your own risk&lt;br /&gt;*                     All rights reserved.&lt;br /&gt;*&lt;br /&gt;*  © Alex Kashko  November 2008&lt;br /&gt;*&lt;br /&gt;*&lt;br /&gt;*/&lt;br /&gt;using System;&lt;br /&gt;using System.Collections;&lt;br /&gt;using System.ComponentModel;&lt;/p&gt; &lt;p&gt;namespace passwordgeneratormodel&lt;br /&gt;{&lt;br /&gt;public class passwordgeneratormodel&lt;br /&gt;{&lt;br /&gt;private  static double probabilityOfSpace = 0.2;&lt;br /&gt;private static Random rng = new Random();&lt;/p&gt; &lt;p&gt;// Passphrase generation routine&lt;br /&gt;public  static String generatePassWord( int length)&lt;br /&gt;{&lt;br /&gt;String pattern = generatePattern(length);&lt;br /&gt;String result   =transformPattern(pattern);&lt;br /&gt;return result;&lt;br /&gt;}&lt;/p&gt; &lt;p&gt;// Given a pattern   generate the pass phrase&lt;br /&gt;// Using Strings  not chars would have resulted in much more complex code.&lt;br /&gt;private static String  transformPattern(string pattern)&lt;br /&gt;{&lt;br /&gt;char[] vowels = {'a', 'e','i', 'o', 'u'};&lt;br /&gt;char[] consonants = {'b', 'c', 'd', 'f', 'g','h','j','k','l','m','n','p','q','r','s','t','v','w','x','y','z'};&lt;br /&gt;//                     char[] numbers = {'1','2','3','4','5','6','7','8','9'};&lt;/p&gt; &lt;p&gt;char[] res = new char[pattern.Length];&lt;br /&gt;for( int i =0; i&lt;&gt; &lt;p&gt;return  new String(res);&lt;br /&gt;}&lt;/p&gt; &lt;p&gt;// select random member of array&lt;br /&gt;private static char pickany(char[] array)&lt;br /&gt;{&lt;br /&gt;int index = rng.Next(array.Length);&lt;br /&gt;return  array[index];&lt;br /&gt;}&lt;/p&gt; &lt;p&gt;// Generates a pattern of CVCV or VCVC with occasional S&lt;br /&gt;// C = consonant, V = vowel, S = space&lt;br /&gt;private  static String generatePattern (int length)&lt;br /&gt;{&lt;br /&gt;//  choose consonant or vowel randomly&lt;br /&gt;//  Reuse the RNG rather than creating  a new one&lt;/p&gt; &lt;p&gt;Char[] pattern =   new Char[length];&lt;br /&gt;pattern[0] = 'V';&lt;br /&gt;if(rng.NextDouble() &lt; i ="1;"&gt; &lt;p&gt;}&lt;br /&gt;else&lt;br /&gt;{&lt;br /&gt;pattern[i] = 'V';&lt;br /&gt;}&lt;/p&gt; &lt;p&gt;}&lt;br /&gt;//   Step through the array again and change&lt;br /&gt;//   Some elements to  space (S) with fixed probability. Make sure you have no leading or&lt;br /&gt;//   trailing spaces and never get two  spaces in a row.&lt;br /&gt;for( int i =1;  i &lt; i =" i+1;"&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3852393033332471751-4014790171524527699?l=alexkashko.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://alexkashko.blogspot.com/feeds/4014790171524527699/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://alexkashko.blogspot.com/2009/05/memorable-random-passphrase-generator.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3852393033332471751/posts/default/4014790171524527699'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3852393033332471751/posts/default/4014790171524527699'/><link rel='alternate' type='text/html' href='http://alexkashko.blogspot.com/2009/05/memorable-random-passphrase-generator.html' title='Memorable random passphrase generator in c#'/><author><name>AlexK</name><uri>http://www.blogger.com/profile/11330042575905359270</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_NM6m7bxKC7E/SfymmdJJX1I/AAAAAAAAAAM/nr3J2mJW96o/S220/P1120587+copy.JPG'/></author><thr:total>0</thr:total></entry></feed>
