<?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-2418747567071168348</id><updated>2012-02-27T20:21:52.024-08:00</updated><category term='HP Pavilion tx2000'/><category term='Logic'/><category term='RubyGems'/><category term='Ubuntu'/><category term='SSH'/><category term='MySQL'/><category term='Lisp'/><category term='Cartesian Product'/><category term='Ruby'/><category term='Windows 7'/><title type='text'>Computacion</title><subtitle type='html'>Martin Velez blogs about software engineering, computers, and mathematics</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://govelez.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2418747567071168348/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://govelez.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Martin Velez</name><uri>https://profiles.google.com/110859472935391531872</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-tufUK32VR5w/AAAAAAAAAAI/AAAAAAAAAAA/8EDGamgFxXc/s512-c/photo.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>10</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2418747567071168348.post-7683569967473679830</id><published>2011-11-29T21:02:00.001-08:00</published><updated>2011-12-02T01:28:43.341-08:00</updated><title type='text'>RubyCLI: A Ruby Command Line Application Module</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-MTj3WBNOt7k/TtW_IRcPifI/AAAAAAAAA68/J8YpSmVvh0A/s1600/ruby_cli_example.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="357" src="http://1.bp.blogspot.com/-MTj3WBNOt7k/TtW_IRcPifI/AAAAAAAAA68/J8YpSmVvh0A/s400/ruby_cli_example.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Download &lt;a href="https://github.com/martinvelez/ruby_cli"&gt;ruby_cli&lt;/a&gt;, a Ruby gem I wrote to help create Ruby command line interface programs.&lt;br /&gt;&lt;br /&gt;Here is an example program which uses&amp;nbsp;&lt;a href="https://github.com/martinvelez/ruby_cli"&gt;ruby_cli&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;pre style="background-image: URL(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt; #!/usr/bin/ruby  &lt;br /&gt; require 'rubygems'  &lt;br /&gt; require 'ruby_cli'  &lt;br /&gt; class App  &lt;br /&gt;  include RubyCLI  &lt;br /&gt;  def command  &lt;br /&gt;   puts "Hello World"  &lt;br /&gt;  end  &lt;br /&gt; end  &lt;br /&gt; app = App.new(ARGV, __FILE__)  &lt;br /&gt; app.run    &lt;/code&gt;&lt;/pre&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Running the program:&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-NrMz6LEJgyY/TtiYukLxj1I/AAAAAAAAA7M/kGQWR9vXmK8/s1600/Screenshot+at+2011-12-02+01%253A21%253A31.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="51" src="http://2.bp.blogspot.com/-NrMz6LEJgyY/TtiYukLxj1I/AAAAAAAAA7M/kGQWR9vXmK8/s400/Screenshot+at+2011-12-02+01%253A21%253A31.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Running the program with the help option.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-QfcdTlfR2iw/TtiYLjkrtcI/AAAAAAAAA7E/60HgPcBTVa4/s1600/Screenshot+at+2011-12-02+01%253A18%253A19.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="115" src="http://2.bp.blogspot.com/-QfcdTlfR2iw/TtiYLjkrtcI/AAAAAAAAA7E/60HgPcBTVa4/s400/Screenshot+at+2011-12-02+01%253A18%253A19.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2418747567071168348-7683569967473679830?l=govelez.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://govelez.blogspot.com/feeds/7683569967473679830/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://govelez.blogspot.com/2011/11/rubycli-ruby-command-line-application.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2418747567071168348/posts/default/7683569967473679830'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2418747567071168348/posts/default/7683569967473679830'/><link rel='alternate' type='text/html' href='http://govelez.blogspot.com/2011/11/rubycli-ruby-command-line-application.html' title='RubyCLI: A Ruby Command Line Application Module'/><author><name>Martin Velez</name><uri>https://profiles.google.com/110859472935391531872</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-tufUK32VR5w/AAAAAAAAAAI/AAAAAAAAAAA/8EDGamgFxXc/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-MTj3WBNOt7k/TtW_IRcPifI/AAAAAAAAA68/J8YpSmVvh0A/s72-c/ruby_cli_example.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2418747567071168348.post-2641897198538181306</id><published>2011-03-02T14:36:00.000-08:00</published><updated>2011-03-02T14:44:18.667-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MySQL'/><category scheme='http://www.blogger.com/atom/ns#' term='SSH'/><title type='text'>Connect to MySQL via SSH Tunnel</title><content type='html'>I have set up a MySQL server and want to connect to it from different machines. &amp;nbsp;However, I do not want to open it up to the public. &amp;nbsp;To secure my connection, I will not allow external connections to the MySQL server. &amp;nbsp;I will simply set up a SSH tunnel and connect to it that way. &amp;nbsp;My local MySQL commands are forwarded to the remote host.&lt;br /&gt;&lt;br /&gt;Assumptions:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;You can SSH into the remote host.&lt;/li&gt;&lt;li&gt;If you are like me, you are not running a MySQL on your local host.&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;Setting up the SSH tunnel:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;ssh -f -L 3306:localhost:3306 user@host -N&lt;/li&gt;&lt;li&gt;Enter password:&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;Connect to MySQL&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;mysql -h 127.0.0.1 -u user -p&lt;/li&gt;&lt;li&gt;Enter password:&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;You should be see the MySQL prompt.&lt;/div&gt;&lt;/div&gt;&lt;blockquote&gt;mysql&amp;gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2418747567071168348-2641897198538181306?l=govelez.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://govelez.blogspot.com/feeds/2641897198538181306/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://govelez.blogspot.com/2011/03/connect-to-mysql-via-ssh-tunnel.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2418747567071168348/posts/default/2641897198538181306'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2418747567071168348/posts/default/2641897198538181306'/><link rel='alternate' type='text/html' href='http://govelez.blogspot.com/2011/03/connect-to-mysql-via-ssh-tunnel.html' title='Connect to MySQL via SSH Tunnel'/><author><name>Martin Velez</name><uri>https://profiles.google.com/110859472935391531872</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-tufUK32VR5w/AAAAAAAAAAI/AAAAAAAAAAA/8EDGamgFxXc/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2418747567071168348.post-6538662624327636287</id><published>2011-01-25T23:11:00.000-08:00</published><updated>2011-01-25T23:11:10.115-08:00</updated><title type='text'>Samsung Gravity T USB Connection on Mac</title><content type='html'>To connect your Samsung Gravity T to your Macbook go to&lt;br /&gt;&lt;blockquote&gt;Menu &amp;gt; Settings &amp;gt; Phone Settings &amp;gt; PC Connection &amp;gt; Mass Storage&lt;/blockquote&gt;The USB cable must be unplugged and the phone must be on the idle/home screen.&lt;br /&gt;&lt;blockquote&gt;&amp;nbsp;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2418747567071168348-6538662624327636287?l=govelez.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://govelez.blogspot.com/feeds/6538662624327636287/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://govelez.blogspot.com/2011/01/samsung-gravity-t-usb-connection-on-mac.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2418747567071168348/posts/default/6538662624327636287'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2418747567071168348/posts/default/6538662624327636287'/><link rel='alternate' type='text/html' href='http://govelez.blogspot.com/2011/01/samsung-gravity-t-usb-connection-on-mac.html' title='Samsung Gravity T USB Connection on Mac'/><author><name>Martin Velez</name><uri>https://profiles.google.com/110859472935391531872</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-tufUK32VR5w/AAAAAAAAAAI/AAAAAAAAAAA/8EDGamgFxXc/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2418747567071168348.post-6011339115232014916</id><published>2010-09-21T10:48:00.000-07:00</published><updated>2010-09-21T11:02:53.564-07:00</updated><title type='text'>Circular Google: Useless Top Search Results</title><content type='html'>&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_1c_iEyuTTuQ/TJjvsc4iXdI/AAAAAAAAA3g/GzklzOkyO_o/s1600/Screenshot.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_1c_iEyuTTuQ/TJjvsc4iXdI/AAAAAAAAA3g/GzklzOkyO_o/s320/Screenshot.png" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Circular Google:&amp;nbsp;&lt;a href="http://ubuntuforums.org/showthread.php?t=401339"&gt;http://ubuntuforums.org/showthread.php?t=401339&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;I google a lot. &amp;nbsp;Google is my public library. &amp;nbsp;If I have a question, I google for the answer. &amp;nbsp;I also happen to think that I am in the majority. &amp;nbsp;(Note: In the rant that follows, I am not blaming Google. &amp;nbsp;Google is great!)&lt;br /&gt;&lt;br /&gt;Sometimes, not too rarely, the number one Google hit contains a forum question similar or identical to mine followed by an rude and unhelpful jerk responding, "Google it!" &amp;nbsp;This annoys me so much. &amp;nbsp;The reason why this annoys me so much is because the forum response will not only be seen by the person posing the question but also by others with the same question. &amp;nbsp;Eventually, this forum thread might become the number one search result, an useless top search result.&lt;br /&gt;&lt;br /&gt;Thus, please if you are going to bother responding to someone on a forum, don't respond "Google it!" &amp;nbsp;I did!!! &amp;nbsp;Check out the Circular Google image above to see a perfect example of a useless top search result.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2418747567071168348-6011339115232014916?l=govelez.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://govelez.blogspot.com/feeds/6011339115232014916/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://govelez.blogspot.com/2010/09/circular-google-useless-top-search.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2418747567071168348/posts/default/6011339115232014916'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2418747567071168348/posts/default/6011339115232014916'/><link rel='alternate' type='text/html' href='http://govelez.blogspot.com/2010/09/circular-google-useless-top-search.html' title='Circular Google: Useless Top Search Results'/><author><name>Martin Velez</name><uri>https://profiles.google.com/110859472935391531872</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-tufUK32VR5w/AAAAAAAAAAI/AAAAAAAAAAA/8EDGamgFxXc/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_1c_iEyuTTuQ/TJjvsc4iXdI/AAAAAAAAA3g/GzklzOkyO_o/s72-c/Screenshot.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2418747567071168348.post-7980455089513344761</id><published>2010-09-04T00:54:00.000-07:00</published><updated>2010-09-04T01:06:21.389-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='HP Pavilion tx2000'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>Installing Ubuntu 10.4 on HP Pavilion tx2000</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_1c_iEyuTTuQ/TIH85GEr6fI/AAAAAAAAA3A/FPKfbtqL2pI/s1600/ubuntu_desktop_1.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_1c_iEyuTTuQ/TIH85GEr6fI/AAAAAAAAA3A/FPKfbtqL2pI/s320/ubuntu_desktop_1.png" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Ubuntu 10.4 on HP Pavilion tx2000: Monitor 1&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_1c_iEyuTTuQ/TIH9L7jNGaI/AAAAAAAAA3I/bbJdly3tVsk/s1600/ubuntu_desktop_2.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_1c_iEyuTTuQ/TIH9L7jNGaI/AAAAAAAAA3I/bbJdly3tVsk/s320/ubuntu_desktop_2.png" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Ubuntu 10.4 on HP Pavilion tx2000: Monitor2&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;In a previous post, I described how easy it was to install Windows 7 on my HP Pavilion tx2000.&amp;nbsp; It worked almost perfectly out of the box.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;br /&gt;Though, I am beginning to like Windows again thanks to Windows 7, I installed Ubuntu because I do Linux programming.&lt;br /&gt;&lt;br /&gt;Wireless, tablet screen, and multiple monitors worked without having to hack anything.&amp;nbsp; Ubuntu supports them.&lt;br /&gt;&lt;br /&gt;Things that don't work:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;HP Quick Launch Buttons around the screen border&lt;/li&gt;&lt;ul&gt;&lt;li&gt;DVD, QuickPlay, Settings, and Rotation&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Mute button doesn't turn red when muted but the volume buttons do work.&lt;/li&gt;&lt;/ul&gt;As you have read, the list of things that didn't work using the standard Ubuntu 10.4 desktop installation were very few.&amp;nbsp; They are also identical to things to didn't work after installing Windows 7.&amp;nbsp; HP drivers are needed.&amp;nbsp; I don't think that I will bother for now.&lt;br /&gt;&lt;br /&gt;I must also say that the start up and shutdown times are amazing! The picture above demonstrates my Ubuntu desktop.&amp;nbsp; I, of course, applied a dark theme to the controls and the window borders.&amp;nbsp; It looks and feels great.&amp;nbsp; I hope that this helps somebody trying do the same thing or something similar.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2418747567071168348-7980455089513344761?l=govelez.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://govelez.blogspot.com/feeds/7980455089513344761/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://govelez.blogspot.com/2010/09/installing-ubuntu-104-on-hp-pavilion.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2418747567071168348/posts/default/7980455089513344761'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2418747567071168348/posts/default/7980455089513344761'/><link rel='alternate' type='text/html' href='http://govelez.blogspot.com/2010/09/installing-ubuntu-104-on-hp-pavilion.html' title='Installing Ubuntu 10.4 on HP Pavilion tx2000'/><author><name>Martin Velez</name><uri>https://profiles.google.com/110859472935391531872</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-tufUK32VR5w/AAAAAAAAAAI/AAAAAAAAAAA/8EDGamgFxXc/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_1c_iEyuTTuQ/TIH85GEr6fI/AAAAAAAAA3A/FPKfbtqL2pI/s72-c/ubuntu_desktop_1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2418747567071168348.post-5750037922897891433</id><published>2010-09-03T14:03:00.000-07:00</published><updated>2010-09-11T14:03:32.244-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Logic'/><title type='text'>Soundness and Completeness</title><content type='html'>&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_1c_iEyuTTuQ/TIFdKWX8fTI/AAAAAAAAA2o/MXjE536t9Go/s1600/soundnessandcompleteness.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_1c_iEyuTTuQ/TIFdKWX8fTI/AAAAAAAAA2o/MXjE536t9Go/s320/soundnessandcompleteness.png" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Universe&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Here is a loose definition of soundness and completeness.&lt;br /&gt;&lt;br /&gt;An argument is sound if everything that can be derived from it is true; no false positives.&lt;br /&gt;An argument is complete if everything that is true can be derived from it; no false negatives.&lt;br /&gt;&lt;br /&gt;Referring to Universe figure above,&lt;br /&gt;&lt;ul&gt;&lt;li&gt;A is sound.&lt;/li&gt;&lt;li&gt;B is sound and complete.&lt;/li&gt;&lt;li&gt;C is complete.&lt;/li&gt;&lt;li&gt;D is neither.&lt;/li&gt;&lt;/ul&gt;&amp;nbsp;B is the kind of argument, reasoning, and systems you want to be dealing with.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2418747567071168348-5750037922897891433?l=govelez.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://govelez.blogspot.com/feeds/5750037922897891433/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://govelez.blogspot.com/2010/09/soundness-and-completeness.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2418747567071168348/posts/default/5750037922897891433'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2418747567071168348/posts/default/5750037922897891433'/><link rel='alternate' type='text/html' href='http://govelez.blogspot.com/2010/09/soundness-and-completeness.html' title='Soundness and Completeness'/><author><name>Martin Velez</name><uri>https://profiles.google.com/110859472935391531872</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-tufUK32VR5w/AAAAAAAAAAI/AAAAAAAAAAA/8EDGamgFxXc/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_1c_iEyuTTuQ/TIFdKWX8fTI/AAAAAAAAA2o/MXjE536t9Go/s72-c/soundnessandcompleteness.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2418747567071168348.post-4181174442954886651</id><published>2010-08-20T15:47:00.000-07:00</published><updated>2010-08-20T16:12:32.100-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MySQL'/><category scheme='http://www.blogger.com/atom/ns#' term='RubyGems'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>Installing the MySQL RubyGem on Ubuntu</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_1c_iEyuTTuQ/TG8L2c1lluI/AAAAAAAAA2A/uD_66TraAtE/s1600/rubygems-125x125t.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_1c_iEyuTTuQ/TG8L2c1lluI/AAAAAAAAA2A/uD_66TraAtE/s320/rubygems-125x125t.png" /&gt;&lt;/a&gt;&lt;/div&gt;I have successfully installed the MySQL driver for Ruby on Windows and Mac OS X but I had not installed it on Ubuntu until today.&lt;br /&gt;&lt;br /&gt;I am assuming that you have already installed the MySQL server.&amp;nbsp; I am using MySQL 5.1.&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;$ sudo apt-get install mysql-server&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: inherit;"&gt;Install the &lt;/span&gt;MySQL database client library.&amp;nbsp; I am not certain of this but I believe that the number '15' in 'libmysqlclient15-dev' indicates the version.&amp;nbsp; This is apparently the most current one and the default version on Ubuntu 10.4 as of today.&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;$ sudo apt-get install libmysqlclient15-dev&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;Install RubyGems if you have not done so already.&amp;nbsp; I am using Ruby 1.9.1.&lt;br /&gt;&amp;nbsp;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;$ sudo apt-get install rubygems1.9&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;If everything was successfuly, then you should be able to use the mysql RubyGem in&amp;nbsp; your Ruby scripts.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2418747567071168348-4181174442954886651?l=govelez.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://govelez.blogspot.com/feeds/4181174442954886651/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://govelez.blogspot.com/2010/08/using-mysql-ruby-gem-on-ubuntu.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2418747567071168348/posts/default/4181174442954886651'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2418747567071168348/posts/default/4181174442954886651'/><link rel='alternate' type='text/html' href='http://govelez.blogspot.com/2010/08/using-mysql-ruby-gem-on-ubuntu.html' title='Installing the MySQL RubyGem on Ubuntu'/><author><name>Martin Velez</name><uri>https://profiles.google.com/110859472935391531872</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-tufUK32VR5w/AAAAAAAAAAI/AAAAAAAAAAA/8EDGamgFxXc/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_1c_iEyuTTuQ/TG8L2c1lluI/AAAAAAAAA2A/uD_66TraAtE/s72-c/rubygems-125x125t.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2418747567071168348.post-3296909839351108992</id><published>2010-08-20T10:40:00.000-07:00</published><updated>2010-09-11T14:02:42.341-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='HP Pavilion tx2000'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows 7'/><title type='text'>Installing Windows 7 Professional on HP Pavilion tx2000</title><content type='html'>Yesterday, I did a clean install of Windows 7 (32-bit) on my HP Pavilion tx2000 computer. I was very surprised and glad that I did not need to install much in order to get the computer to work.&amp;nbsp; I feared that I would need to install many more drivers, for instance, the tablet driver.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_1c_iEyuTTuQ/TG7DyBXnlTI/AAAAAAAAA1I/o9qp4lwmEFY/s1600/hp-pavilion-tx2000.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_1c_iEyuTTuQ/TG7DyBXnlTI/AAAAAAAAA1I/o9qp4lwmEFY/s320/hp-pavilion-tx2000.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Additional drivers installed from the HP support website:&lt;br /&gt;&lt;ul&gt;&lt;li&gt; Realtek High Definition Audio&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Enables the mute button to change color to red when volume is muted.&lt;/li&gt;&lt;li&gt;Source: &lt;a href="http://h10025.www1.hp.com/ewfrf/wc/softwareDownloadIndex?softwareitem=ob-75992-4&amp;amp;lc=en&amp;amp;dlc=en&amp;amp;cc=us&amp;amp;os=4062&amp;amp;product=3744020&amp;amp;sw_lang="&gt;http://h10025.www1.hp.com/ewfrf/wc/softwareDownloadIndex?softwareitem=ob-75992-4&amp;amp;lc=en&amp;amp;dlc=en&amp;amp;cc=us&amp;amp;os=4062&amp;amp;product=3744020&amp;amp;sw_lang=&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;HP Quick Launch Buttons&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Enables most of the quick launch buttons on the screen border&lt;/li&gt;&lt;ul&gt;&lt;li&gt;rotate, settings, media (prev, play, next, stop)&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Auto-rotates screen when you convert the laptop to a tablet&lt;/li&gt;&lt;li&gt;Source: &lt;a href="http://h10025.www1.hp.com/ewfrf/wc/softwareDownloadIndex?softwareitem=ob-78740-1&amp;amp;lc=en&amp;amp;dlc=en&amp;amp;cc=us&amp;amp;product=3744020&amp;amp;sw_lang=&amp;amp;os=4062"&gt;http://h10025.www1.hp.com/ewfrf/wc/softwareDownloadIndex?softwareitem=ob-78740-1&amp;amp;lc=en&amp;amp;dlc=en&amp;amp;cc=us&amp;amp;product=3744020&amp;amp;sw_lang=&amp;amp;os=4062&lt;/a&gt; &lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;Things that do not work:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;DVD Quick Play button on the border of the screen&lt;/li&gt;&lt;ul&gt;&lt;li&gt;I am not going to fix this.&amp;nbsp; I thought it was annoying anyways.&amp;nbsp; I kept on pressing it accidentally.&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;Observed benefits over the HP factory installation of Windows Vista.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Startup time is now 57 seconds.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;From being powered off to displaying the google homepage.&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Shutdown time is now 10 seconds&lt;/li&gt;&lt;li&gt;With Vista it would literally get too hot for your lap. &amp;nbsp;Now it always stays cool. &amp;nbsp;I would dare to say that it stays cooler than my 13" Macbook.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;I hope this helps somebody somehow. &lt;br /&gt;&lt;ul&gt;&lt;ul&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2418747567071168348-3296909839351108992?l=govelez.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://govelez.blogspot.com/feeds/3296909839351108992/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://govelez.blogspot.com/2010/08/installing-windows-7-professional-on-hp.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2418747567071168348/posts/default/3296909839351108992'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2418747567071168348/posts/default/3296909839351108992'/><link rel='alternate' type='text/html' href='http://govelez.blogspot.com/2010/08/installing-windows-7-professional-on-hp.html' title='Installing Windows 7 Professional on HP Pavilion tx2000'/><author><name>Martin Velez</name><uri>https://profiles.google.com/110859472935391531872</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-tufUK32VR5w/AAAAAAAAAAI/AAAAAAAAAAA/8EDGamgFxXc/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_1c_iEyuTTuQ/TG7DyBXnlTI/AAAAAAAAA1I/o9qp4lwmEFY/s72-c/hp-pavilion-tx2000.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2418747567071168348.post-1521581526958802139</id><published>2010-08-12T12:43:00.001-07:00</published><updated>2010-08-23T14:40:29.794-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><title type='text'>Formatting Hex Strings in Ruby</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_1c_iEyuTTuQ/TG8L_aWIOHI/AAAAAAAAA2I/MIPZxhINODw/s1600/ruby_logo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_1c_iEyuTTuQ/TG8L_aWIOHI/AAAAAAAAA2I/MIPZxhINODw/s320/ruby_logo.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;This method converts a 1 or 2 character string representing a hex number into a 2 character string representing a hex number.&lt;br /&gt;&lt;br /&gt;Usage examples:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;irb(main):001:0&amp;gt;format("a")&lt;br /&gt;=&amp;gt; "0A"&lt;br /&gt;irb(main):002:0&amp;gt;format("2D")&lt;br /&gt;=&amp;gt; "2D"&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Implementation:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;def format_hex_string(byte)&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;byte.upcase&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;byte.to_i(16) &amp;gt;= 16 ? byte : "0" + byte&lt;br /&gt;end&lt;br /&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2418747567071168348-1521581526958802139?l=govelez.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://govelez.blogspot.com/feeds/1521581526958802139/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://govelez.blogspot.com/2010/08/ruby-binary-strings.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2418747567071168348/posts/default/1521581526958802139'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2418747567071168348/posts/default/1521581526958802139'/><link rel='alternate' type='text/html' href='http://govelez.blogspot.com/2010/08/ruby-binary-strings.html' title='Formatting Hex Strings in Ruby'/><author><name>Martin Velez</name><uri>https://profiles.google.com/110859472935391531872</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-tufUK32VR5w/AAAAAAAAAAI/AAAAAAAAAAA/8EDGamgFxXc/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_1c_iEyuTTuQ/TG8L_aWIOHI/AAAAAAAAA2I/MIPZxhINODw/s72-c/ruby_logo.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2418747567071168348.post-3611813232495555676</id><published>2010-08-12T12:29:00.000-07:00</published><updated>2010-08-12T13:18:26.502-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Lisp'/><category scheme='http://www.blogger.com/atom/ns#' term='Cartesian Product'/><title type='text'>Cartesian Product in Lisp</title><content type='html'>One of the things I do quite often is calculate the Cartesian product of two lists.&amp;nbsp; Here is my solution to problem in Lisp.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Usage Example:&lt;/b&gt;&lt;code&gt;&lt;br /&gt;&amp;gt; (product '() '())&lt;br /&gt;NIL&lt;br /&gt;&amp;gt; (product '(1 2) '(1 2 3))&lt;br /&gt;((1 1) (1 2) (1 3) (2 1) (2 2) (2 3))&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Implementation:&lt;/b&gt;&lt;br /&gt;&lt;div class="sites-codeblock sites-codesnippet-block"&gt;&lt;code&gt;(defun product (list1 list2)&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;  (let (templist '())&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ;;iterate through the first  list&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; (dolist (item1 list1)&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ;;iterate through the second list&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;  (dolist (item2 list2)&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ;;create a list  from the current items and push it onto the temporary list;;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; (push (list item1 item2) templist)&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;  &amp;nbsp;&amp;nbsp;&amp;nbsp; )&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; )&lt;/code&gt;&lt;code&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;  &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;;;reverse the temporary list to display it  correctly&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; (nreverse templist)&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;  )&lt;/code&gt;&lt;br /&gt;&lt;code&gt;)&lt;/code&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2418747567071168348-3611813232495555676?l=govelez.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://govelez.blogspot.com/feeds/3611813232495555676/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://govelez.blogspot.com/2010/08/cartesian-product-in-lisp.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2418747567071168348/posts/default/3611813232495555676'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2418747567071168348/posts/default/3611813232495555676'/><link rel='alternate' type='text/html' href='http://govelez.blogspot.com/2010/08/cartesian-product-in-lisp.html' title='Cartesian Product in Lisp'/><author><name>Martin Velez</name><uri>https://profiles.google.com/110859472935391531872</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-tufUK32VR5w/AAAAAAAAAAI/AAAAAAAAAAA/8EDGamgFxXc/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry></feed>
