<?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-1558324149520634678</id><updated>2012-01-10T11:24:47.688-05:00</updated><category term='mobile'/><category term='uastring'/><category term='bandwidth capping'/><category term='doxygen'/><category term='dd-wrt'/><category term='erlang'/><category term='onlinux'/><category term='sphinx'/><category term='ion3'/><category term='clisp'/><category term='massey hally'/><category term='toronto'/><category term='mencoder'/><category term='open source'/><category term='GNU'/><category term='transformer tf101'/><category term='common lisp'/><category term='dbus'/><category term='erlang field guide'/><category term='flask'/><category term='rs232'/><category term='sciencetech'/><category term='gnome'/><category term='c#'/><category term='Richard M. Stallman'/><category term='git'/><category term='ati'/><category term='python'/><category term='browser'/><category term='dropline'/><category term='xsp'/><category term='debian'/><category term='video'/><category term='metered internet'/><category term='crtc'/><category term='vim'/><category term='wrt310n'/><category term='tramp mode'/><category term='eddie izzard'/><category term='interceptty'/><category term='tomato'/><category term='cafepress'/><category term='py-xsp'/><category term='work'/><category term='gcj'/><category term='linux'/><category term='serial'/><category term='xml'/><category term='g20'/><category term='emacs'/><category term='openbsd'/><category term='slackware 13.37'/><category term='sbcl'/><category term='java'/><category term='smc8014w-g'/><category term='shirt'/><category term='FSF'/><category term='programming'/><category term='tattoo'/><category term='gtk'/><category term='ssh'/><category term='openmis'/><category term='ati radeon hd5770'/><category term='slackbuilds'/><category term='django'/><category term='reddit'/><category term='jinja'/><category term='erlang and otp in action'/><category term='kde'/><category term='c'/><category term='slackware'/><category term='ecl'/><category term='android'/><category term='portability'/><category term='org mode'/><category term='unix'/><category term='orm'/><category term='xfce'/><category term='qt'/><category term='ubuntu'/><category term='bell'/><category term='archived'/><category term='hacker manifest'/><category term='calgary'/><category term='doxypy'/><title type='text'>Riding the wave.</title><subtitle type='html'>Various musings on my life, music and programming.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://nesv.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://nesv.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>indienick</name><uri>http://www.blogger.com/profile/12739388753406392673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-JrEjMfcwy5U/TazUpJds0BI/AAAAAAAAAT8/hAyqD2IWlwA/s220/2011-04-18-195657.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>61</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1558324149520634678.post-865782400649970492</id><published>2012-01-10T11:23:00.002-05:00</published><updated>2012-01-10T11:24:47.699-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='ssh'/><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><title type='text'>Managing Multiple SSH keys</title><content type='html'>In the IT world, being a systems administrator (or even a developer) you will inevitably run into the situation where you have several SSH keys in your home directory, but only wish to use a particular one when connecting to a particular remote host.&amp;nbsp;I managed to get by, for a while, as most of the applications I used allowed you to specify which SSH key to use (by way of a fancy GUI and file-picker).&lt;br /&gt;&lt;br /&gt;Eventually, it will come to a head when you need to specify which RSA or DSA key to use for the host you are trying to connect to.&lt;br /&gt;&lt;br /&gt;What you need to do, is open (or create) the following file:&amp;nbsp;&lt;span style="text-align: left;"&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;~/.ssh/config&lt;/span&gt;. Within that file, you can specify the FQDN (fully-qualified domain name) of the remote host - note that wildcards are allowed - and which RSA or DSA key to use. Here is an example:&lt;/span&gt;&lt;br /&gt;&lt;span style="text-align: left;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="text-align: left;"&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp;Host *.initech.com&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="text-align: left;"&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; IndentityFile ~/.ssh/id_rsa.work&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="text-align: left;"&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; User nesv&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="text-align: left;"&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; Port 31182&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;What this snippet does, is use the key specified by &lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;IdentityFile&lt;/span&gt; whenever I want to connect to a host on the &lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;initech.com&lt;/span&gt; domain, but I want to connect as user "&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;nesv&lt;/span&gt;" on port &lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;31182&lt;/span&gt;. Of course, you don't have to specify the &lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;User&lt;/span&gt; or &lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;Port&lt;/span&gt; directives, I have though, because on that (albeit, fictional) host I have added my public RSA key to the "&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;nesv&lt;/span&gt;" user's &lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;~/.ssh/authorized_keys&lt;/span&gt; file (which means I will not be prompted for a password, and instead rely on my public/private key-pair for authentication).&lt;br /&gt;&lt;br /&gt;Really, this is here more for my own reference (I whole-heartedly subscribe to the latter action in "set and forget" situtations).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1558324149520634678-865782400649970492?l=nesv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nesv.blogspot.com/feeds/865782400649970492/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://nesv.blogspot.com/2012/01/managing-multiple-ssh-keys.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/865782400649970492'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/865782400649970492'/><link rel='alternate' type='text/html' href='http://nesv.blogspot.com/2012/01/managing-multiple-ssh-keys.html' title='Managing Multiple SSH keys'/><author><name>indienick</name><uri>http://www.blogger.com/profile/12739388753406392673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-JrEjMfcwy5U/TazUpJds0BI/AAAAAAAAAT8/hAyqD2IWlwA/s220/2011-04-18-195657.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1558324149520634678.post-5783064628592296634</id><published>2012-01-03T15:30:00.001-05:00</published><updated>2012-01-03T15:30:07.708-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='org mode'/><category scheme='http://www.blogger.com/atom/ns#' term='emacs'/><category scheme='http://www.blogger.com/atom/ns#' term='tramp mode'/><title type='text'>Emacs: TRAMP Mode</title><content type='html'>I just came across a sexy, sexy mode in Emacs: &lt;a href="http://www.emacswiki.org/emacs/TrampMode"&gt;TRAMP mode&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;TRAMP (Transparent Remote Access, Multiple Protocols) mode is something that you might be used to if you use, say, TextWrangler or Coda. It allows you to edit files on a remote host.&lt;br /&gt;&lt;br /&gt;In the events where you need super-user privileges to edit a file, and your only means of doing so is through &lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;sudo&lt;/span&gt;, guess what - TRAMP-mode supports that!&lt;br /&gt;&lt;br /&gt;This mode is definitely making my list of "Essential Emacs Modes", right after &lt;a href="http://orgmode.org/"&gt;ORG-mode&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1558324149520634678-5783064628592296634?l=nesv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nesv.blogspot.com/feeds/5783064628592296634/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://nesv.blogspot.com/2012/01/emacs-tramp-mode.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/5783064628592296634'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/5783064628592296634'/><link rel='alternate' type='text/html' href='http://nesv.blogspot.com/2012/01/emacs-tramp-mode.html' title='Emacs: TRAMP Mode'/><author><name>indienick</name><uri>http://www.blogger.com/profile/12739388753406392673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-JrEjMfcwy5U/TazUpJds0BI/AAAAAAAAAT8/hAyqD2IWlwA/s220/2011-04-18-195657.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1558324149520634678.post-6606656701190770407</id><published>2011-10-19T14:34:00.000-04:00</published><updated>2011-11-23T20:42:24.178-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='django'/><category scheme='http://www.blogger.com/atom/ns#' term='orm'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='flask'/><category scheme='http://www.blogger.com/atom/ns#' term='jinja'/><title type='text'>Flask GOTCHA, with HTML forms (checkboxes)</title><content type='html'>The latest project I'm working on has me dealing with&amp;nbsp;&lt;a href="http://flask.pocoo.org/"&gt;Flask&lt;/a&gt;. Flask is pretty darn sweet, I have to say. It is comparable to &lt;a href="http://www.djangoproject.com/"&gt;Django&lt;/a&gt;, but without the &lt;a href="https://docs.djangoproject.com/en/dev/topics/db/"&gt;ORM&lt;/a&gt; layer that locks you into having to use an RDBMS (MySQL, PostgreSQL, SQLite3, etc.).&lt;br /&gt;&lt;br /&gt;While working with some HTML forms for an administrative interface, I kept getting an HTTP 400 (bad request) response. The one thing that was on my input form, that could have been (and ended up being) the culprit, was a checkbox acting as a boolean flag (in context, it was for enabling or disabling a user's account).&lt;br /&gt;&lt;br /&gt;In this particular instance, I had defined my checkbox like so:&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;lt;input checked="checked" name="userenabled" type="checkbox" value="{{ true }}" /&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;(If that &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;value="{{ true }}"&lt;/span&gt; portion is strange, it is because I am using &lt;a href="http://jinja.pocoo.org/"&gt;Jinja2&lt;/a&gt; templates.)&lt;br /&gt;&lt;br /&gt;The Python code that checked for that value was like so:&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;user_enabled = request.form['userenabled']&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The problem would arise when the checkbox was un-checked by the user; when the checkbox is un-checked, it does not hold a value. In reality, it does not exist in the form when it is sent via POST.&lt;br /&gt;&lt;br /&gt;Yes, this is a gotcha, but here is the workaround (which you would use in your URL handler, in Python):&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;user_enabled = False&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;if 'userenabled' in request.form:&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; user_enabled = True&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1558324149520634678-6606656701190770407?l=nesv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nesv.blogspot.com/feeds/6606656701190770407/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://nesv.blogspot.com/2011/10/flask-gotcha-with-html-forms-checkboxes.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/6606656701190770407'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/6606656701190770407'/><link rel='alternate' type='text/html' href='http://nesv.blogspot.com/2011/10/flask-gotcha-with-html-forms-checkboxes.html' title='Flask GOTCHA, with HTML forms (checkboxes)'/><author><name>indienick</name><uri>http://www.blogger.com/profile/12739388753406392673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-JrEjMfcwy5U/TazUpJds0BI/AAAAAAAAAT8/hAyqD2IWlwA/s220/2011-04-18-195657.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1558324149520634678.post-6482033506446328796</id><published>2011-09-23T14:19:00.000-04:00</published><updated>2011-09-23T14:42:48.303-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='work'/><title type='text'>New job!</title><content type='html'>&lt;p&gt;It has been a little more than two weeks now, but I no longer work for the transportation-company-that-will-remain-unnamed. I now work for another company-that-will-not-be-named!&lt;/p&gt;&lt;p&gt;Basically, I just needed a change of pace; I felt like I was beginning to stagnate. With the new job, it is quite nice to be able to step out of the role of having to manage one's self. Sure, not being self-employed and having to manage yourself may sound nice and cushy, but after a while, it becomes tiring. Not to mention, it also leaves less time for you to do the work because there is always an email you have to send - or a meeting to be had - where you have to explain what it is you're doing, and it made things incredibly difficult to plan out because every time you're in a meeting, or sending an email, you are not doing work. Dates would always get pushed back, and the only reason being, "well, I had to stop working to tell you what it is I'm doing."&lt;/p&gt;&lt;p&gt;Now, do not get me wrong, I'm not harping on my previous employer. They have a method, and it has worked for them for many decades now. I just was not able to maintain my pace with that particular method, so I decided to cut myself out of the picture before things got out of hand, and before I ran the risk of affecting that company in a damaging way.&lt;/p&gt;&lt;p&gt;Am I happier now? Absolutely. How long will it last? I don't know, but I am going to enjoy it for as long as is possible.&lt;/p&gt;&lt;p&gt;So, what will I be doing at my new job? Well, for the most part, it will be transitioning some of the company's projects away from PHP, and into Python, as well as architecting new data handling backends for - initially, but not limited to - web-based services.&lt;/p&gt;&lt;p&gt;I'm looking forward to what this job will bring!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1558324149520634678-6482033506446328796?l=nesv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nesv.blogspot.com/feeds/6482033506446328796/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://nesv.blogspot.com/2011/09/new-job.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/6482033506446328796'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/6482033506446328796'/><link rel='alternate' type='text/html' href='http://nesv.blogspot.com/2011/09/new-job.html' title='New job!'/><author><name>indienick</name><uri>http://www.blogger.com/profile/12739388753406392673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-JrEjMfcwy5U/TazUpJds0BI/AAAAAAAAAT8/hAyqD2IWlwA/s220/2011-04-18-195657.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1558324149520634678.post-8170443102510995479</id><published>2011-07-21T21:58:00.000-04:00</published><updated>2011-07-21T23:14:00.104-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='slackware 13.37'/><category scheme='http://www.blogger.com/atom/ns#' term='ati'/><category scheme='http://www.blogger.com/atom/ns#' term='slackware'/><category scheme='http://www.blogger.com/atom/ns#' term='ati radeon hd5770'/><title type='text'>Dual-monitor support (ATI Radeon HD5770 + Slackware 13.37)</title><content type='html'>As most Linux users do, it was time for me to wipe and reload my machine. &lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Brief tangent, I know that with long-time Windows users, wiping and reloading was a usual thing, but I suppose it is different for Linux users; there is always a different distribution to try, or a major release upgrade to do.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;I went with Ubuntu on my last install due to it's "just works" nature, and I didn't want to fuss with my system much. This time around, however, I went back to some old roots with &lt;a href="http://www.slackware.com/"&gt;Slackware&lt;/a&gt; (version 13.37, particularly). I ran into a small problem though: where Ubuntu just probed the living crap out of my system and managed to configure it all correctly (with a little customized tweaking, afterwards), Slackware requires a bit of fiddling. For those of you who do not know, a full-on Slackware installation leaves you at a TTY login, after boot.&lt;br /&gt;&lt;br /&gt;Everything worked, out of the box, with a default Slackware install; the only exception being my video card, an &lt;a href="http://www.amd.com/us/products/desktop/graphics/ati-radeon-hd-5000/hd-5770/Pages/ati-radeon-hd-5770-overview.aspx"&gt;ATI Radeon HD5770&lt;/a&gt;. I have always run ATI cards in my desktops, and in that knew I would need to download the &lt;a href="http://support.amd.com/us/gpudownload/linux/Pages/radeon_linux.aspx"&gt;ATI Catalyst Drivers&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;To install the AMD ATI Catalyst drivers, &lt;tt&gt;chmod +x&lt;/tt&gt; the downloaded file, and then run it: &lt;tt&gt;$ sudo ./ati-driver-installer-11-6-x86.x86_64.run&lt;/tt&gt;&lt;br /&gt;&lt;br /&gt;After it finishes installing, I ran the following command to get my dual displays working:&lt;br /&gt;&lt;code&gt;&lt;br /&gt; $ sudo aticonfig --initial=dual-head --screen-layout=left --xinerama=on&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/1558324149520634678-8170443102510995479?l=nesv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nesv.blogspot.com/feeds/8170443102510995479/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://nesv.blogspot.com/2011/07/dual-monitor-support-ati-radeon-hd5770.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/8170443102510995479'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/8170443102510995479'/><link rel='alternate' type='text/html' href='http://nesv.blogspot.com/2011/07/dual-monitor-support-ati-radeon-hd5770.html' title='Dual-monitor support (ATI Radeon HD5770 + Slackware 13.37)'/><author><name>indienick</name><uri>http://www.blogger.com/profile/12739388753406392673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-JrEjMfcwy5U/TazUpJds0BI/AAAAAAAAAT8/hAyqD2IWlwA/s220/2011-04-18-195657.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1558324149520634678.post-2709885171539422248</id><published>2011-06-28T21:15:00.001-04:00</published><updated>2011-06-28T21:18:47.779-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='uastring'/><category scheme='http://www.blogger.com/atom/ns#' term='transformer tf101'/><category scheme='http://www.blogger.com/atom/ns#' term='browser'/><title type='text'>Making all websites show up normally</title><content type='html'>&lt;div&gt;&lt;p&gt;My first official gripe with the Transformer is actually just with the stock web browser that it ships with. For instance, if I went to Facebook, it would insist that I was a mobile device, but some websites are completely unusable in this "mobile mode".&lt;/p&gt;&lt;p&gt;Here is a &lt;a href="http://www.transformerforums.com/forum/asus-transformer-faq/116-how-disable-mobile-sites-stock-browser.html"&gt;quick guide&lt;/a&gt; I found to help you change the browser's "user agent string" so that websites render like they would on a full-blown desktop.&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1558324149520634678-2709885171539422248?l=nesv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nesv.blogspot.com/feeds/2709885171539422248/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://nesv.blogspot.com/2011/06/making-all-websites-show-up-normally.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/2709885171539422248'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/2709885171539422248'/><link rel='alternate' type='text/html' href='http://nesv.blogspot.com/2011/06/making-all-websites-show-up-normally.html' title='Making all websites show up normally'/><author><name>indienick</name><uri>http://www.blogger.com/profile/12739388753406392673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-JrEjMfcwy5U/TazUpJds0BI/AAAAAAAAAT8/hAyqD2IWlwA/s220/2011-04-18-195657.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1558324149520634678.post-7893335489358551435</id><published>2011-06-26T19:25:00.001-04:00</published><updated>2011-06-28T21:19:22.729-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='video'/><category scheme='http://www.blogger.com/atom/ns#' term='mobile'/><category scheme='http://www.blogger.com/atom/ns#' term='transformer tf101'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title type='text'>New gadget!</title><content type='html'>&lt;div&gt;&lt;p&gt;On Friday, I picked up an Asus Transformer TF101 and I have to say, it is absolutely amazing. Tablets have never really appealed to me, as the lack of a physical keyboard does not do it for me, and trying to touch-type on a capacitive screen is infuriating.&lt;/p&gt;&lt;p&gt;I only opted for the 16GB model, as I don't plan on keeping my life on it, but I will be purchasing a microSD card at some point, to gain some storage space (in the event I wish to store a plethora of movies, for traveling).&lt;/p&gt;&lt;p&gt;So, if I am not a fan of tablets, why the Transformer TF101? Well, for an extra $140CAD, you can purchase a keyboard for the tablet, which is more like a docking station; it boosts the battery life of the unit (supposedly up to 16 hours of battery life) and it has a regular SD-card slot and two USB ports. The tablet itself has a microSD slot and a mini-HDMI output. With the keyboard/dock attachment, it is effectively a netbook. &lt;/p&gt;&lt;p&gt;Being a developer, I thought I would find myself stifled by the Android OS. Alas, I had to remind myself that this is a tablet - it's not meant to be a development environment. Luckily, I found a few good SSH apps to use, which means I can use whatever command-line tools are available on my desktop, or on a computer at work.&lt;/p&gt;&lt;p&gt;The only gripe I have about this unit, is not actually about the unit itself, but rather the applications available for it. For the whole movie-watching experience, the Asus-provided media player does not play well with the AVIs I transferred over to the device (for what it is worth, the movies were the Swedish, film adaptations of Steig Larsen's trilogy &lt;i&gt;The Girl with the Dragon Tattoo&lt;/i&gt;, &lt;i&gt;The Girl Who Played with Fire&lt;/i&gt; and &lt;i&gt;The Girl Who Kicked the Hornet's Nest&lt;/i&gt; - they are amazing). After some hunting, I found MoboPlayer (which also required installing a separate codec pack). It does the job, but I find the whole interface, specifically the flow to loading a movie, to be really clunky and un-polished.&amp;#160; I think this means it is time for me to stop dilly-dallying and write a decent, but simple, movie player app for Android (thankfully, developing for Android appears to be reasonably straight-forward and well-documented).&lt;/p&gt;&lt;p&gt;What may kill the Transformer for most, is that there is no 3G (or 4G) capability, just WiFi; there is no slot for a small-form-factor SIM card. This really does not bother me, though. If something really important needs to be done immediately (think of being on-call for work, maintaining an unstable, but high-uptime-required system) then I would rather be at a full-blown desktop than gumming about with an RDP session.&lt;/p&gt;&lt;p&gt;My overall rating for the Transformer TF101 is a solid 4.5 out of 5. The battery time is awesome, the interface is easy to use and get used to, it runs Android, and it feels solid.&lt;/p&gt;&lt;p&gt;(And for those curious, yes, I typed this post up on the Transformer.)&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1558324149520634678-7893335489358551435?l=nesv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nesv.blogspot.com/feeds/7893335489358551435/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://nesv.blogspot.com/2011/06/new-gadget.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/7893335489358551435'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/7893335489358551435'/><link rel='alternate' type='text/html' href='http://nesv.blogspot.com/2011/06/new-gadget.html' title='New gadget!'/><author><name>indienick</name><uri>http://www.blogger.com/profile/12739388753406392673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-JrEjMfcwy5U/TazUpJds0BI/AAAAAAAAAT8/hAyqD2IWlwA/s220/2011-04-18-195657.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1558324149520634678.post-5265031211553656522</id><published>2011-06-14T16:21:00.000-04:00</published><updated>2011-06-14T17:12:07.120-04:00</updated><title type='text'>Oh sweet, sweet nostalgia</title><content type='html'>I was browsing the Intertubes (namely, &lt;a href="http://www.reddit.com/"&gt;Reddit&lt;/a&gt;), and came across this little trinket: &lt;a href="http://openra.res0l.net/"&gt;OpenRA&lt;/a&gt;! An open-source clone of &lt;em&gt;Command &amp; Conquer&lt;/em&gt; and &lt;em&gt;Command &amp; Conquer: Red Alert&lt;/em&gt;.&lt;br /&gt;&lt;br /&gt;It is written using &lt;a href="http://www.mono-project.com/Main_Page"&gt;Mono&lt;/a&gt;, and takes a few minutes to compile, from source.&lt;br /&gt;&lt;br /&gt;The only "downside" is that there is no single-player mode, but it is fully network-multiplayer ready (and it includes bots).&lt;br /&gt;&lt;br /&gt;For installation instructions, read the &lt;tt&gt;INSTALL&lt;/tt&gt; file in the source tree, or consult &lt;a href="http://www.sleipnirstuff.com/forum/viewtopic.php?f=82&amp;t=14846"&gt;this forum post&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The repository is hosted on Github: &lt;a href="https://github.com/OpenRA/OpenRA"&gt;OpenRA/OpenRA&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1558324149520634678-5265031211553656522?l=nesv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nesv.blogspot.com/feeds/5265031211553656522/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://nesv.blogspot.com/2011/06/oh-sweet-sweet-nostalgia.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/5265031211553656522'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/5265031211553656522'/><link rel='alternate' type='text/html' href='http://nesv.blogspot.com/2011/06/oh-sweet-sweet-nostalgia.html' title='Oh sweet, sweet nostalgia'/><author><name>indienick</name><uri>http://www.blogger.com/profile/12739388753406392673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-JrEjMfcwy5U/TazUpJds0BI/AAAAAAAAAT8/hAyqD2IWlwA/s220/2011-04-18-195657.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1558324149520634678.post-7272199421188216178</id><published>2011-06-02T20:22:00.000-04:00</published><updated>2011-06-02T20:32:42.551-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='doxypy'/><category scheme='http://www.blogger.com/atom/ns#' term='doxygen'/><category scheme='http://www.blogger.com/atom/ns#' term='sphinx'/><title type='text'>Sphinx &amp; generating API documentation for Python</title><content type='html'>Up until recently, I was using Doxygen with DoxyPy to generate API documentation for my project at work. Well, unfortunately, it seems to have this weird behaviour of not wanting to document functions (as opposed to methods, which are functions inside of classes).&lt;br /&gt;&lt;br /&gt;I'm sure there is some random, little, non-obvious setting in my project's &lt;tt&gt;Doxyfile&lt;/tt&gt; I was supposed to tweak, but I couldn't find any clues as to which setting that may be.&lt;br /&gt;&lt;br /&gt;So, I went hunting for a new API documentation tool. After some "in-depth" Google action, I decided to go with &lt;a href="http://sphinx.pocoo.org/"&gt;Sphinx&lt;/a&gt;. Boy oh boy, am I glad I did!&lt;br /&gt;&lt;br /&gt;Sphinx makes use of reStructuredText document formatting to generate documentation for you. Normally, I would consider it a downside that you have to manually type in everything you want, but in the end, it actually proved to be less of a fuss! The RST formatting is not difficult to get a grasp on, but a warning for future users: it follows the same indentation-based rules that Python does. Sphinx also happens to be picky about white-space around formatting directives, but again, it really is not that bothersome (the Sphinx "compiler" will just give you warnings).&lt;br /&gt;&lt;br /&gt;Furthermore, Sphinx is not just limited to Python; it can also handle C, C++, Ruby, and a few other languages. However, the support for languages other than Python is not as full-featured; how much it all lacks, I do not know, as I have yet to use Sphinx for documenting anything other than Python.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1558324149520634678-7272199421188216178?l=nesv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nesv.blogspot.com/feeds/7272199421188216178/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://nesv.blogspot.com/2011/06/sphinx-generating-api-documentation-for.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/7272199421188216178'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/7272199421188216178'/><link rel='alternate' type='text/html' href='http://nesv.blogspot.com/2011/06/sphinx-generating-api-documentation-for.html' title='Sphinx &amp; generating API documentation for Python'/><author><name>indienick</name><uri>http://www.blogger.com/profile/12739388753406392673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-JrEjMfcwy5U/TazUpJds0BI/AAAAAAAAAT8/hAyqD2IWlwA/s220/2011-04-18-195657.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1558324149520634678.post-7004304861312271943</id><published>2011-05-30T13:10:00.000-04:00</published><updated>2011-05-30T13:38:06.196-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xsp'/><category scheme='http://www.blogger.com/atom/ns#' term='xml'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>xsp: How it's coming along</title><content type='html'>&lt;p&gt;So, I got on the notion of making XSP's data bi-directional, meaning, the data that you read in from an XML file with the &lt;code&gt;xsp.parse()&lt;/code&gt; function, could also be immediately written back out with an &lt;code&gt;xsp.write()&lt;/code&gt; function. This all seems simple enough, right? Well, not so much.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Parsing data and putting it into a &lt;code&gt;dict&lt;/code&gt; is simple enough; it is something that can be done recursively. However, writing that exact same &lt;code&gt;dict&lt;/code&gt; out gets really hairy, really quickly.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Here is a code example, so you can visualize with me:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;vocabulary = {'group' : {&lt;br /&gt;&amp;nbsp;&amp;nbsp;'name': 'users',&lt;br /&gt;&amp;nbsp;&amp;nbsp;None: {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;'user': [{'name': 'Bob'}, {'name': 'Alice'}]}}}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Now, compare that representation to the desired output:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&amp;lt;group name="users"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;user name="Bob" /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;user name="Alice" /&amp;gt;&lt;br /&gt;&amp;lt;/group&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;As it sits right now, I have three, distinct possibilities for the value-portion of a &lt;code&gt;dict&lt;/code&gt;'s key-value pair:&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;Another &lt;code&gt;dict&lt;/code&gt;; this means we have a new sub-level of elements. Though, the dictionary key for these is &lt;code&gt;None&lt;/code&gt;.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;A &lt;code&gt;list&lt;/code&gt;; this is a collection of attributes, of elements whose name is the dictionary key, for this value. Each item in the list is possibly different. The desired scenario here, is to iterate through the list and create a new element where the attributes are set by the dictionary that is each item in the list.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;A simple string or number (float, integer, ..., doesn't matter). These are attributes, plain and simple.&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Through trial and error, it seems I can only get &lt;em&gt;any&lt;/em&gt; two out of the three scenarios working. (It's like that saying, "Fast, cheap, good. Pick any two.")&lt;/p&gt;&lt;br /&gt;&lt;p&gt;My whole goal here is to try and keep the solution elegant (and maybe even recursive). However, I think I am falling prey to the very evils of pre-optimization that Donald Knuth warns everyone about.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1558324149520634678-7004304861312271943?l=nesv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nesv.blogspot.com/feeds/7004304861312271943/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://nesv.blogspot.com/2011/05/xsp-how-its-coming-along.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/7004304861312271943'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/7004304861312271943'/><link rel='alternate' type='text/html' href='http://nesv.blogspot.com/2011/05/xsp-how-its-coming-along.html' title='xsp: How it&apos;s coming along'/><author><name>indienick</name><uri>http://www.blogger.com/profile/12739388753406392673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-JrEjMfcwy5U/TazUpJds0BI/AAAAAAAAAT8/hAyqD2IWlwA/s220/2011-04-18-195657.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1558324149520634678.post-1956820896227378671</id><published>2011-04-21T16:51:00.000-04:00</published><updated>2011-04-21T17:02:46.835-04:00</updated><title type='text'>Conky</title><content type='html'>So, just for something to tinker around with, I installed &lt;a href="http://conky.sourceforge.net/"&gt;Conky&lt;/a&gt; and started writing my own &lt;tt&gt;~/.conkyrc&lt;/tt&gt; file.&lt;br /&gt;&lt;br /&gt;Here is a screen-shot of my current conky setup:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-SecVFQEE-3g/TbCZssfQhXI/AAAAAAAAAUc/xELgJduB_uI/s1600/conky-screenshot.png"&gt;&lt;img style="float:left; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 200px; height: 26px;" src="http://1.bp.blogspot.com/-SecVFQEE-3g/TbCZssfQhXI/AAAAAAAAAUc/xELgJduB_uI/s200/conky-screenshot.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5598143329957086578" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;And here is my &lt;tt&gt;~/.conkyrc&lt;/tt&gt;:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;alignment       bottom_left&lt;br /&gt;default_color   grey60&lt;br /&gt;draw_shades     no&lt;br /&gt;draw_borders    no&lt;br /&gt;&lt;br /&gt;background      no&lt;br /&gt;&lt;br /&gt;use_xft         yes&lt;br /&gt;xftfont         Inconsolata:size=10&lt;br /&gt;&lt;br /&gt;update_interval 1&lt;br /&gt;double_buffer   yes&lt;br /&gt;no_buffers      yes&lt;br /&gt;text_buffer_size        2048&lt;br /&gt;imlib_cache_size        0&lt;br /&gt;&lt;br /&gt;own_window      yes&lt;br /&gt;own_window_transparent  yes&lt;br /&gt;own_window_type override&lt;br /&gt;own_window_hints        undecorated,below,sticky,skip_taskbar,skip_pager&lt;br /&gt;&lt;br /&gt;minimum_size    1000 190&lt;br /&gt;maximum_width   1000&lt;br /&gt;gap_x           10&lt;br /&gt;gap_y           0&lt;br /&gt;&lt;br /&gt;cpu_avg_samples 2&lt;br /&gt;net_avg_samples 2&lt;br /&gt;&lt;br /&gt;border_inner_margin     0&lt;br /&gt;border_outer_margin     0&lt;br /&gt;&lt;br /&gt;lua_load        /home/nick/.conky/rings-v1.2.lua&lt;br /&gt;lua_draw_hook_pre       ring_stats&lt;br /&gt;&lt;br /&gt;TEXT&lt;br /&gt;$nodename (${addr eth0}) ~ ${uid_name 1000}&lt;br /&gt;${hr 5}&lt;br /&gt;${goto 62.5}${voffset 70}cpu&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;To draw the rings, you will need &lt;a href="http://londonali1010.deviantart.com/art/quot-Rings-quot-Meters-for-Conky-141961783"&gt;rings.lua&lt;/a&gt;. Here is my &lt;tt&gt;rings.lua&lt;/tt&gt; file:&lt;br /&gt;&lt;i&gt;NOTE: The formatting is really messed up; I will have to add whitespace, later.&lt;/i&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;--[[&lt;br /&gt;Ring Meters by londonali1010 (2009)&lt;br /&gt;&lt;br /&gt;This script draws percentage meters as rings. It is fully customisable; all options are described in the script.&lt;br /&gt;&lt;br /&gt;IMPORTANT: if you are using the 'cpu' function, it will cause a segmentation fault if it tries to draw a ring straight away. The if statement on line 145 uses a delay to make sure that this doesn't happen. It calculates the length of the delay by the number of updates since Conky started. Generally, a value of 5s is long enough, so if you update Conky every 1s, use update_num&gt;5 in that if statement (the default). If you only update Conky every 2s, you should change it to update_num&gt;3; conversely if you update Conky every 0.5s, you should use update_num&gt;10. ALSO, if you change your Conky, is it best to use "killall conky; conky" to update it, otherwise the update_num will not be reset and you will get an error.&lt;br /&gt;&lt;br /&gt;To call this script in Conky, use the following (assuming that you save this script to ~/scripts/rings.lua):&lt;br /&gt;        lua_load ~/scripts/rings-v1.2.lua&lt;br /&gt;        lua_draw_hook_pre ring_stats&lt;br /&gt;        &lt;br /&gt;Changelog:&lt;br /&gt;+ v1.2 -- Added option for the ending angle of the rings (07.10.2009)&lt;br /&gt;+ v1.1 -- Added options for the starting angle of the rings, and added the "max" variable, to allow for variables that output a numerical value rather than a percentage (29.09.2009)&lt;br /&gt;+ v1.0 -- Original release (28.09.2009)&lt;br /&gt;]]&lt;br /&gt;&lt;br /&gt;settings_table = {&lt;br /&gt;--      {&lt;br /&gt;                -- Edit this table to customise your rings.&lt;br /&gt;                -- You can create more rings simply by adding more elements to settings_table.&lt;br /&gt;                -- "name" is the type of stat to display; you can choose from 'cpu', 'memperc', 'fs_used_perc', 'battery_used_perc'.&lt;br /&gt;--              name='time',&lt;br /&gt;                -- "arg" is the argument to the stat type, e.g. if in Conky you would write ${cpu cpu0}, 'cpu0' would be the argument. If you would not use an argument in the Conky variable, use ''.&lt;br /&gt;--              arg='%I.%M',&lt;br /&gt;                -- "max" is the maximum value of the ring. If the Conky variable outputs a percentage, use 100.&lt;br /&gt;--              max=12,&lt;br /&gt;                -- "bg_colour" is the colour of the base ring.&lt;br /&gt;--              bg_colour=0xffffff,&lt;br /&gt;                -- "bg_alpha" is the alpha value of the base ring.&lt;br /&gt;--              bg_alpha=0.1,&lt;br /&gt;                -- "fg_colour" is the colour of the indicator part of the ring.&lt;br /&gt;--              fg_colour=0xffffff,&lt;br /&gt;                -- "fg_alpha" is the alpha value of the indicator part of the ring.&lt;br /&gt;--              fg_alpha=0.2,&lt;br /&gt;                -- "x" and "y" are the x and y coordinates of the centre of the ring, relative to the top left corner of the Conky window.&lt;br /&gt;--              x=165, y=170,&lt;br /&gt;                -- "radius" is the radius of the ring.&lt;br /&gt;--              radius=50,&lt;br /&gt;                -- "thickness" is the thickness of the ring, centred around the radius.&lt;br /&gt;--              thickness=5,&lt;br /&gt;                -- "start_angle" is the starting angle of the ring, in degrees, clockwise from top. Value can be either positive or negative.&lt;br /&gt;--              start_angle=0,&lt;br /&gt;                -- "end_angle" is the ending angle of the ring, in degrees, clockwise from top. Value can be either positive or negative, but must be larger (e.g. more clockwise) than start_angle.&lt;br /&gt;--              end_angle=360&lt;br /&gt;--      },&lt;br /&gt;--      {&lt;br /&gt;--              name='time',&lt;br /&gt;--              arg='%M.%S',&lt;br /&gt;--              max=60,&lt;br /&gt;--              bg_colour=0xffffff,&lt;br /&gt;--              bg_alpha=0.1,&lt;br /&gt;--              fg_colour=0xffffff,&lt;br /&gt;--              fg_alpha=0.4,&lt;br /&gt;--              x=165, y=170,&lt;br /&gt;--              radius=56,&lt;br /&gt;--              thickness=5,&lt;br /&gt;--              start_angle=0,&lt;br /&gt;--              end_angle=360&lt;br /&gt;--      },&lt;br /&gt;--      {&lt;br /&gt;--              name='time',&lt;br /&gt;--              arg='%S',&lt;br /&gt;--              max=60,&lt;br /&gt;--              bg_colour=0xffffff,&lt;br /&gt;--              bg_alpha=0.1,&lt;br /&gt;--              fg_colour=0xffffff,&lt;br /&gt;--              fg_alpha=0.6,&lt;br /&gt;--              x=165, y=170,&lt;br /&gt;--              radius=62,&lt;br /&gt;--              thickness=5,&lt;br /&gt;--              start_angle=0,&lt;br /&gt;--              end_angle=360&lt;br /&gt;--      },&lt;br /&gt;        {&lt;br /&gt;                name='cpu',&lt;br /&gt;                arg='cpu3',&lt;br /&gt;                max=100,&lt;br /&gt;                bg_colour=0xffffff,&lt;br /&gt;                bg_alpha=0.1,&lt;br /&gt;                fg_colour=0xffffff,&lt;br /&gt;                fg_alpha=0.8,&lt;br /&gt;                x=75, y=110,&lt;br /&gt;                radius=70,&lt;br /&gt;                thickness=5,&lt;br /&gt;                start_angle=270,&lt;br /&gt;                end_angle=360&lt;br /&gt;        },&lt;br /&gt;        {&lt;br /&gt;                name='cpu',&lt;br /&gt;                arg='cpu1',&lt;br /&gt;                max=100,&lt;br /&gt;                bg_colour=0xffffff,&lt;br /&gt;                bg_alpha=0.1,&lt;br /&gt;                fg_colour=0xffffff,&lt;br /&gt;                fg_alpha=0.8,&lt;br /&gt;                x=75, y=110,&lt;br /&gt;                radius=70,&lt;br /&gt;                thickness=5,&lt;br /&gt;                start_angle=90,&lt;br /&gt;                end_angle=180&lt;br /&gt;        },&lt;br /&gt;        {&lt;br /&gt;                name='cpu',&lt;br /&gt;                arg='cpu2',&lt;br /&gt;                max=100,&lt;br /&gt;                bg_colour=0xffffff,&lt;br /&gt;                bg_alpha=0.1,&lt;br /&gt;                fg_colour=0xffffff,&lt;br /&gt;                fg_alpha=0.8,&lt;br /&gt;                x=75, y=110,&lt;br /&gt;                radius=70,&lt;br /&gt;                thickness=5,&lt;br /&gt;                start_angle=180,&lt;br /&gt;                end_angle=270&lt;br /&gt;        },&lt;br /&gt;        {&lt;br /&gt;                name='cpu',&lt;br /&gt;                arg='cpu0',&lt;br /&gt;                max=100,&lt;br /&gt;                bg_colour=0xffffff,&lt;br /&gt;                bg_alpha=0.1,&lt;br /&gt;                fg_colour=0xffffff,&lt;br /&gt;                fg_alpha=0.8,&lt;br /&gt;                x=75, y=110,&lt;br /&gt;                radius=70,&lt;br /&gt;                thickness=5,&lt;br /&gt;                start_angle=0,&lt;br /&gt;                end_angle=90&lt;br /&gt;        },&lt;br /&gt;--      {&lt;br /&gt;--              name='battery_percent',&lt;br /&gt;--              arg='BAT1',&lt;br /&gt;--              max=100,&lt;br /&gt;--              bg_colour=0xffffff,&lt;br /&gt;--              bg_alpha=0.1,&lt;br /&gt;--              fg_colour=0xffffff,&lt;br /&gt;--              fg_alpha=0.6,&lt;br /&gt;--              x=165, y=170,&lt;br /&gt;--              radius=72,&lt;br /&gt;--              thickness=11,&lt;br /&gt;--              start_angle=122,&lt;br /&gt;--              end_angle=210&lt;br /&gt;--      },&lt;br /&gt;--      {&lt;br /&gt;--              name='memperc',&lt;br /&gt;--              arg='',&lt;br /&gt;--              max=100,&lt;br /&gt;--              bg_colour=0xffffff,&lt;br /&gt;--              bg_alpha=0.1,&lt;br /&gt;--              fg_colour=0xffffff,&lt;br /&gt;--              fg_alpha=0.8,&lt;br /&gt;--              x=165, y=170,&lt;br /&gt;--              radius=83.5,&lt;br /&gt;--              thickness=8,&lt;br /&gt;--              start_angle=122,&lt;br /&gt;--              end_angle=210&lt;br /&gt;--      },&lt;br /&gt;--      {&lt;br /&gt;--              name='time',&lt;br /&gt;--              arg='%d',&lt;br /&gt;--              max=31,&lt;br /&gt;--              bg_colour=0xffffff,&lt;br /&gt;--              bg_alpha=0.1,&lt;br /&gt;--              fg_colour=0xffffff,&lt;br /&gt;--              fg_alpha=0.8,&lt;br /&gt;--              x=165, y=170,&lt;br /&gt;--              radius=70,&lt;br /&gt;--              thickness=5,&lt;br /&gt;--              start_angle=212,&lt;br /&gt;--              end_angle=360&lt;br /&gt;--      },&lt;br /&gt;--      {&lt;br /&gt;--              name='time',&lt;br /&gt;--              arg='%m',&lt;br /&gt;--              max=12,&lt;br /&gt;--              bg_colour=0xffffff,&lt;br /&gt;--              bg_alpha=0.1,&lt;br /&gt;--              fg_colour=0xffffff,&lt;br /&gt;--              fg_alpha=0.8,&lt;br /&gt;--              x=165, y=170,&lt;br /&gt;--              radius=76,&lt;br /&gt;--              thickness=5,&lt;br /&gt;--              start_angle=212,&lt;br /&gt;--              end_angle=360&lt;br /&gt;--      },&lt;br /&gt;--      {&lt;br /&gt;--              name='fs_used_perc',&lt;br /&gt;--              arg='/',&lt;br /&gt;--              max=150,&lt;br /&gt;--              bg_colour=0xffffff,&lt;br /&gt;--              bg_alpha=0.2,&lt;br /&gt;--              fg_colour=0xffffff,&lt;br /&gt;--              fg_alpha=0.3,&lt;br /&gt;--              x=165, y=170,&lt;br /&gt;--              radius=108.5,&lt;br /&gt;--              thickness=3,&lt;br /&gt;--              start_angle=-120,&lt;br /&gt;--              end_angle=240&lt;br /&gt;--      },&lt;br /&gt;--      {&lt;br /&gt;--              name='fs_used_perc',&lt;br /&gt;--              arg='/',&lt;br /&gt;--              max=100,&lt;br /&gt;--              bg_colour=0xffffff,&lt;br /&gt;--              bg_alpha=0.2,&lt;br /&gt;--              fg_colour=0xffffff,&lt;br /&gt;--              fg_alpha=0.3,&lt;br /&gt;--              x=165, y=170,&lt;br /&gt;--              radius=135,&lt;br /&gt;--              thickness=50,&lt;br /&gt;--              start_angle=-120,&lt;br /&gt;--              end_angle=120&lt;br /&gt;--      },&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;require 'cairo'&lt;br /&gt;&lt;br /&gt;function rgb_to_r_g_b(colour,alpha)&lt;br /&gt;        return ((colour / 0x10000) % 0x100) / 255., ((colour / 0x100) % 0x100) / 255., (colour % 0x100) / 255., alpha&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;function draw_ring(cr,t,pt)&lt;br /&gt;        local w,h=conky_window.width,conky_window.height&lt;br /&gt;        &lt;br /&gt;        local xc,yc,ring_r,ring_w,sa,ea=pt['x'],pt['y'],pt['radius'],pt['thickness'],pt['start_angle'],pt['end_angle']&lt;br /&gt;        local bgc, bga, fgc, fga=pt['bg_colour'], pt['bg_alpha'], pt['fg_colour'], pt['fg_alpha']&lt;br /&gt;&lt;br /&gt;        local angle_0=sa*(2*math.pi/360)-math.pi/2&lt;br /&gt;        local angle_f=ea*(2*math.pi/360)-math.pi/2&lt;br /&gt;        local t_arc=t*(angle_f-angle_0)&lt;br /&gt;&lt;br /&gt;        -- Draw background ring&lt;br /&gt;&lt;br /&gt;        cairo_arc(cr,xc,yc,ring_r,angle_0,angle_f)&lt;br /&gt;        cairo_set_source_rgba(cr,rgb_to_r_g_b(bgc,bga))&lt;br /&gt;        cairo_set_line_width(cr,ring_w)&lt;br /&gt;        cairo_stroke(cr)&lt;br /&gt;        &lt;br /&gt;        -- Draw indicator ring&lt;br /&gt;&lt;br /&gt;        cairo_arc(cr,xc,yc,ring_r,angle_0,angle_0+t_arc)&lt;br /&gt;        cairo_set_source_rgba(cr,rgb_to_r_g_b(fgc,fga))&lt;br /&gt;        cairo_stroke(cr)                &lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;function conky_ring_stats()&lt;br /&gt;        local function setup_rings(cr,pt)&lt;br /&gt;                local str=''&lt;br /&gt;                local value=0&lt;br /&gt;                &lt;br /&gt;                str=string.format('${%s %s}',pt['name'],pt['arg'])&lt;br /&gt;                str=conky_parse(str)&lt;br /&gt;                &lt;br /&gt;                value=tonumber(str)&lt;br /&gt;                pct=value/pt['max']&lt;br /&gt;                &lt;br /&gt;                draw_ring(cr,pct,pt)&lt;br /&gt;        end&lt;br /&gt;&lt;br /&gt;        if conky_window==nil then return end&lt;br /&gt;        local cs=cairo_xlib_surface_create(conky_window.display,conky_window.drawable,conky_window.visual, conky_window.width,conky_window.height)&lt;br /&gt;        &lt;br /&gt;        local cr=cairo_create(cs)       &lt;br /&gt;        &lt;br /&gt;        local updates=conky_parse('${updates}')&lt;br /&gt;        update_num=tonumber(updates)&lt;br /&gt;        &lt;br /&gt;        if update_num&gt;5 then&lt;br /&gt;                for i in pairs(settings_table) do&lt;br /&gt;                        setup_rings(cr,settings_table[i])&lt;br /&gt;                end&lt;br /&gt;        end&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/1558324149520634678-1956820896227378671?l=nesv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nesv.blogspot.com/feeds/1956820896227378671/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://nesv.blogspot.com/2011/04/conky.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/1956820896227378671'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/1956820896227378671'/><link rel='alternate' type='text/html' href='http://nesv.blogspot.com/2011/04/conky.html' title='Conky'/><author><name>indienick</name><uri>http://www.blogger.com/profile/12739388753406392673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-JrEjMfcwy5U/TazUpJds0BI/AAAAAAAAAT8/hAyqD2IWlwA/s220/2011-04-18-195657.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-SecVFQEE-3g/TbCZssfQhXI/AAAAAAAAAUc/xELgJduB_uI/s72-c/conky-screenshot.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1558324149520634678.post-3081375073503857162</id><published>2011-04-18T19:34:00.000-04:00</published><updated>2011-04-18T20:14:24.451-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='interceptty'/><category scheme='http://www.blogger.com/atom/ns#' term='work'/><category scheme='http://www.blogger.com/atom/ns#' term='rs232'/><category scheme='http://www.blogger.com/atom/ns#' term='serial'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>interceptty</title><content type='html'>At work, the big project I'm working on right now involves sending proprietary, packeted data, through RS232, to a TeleDesign TS4000. The documentation on the current, in-place software is non-existent and the code is frightfully hard to read (whoever thought code should not be case-sensitive should be taken out back and beaten with a big stick).&lt;br /&gt;&lt;br /&gt;One of the hurdles I am experiencing right now, is transcribing the code that packs the data into Python. Every now and then I stumble across a "gotcha" where I have a random byte out of place, or a bytes whose existence is based on several other factors when creating the packet.&lt;br /&gt;&lt;br /&gt;The code that handles the data coming in from the receiving radio is no better, sadly. The code that handles the packeting of data is mired in &lt;code&gt;GOTO&lt;/code&gt; statements and spread out across a single, 10 000+ line file. (Again, who tries to pack all their code into one file when it can &lt;i&gt;easily&lt;/i&gt; be broken apart?!)&lt;br /&gt;&lt;br /&gt;Along the way, one of my managers and I figured the only way to verify my attempts at re-implementing the packeting routines, would be to capture all the input and output at the communications server. (This would also come in handy when it arrives to re-implement the comm.server.) So, there I was fretting that I would have to write some small application to act as a &lt;code&gt;&lt;a href="http://unixhelp.ed.ac.uk/CGI/man-cgi?tee"&gt;tee&lt;/a&gt;&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;Me, being a good, lazy programmer and all, decided to Google things first. I eventually came across &lt;a href="http://www.suspectclass.com/sgifford/interceptty/"&gt;interceptty&lt;/a&gt;! It looks as though it has been stagnant for about seven years, but it compiled no problem on my test Ubuntu 10.04LTS server, and the production CentOS 5.4 communications server. What I did (with the speed of a thousand sysadmins who drank too much Jolt Cola) was I modified the INI file of the communications program to point to a random &lt;tt&gt;tty&lt;/tt&gt; device, ran &lt;i&gt;interceptty&lt;/i&gt; using the random &lt;tt&gt;tty&lt;/tt&gt; device as the &lt;i&gt;"front device"&lt;/i&gt; and quickly restarted the communications program.&lt;br /&gt;&lt;br /&gt;So, the point of the story, is that if you have some serial data that you need captured from an RS232 port, on a production system (regardless of whether or not it can afford to be down), you can use &lt;i&gt;interceptty&lt;/i&gt; to act as a data logging/port capturing tool.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1558324149520634678-3081375073503857162?l=nesv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nesv.blogspot.com/feeds/3081375073503857162/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://nesv.blogspot.com/2011/04/interceptty.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/3081375073503857162'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/3081375073503857162'/><link rel='alternate' type='text/html' href='http://nesv.blogspot.com/2011/04/interceptty.html' title='interceptty'/><author><name>indienick</name><uri>http://www.blogger.com/profile/12739388753406392673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-JrEjMfcwy5U/TazUpJds0BI/AAAAAAAAAT8/hAyqD2IWlwA/s220/2011-04-18-195657.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1558324149520634678.post-3680308464190988048</id><published>2011-04-09T11:47:00.000-04:00</published><updated>2011-04-09T12:21:12.424-04:00</updated><title type='text'>py-xsp 0.3!</title><content type='html'>New release!&lt;br /&gt;&lt;br /&gt;Download link: &lt;a href="https://github.com/downloads/indienick/py-xsp/xsp-0.3.tar.gz"&gt;xsp-0.3.tar.gz&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Admittedly, this release is due to stagnation of the current code-base, but with good reason. A big change has been added which keeps &lt;i&gt;py-xsp&lt;/i&gt; from bombing out when there is a comment node above the document element.&lt;br /&gt;&lt;br /&gt;I am open to suggestions for what to do for the next release. Here is what I had rolling around in my head:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;strong&gt;Parsing data that exists between open and close tags.&lt;/strong&gt;&lt;br /&gt;&lt;p&gt;Example:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&amp;lt;tag attr="attrvalue"&amp;gt;&lt;i&gt;SOME RANDOM DATA&lt;/i&gt;&amp;lt;/tag&amp;gt;&lt;/code&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Admittedly, I do not really see a reason for this kind of data structure to exist in anything but a mark-up scenario (think HTML, SGML, SVG, etc.), but I am sure there is a way it could be used outside of that context, that just hasn't occurred to me, yet. All the same, however, it should be done. &lt;i&gt;py-xsp&lt;/i&gt; works for my current applications, but I will undoubtedly come across a scenario where I need data from between an opening and closing element.&lt;/p&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;strong&gt;Multiple document elements.&lt;/strong&gt;&lt;br /&gt;&lt;p&gt;The structure of a vocabulary need not be changed for this to happen, but all it would take is a change to the &lt;code&gt;xsp.parse()&lt;/code&gt; function where it would test the top-level key, in the Python dictionary, against the name of the child node it stumbles across, much in the same way the "internal" &lt;code&gt;xsp.__parse_element()&lt;/code&gt; function works.&lt;/p&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1558324149520634678-3680308464190988048?l=nesv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nesv.blogspot.com/feeds/3680308464190988048/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://nesv.blogspot.com/2011/04/py-xsp-03.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/3680308464190988048'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/3680308464190988048'/><link rel='alternate' type='text/html' href='http://nesv.blogspot.com/2011/04/py-xsp-03.html' title='py-xsp 0.3!'/><author><name>indienick</name><uri>http://www.blogger.com/profile/12739388753406392673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-JrEjMfcwy5U/TazUpJds0BI/AAAAAAAAAT8/hAyqD2IWlwA/s220/2011-04-18-195657.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1558324149520634678.post-2179484835702219848</id><published>2011-04-09T11:25:00.000-04:00</published><updated>2011-04-09T11:36:59.941-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='erlang field guide'/><category scheme='http://www.blogger.com/atom/ns#' term='erlang'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='erlang and otp in action'/><title type='text'>Erlang Field Guide</title><content type='html'>It's been a while since I have posted anything, and for that I apologise. Work is getting crazy busy, and has been occupying most of my mental cycles as I try to de-obfuscate some nasty, legacy code.&lt;br /&gt;&lt;br /&gt;Given my plan to re-implement the largest portion of the project in Erlang, I have been taking some time at work to read &lt;a href="http://www.manning.com/logan/"&gt;&lt;i&gt;Erlang and OTP in Action&lt;/i&gt;&lt;/a&gt; (&lt;a href="http://www.amazon.ca/Erlang-OTP-Action-Martin-Logan/dp/1933988789/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1302362914&amp;sr=8-1"&gt;Amazon&lt;/a&gt;). I have to say, it is an amazingly well-written book. It is not difficult to follow in the slightest, and that may very well also be due to Erlang being a well-thought-out language. Granted, some of the concepts are a bit strange (eg. assignment through pattern matching), however a quick run through an Erlang REPL (shell) lets you get a feel for how to apply the language.&lt;br /&gt;&lt;br /&gt;Because I have yet to start the Erlang-portion of my project at work, in order to apply what I have learned, I started piecing together the &lt;a href="https://sites.google.com/site/nicksaika/tutorials/erlang/erlang-field-guide"&gt;&lt;i&gt;Erlang Field Guide&lt;/i&gt;&lt;/a&gt;. Read it like really-descriptive study notes.&lt;br /&gt;&lt;br /&gt;It is not finished yet, but I will make a new post whenever I update it.&lt;br /&gt;&lt;br /&gt;I hope you find the &lt;i&gt;Erlang Field Guide&lt;/i&gt; useful, and - as always - if you have any questions just leave me a comment, or send me an email.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1558324149520634678-2179484835702219848?l=nesv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nesv.blogspot.com/feeds/2179484835702219848/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://nesv.blogspot.com/2011/04/erlang-field-guide.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/2179484835702219848'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/2179484835702219848'/><link rel='alternate' type='text/html' href='http://nesv.blogspot.com/2011/04/erlang-field-guide.html' title='Erlang Field Guide'/><author><name>indienick</name><uri>http://www.blogger.com/profile/12739388753406392673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-JrEjMfcwy5U/TazUpJds0BI/AAAAAAAAAT8/hAyqD2IWlwA/s220/2011-04-18-195657.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1558324149520634678.post-833414245853644089</id><published>2011-02-18T15:43:00.001-05:00</published><updated>2011-02-18T20:50:03.508-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='py-xsp'/><title type='text'>py-xsp 0.2 released!</title><content type='html'>I have just released version 0.2 of my &lt;span style="font-style:italic;"&gt;py-xsp&lt;/span&gt; library.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;py-xsp&lt;/em&gt; allows you to map an XML file to a Python dictionary by providing a "vocabulary" to the &lt;code&gt;xsp.parse()&lt;/code&gt; function. Given that &lt;em&gt;py-xsp&lt;/em&gt; will only parse out the elements, attributes and values you tell it to, you can - in a way - treat XML files as a database, by only pulling out the data you need.&lt;br /&gt;&lt;br /&gt;At the &lt;a href="https://sites.google.com/site/nicksaika/projects/py-xsp"&gt;project's homepage&lt;/a&gt;, you can find documentation on installing and using &lt;em&gt;py-xsp&lt;/em&gt;. The source code is hosted on &lt;a href="https://github.com/indienick/py-xsp"&gt;Github&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1558324149520634678-833414245853644089?l=nesv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nesv.blogspot.com/feeds/833414245853644089/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://nesv.blogspot.com/2011/02/py-xsp-02-released.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/833414245853644089'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/833414245853644089'/><link rel='alternate' type='text/html' href='http://nesv.blogspot.com/2011/02/py-xsp-02-released.html' title='py-xsp 0.2 released!'/><author><name>indienick</name><uri>http://www.blogger.com/profile/12739388753406392673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-JrEjMfcwy5U/TazUpJds0BI/AAAAAAAAAT8/hAyqD2IWlwA/s220/2011-04-18-195657.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1558324149520634678.post-177017051830814012</id><published>2011-02-05T00:06:00.001-05:00</published><updated>2011-02-05T00:20:39.838-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wrt310n'/><category scheme='http://www.blogger.com/atom/ns#' term='tomato'/><category scheme='http://www.blogger.com/atom/ns#' term='dd-wrt'/><category scheme='http://www.blogger.com/atom/ns#' term='smc8014w-g'/><title type='text'>New router</title><content type='html'>I recently picked up a Linksys (by Cisco) WRT310N off of a clearance shelf at Staples, for around $50 after tax.&lt;br /&gt;&lt;br /&gt;After a quick call to Rogers tech support, since I could not find any documentation on my ISP-provided SMC8014W-G cable modem-router, I had my modem bridged. If you have a similar model, and wish to bridge it, just log into the modem and look for a setting called "&lt;i&gt;Disable Residential Gateway Functions&lt;/i&gt;".&lt;br /&gt;&lt;br /&gt;After that, I ran an Ethernet cable from a LAN port on the SMC8014W-G into the WAN port on the WRT310N, and configured the WRT310N to my liking.&lt;br /&gt;&lt;br /&gt;Somethings to note about the WRT310N, after some Google-action, it seems that the WRT310N is not supported by DD-WRT or Tomato; I was looking to set up Tomato. I didn't want to risk bricking my new spoils. &lt;br /&gt;&lt;br /&gt;The whole reason I wanted to run Tomato was...well, just to have a network set up with a +1 Linux-geek factor. Mind you, after dinking around with the WRT310N, there weren't any settings issues with port forwarding (as there were with the SMC8014W-G). Any of the things I wanted to configure worked flawlessly.&lt;br /&gt;&lt;br /&gt;Should you want to host a website from your house, make sure you forward port 80 (the default HTTP port; or, whatever port you have your Apache, Nginx or Lighttpd server configured for) on the router to the server.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1558324149520634678-177017051830814012?l=nesv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nesv.blogspot.com/feeds/177017051830814012/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://nesv.blogspot.com/2011/02/new-router.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/177017051830814012'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/177017051830814012'/><link rel='alternate' type='text/html' href='http://nesv.blogspot.com/2011/02/new-router.html' title='New router'/><author><name>indienick</name><uri>http://www.blogger.com/profile/12739388753406392673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-JrEjMfcwy5U/TazUpJds0BI/AAAAAAAAAT8/hAyqD2IWlwA/s220/2011-04-18-195657.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1558324149520634678.post-8975305133294665867</id><published>2011-01-31T12:00:00.000-05:00</published><updated>2011-01-31T12:06:49.940-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bell'/><category scheme='http://www.blogger.com/atom/ns#' term='bandwidth capping'/><category scheme='http://www.blogger.com/atom/ns#' term='crtc'/><category scheme='http://www.blogger.com/atom/ns#' term='metered internet'/><title type='text'>CRTC UBB</title><content type='html'>Over the weekend, a bill was passed through Canadian parliament between Bell Canada and the Canadian Radio &amp; Telecommunications council (CRTC) to meter Internet usage, cap users at 25GB of bandwidth per month and charge $2/GB over the 25GB limit.&lt;br /&gt;&lt;br /&gt;For more information on it, &lt;a href="http://www.channelcanada.com/Article5436.html"&gt;http://www.channelcanada.com/Article5436.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;To sign a petition to oppose this bill, go to &lt;a href="http://stopthemeter.ca"&gt;StopTheMeter.ca&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1558324149520634678-8975305133294665867?l=nesv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nesv.blogspot.com/feeds/8975305133294665867/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://nesv.blogspot.com/2011/01/crtc-ubb.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/8975305133294665867'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/8975305133294665867'/><link rel='alternate' type='text/html' href='http://nesv.blogspot.com/2011/01/crtc-ubb.html' title='CRTC UBB'/><author><name>indienick</name><uri>http://www.blogger.com/profile/12739388753406392673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-JrEjMfcwy5U/TazUpJds0BI/AAAAAAAAAT8/hAyqD2IWlwA/s220/2011-04-18-195657.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1558324149520634678.post-5523765016844373748</id><published>2011-01-18T14:23:00.000-05:00</published><updated>2011-01-18T14:24:12.605-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GNU'/><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><title type='text'>Gotta love f7u12</title><content type='html'>&lt;img src="http://i.imgur.com/1jd6W.jpg" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1558324149520634678-5523765016844373748?l=nesv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nesv.blogspot.com/feeds/5523765016844373748/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://nesv.blogspot.com/2011/01/gotta-love-f7u12.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/5523765016844373748'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/5523765016844373748'/><link rel='alternate' type='text/html' href='http://nesv.blogspot.com/2011/01/gotta-love-f7u12.html' title='Gotta love f7u12'/><author><name>indienick</name><uri>http://www.blogger.com/profile/12739388753406392673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-JrEjMfcwy5U/TazUpJds0BI/AAAAAAAAAT8/hAyqD2IWlwA/s220/2011-04-18-195657.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1558324149520634678.post-7990604811113717154</id><published>2010-12-30T20:30:00.001-05:00</published><updated>2010-12-30T21:20:39.402-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mencoder'/><title type='text'>Transcoding an MPEG to AVI</title><content type='html'>&lt;p&gt;Here is a quick note on how to transcode an MPEG video, to AVI, using &lt;tt&gt;mencoder&lt;/tt&gt;.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;$ mencoder movie.mpg -o movie.avi -ovc copy -oac copy&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Sweet and simple.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Now, in the event that the AVI does not play on the intended system (DivX player, Xbox 360, etc.) you can toy around with the output video codec (the &lt;tt&gt;-ovc&lt;/tt&gt; option). To get a list of available codecs, run:&lt;br /&gt;&lt;code&gt;$ mencoder -ovc help&lt;/code&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/1558324149520634678-7990604811113717154?l=nesv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nesv.blogspot.com/feeds/7990604811113717154/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://nesv.blogspot.com/2010/12/transcoding-mpeg-to-avi.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/7990604811113717154'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/7990604811113717154'/><link rel='alternate' type='text/html' href='http://nesv.blogspot.com/2010/12/transcoding-mpeg-to-avi.html' title='Transcoding an MPEG to AVI'/><author><name>indienick</name><uri>http://www.blogger.com/profile/12739388753406392673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-JrEjMfcwy5U/TazUpJds0BI/AAAAAAAAAT8/hAyqD2IWlwA/s220/2011-04-18-195657.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1558324149520634678.post-2505139685364441056</id><published>2010-12-29T16:49:00.000-05:00</published><updated>2011-01-02T14:49:22.266-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vim'/><category scheme='http://www.blogger.com/atom/ns#' term='emacs'/><title type='text'>My .vimrc file</title><content type='html'>While I am predominantly an Emacs user, I decided to tinker around with Vim today, at work, and here is my custom &lt;tt&gt;.vimrc&lt;/tt&gt; file.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;set tabstop=4&lt;br /&gt;set shiftwidth=4&lt;br /&gt;set guioptions-=T&lt;br /&gt;set ruler&lt;br /&gt;set incsearch&lt;br /&gt;set noerrorbells&lt;br /&gt;set novisualbell&lt;br /&gt;set cursorline&lt;br /&gt;set number&lt;br /&gt;set numberwidth=5&lt;br /&gt;set showcmd&lt;br /&gt;set nowrap&lt;br /&gt;set autoindent&lt;br /&gt;syntax on&lt;br /&gt;:inoremap &amp;lt;CR&amp;gt; x&amp;lt;BS&amp;gt;&amp;lt;CR&amp;gt;&lt;br /&gt;&lt;br /&gt;if has("gui_running")&lt;br /&gt;    set guifont=Inconsolata\ 11&lt;br /&gt;    set lines=50&lt;br /&gt;    set columns=80&lt;br /&gt;    set background=light&lt;br /&gt;endif&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;While straightforward, I will take the &lt;tt&gt;.emacsrc&lt;/tt&gt; syntax structure, any day. Why? Simply that it's all Lisp (which has a wonderfully-uniform syntax) and is not a domain-specific language, just a domain-specific implementation of the language.&lt;br /&gt;&lt;br /&gt;I have also posted my &lt;tt&gt;.vimrc&lt;/tt&gt; &lt;a href="http://sites.google.com/site/nicksaika/miscellaneous/vimrc"&gt;here&lt;/a&gt;, on my Google site.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1558324149520634678-2505139685364441056?l=nesv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nesv.blogspot.com/feeds/2505139685364441056/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://nesv.blogspot.com/2010/12/my-vimrc-file.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/2505139685364441056'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/2505139685364441056'/><link rel='alternate' type='text/html' href='http://nesv.blogspot.com/2010/12/my-vimrc-file.html' title='My .vimrc file'/><author><name>indienick</name><uri>http://www.blogger.com/profile/12739388753406392673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-JrEjMfcwy5U/TazUpJds0BI/AAAAAAAAAT8/hAyqD2IWlwA/s220/2011-04-18-195657.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1558324149520634678.post-8274794038597863692</id><published>2010-12-29T00:02:00.000-05:00</published><updated>2010-12-29T02:43:47.084-05:00</updated><title type='text'>Better gaming</title><content type='html'>Truth be told, I do quite enjoy playing various on-line games on my Xbox 360. However, playing on-line, with an HDTV, you can notice quite a lag. This lag comes from the buffering by HDTVs; simply disable this to get smooth, fluid gameplay. &lt;br /&gt;&lt;br /&gt;Note, that some manufacturers may not call it buffering.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1558324149520634678-8274794038597863692?l=nesv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nesv.blogspot.com/feeds/8274794038597863692/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://nesv.blogspot.com/2010/12/better-gaming.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/8274794038597863692'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/8274794038597863692'/><link rel='alternate' type='text/html' href='http://nesv.blogspot.com/2010/12/better-gaming.html' title='Better gaming'/><author><name>indienick</name><uri>http://www.blogger.com/profile/12739388753406392673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-JrEjMfcwy5U/TazUpJds0BI/AAAAAAAAAT8/hAyqD2IWlwA/s220/2011-04-18-195657.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1558324149520634678.post-2408098840632948920</id><published>2010-12-07T00:36:00.000-05:00</published><updated>2010-12-09T16:14:44.634-05:00</updated><title type='text'>My Google Site</title><content type='html'>Hey, don't forget to check out my space on Google Sites, &lt;a href="https://sites.google.com/site/nicksaika/"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I just re-organized the pages, and added a few more.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1558324149520634678-2408098840632948920?l=nesv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nesv.blogspot.com/feeds/2408098840632948920/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://nesv.blogspot.com/2010/12/my-google-site.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/2408098840632948920'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/2408098840632948920'/><link rel='alternate' type='text/html' href='http://nesv.blogspot.com/2010/12/my-google-site.html' title='My Google Site'/><author><name>indienick</name><uri>http://www.blogger.com/profile/12739388753406392673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-JrEjMfcwy5U/TazUpJds0BI/AAAAAAAAAT8/hAyqD2IWlwA/s220/2011-04-18-195657.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1558324149520634678.post-8805716307886198320</id><published>2010-11-10T15:42:00.000-05:00</published><updated>2010-11-10T16:43:45.339-05:00</updated><title type='text'>MacBuntu</title><content type='html'>I've always had a bit of a soft-spot for the way Mac OS X looks, and have often tinkered with various themes which make my Linux install look more like OS X.&lt;br /&gt;&lt;br /&gt;I stumbled upon &lt;a href="http://sourceforge.net/projects/macbuntu/"&gt;MacBuntu&lt;/a&gt; - an Ubuntu-specific project which takes a default Ubuntu install (with the GNOME desktop) and makes it look like OS X.&lt;br /&gt;&lt;br /&gt;Also, if you want to go all the way, the installer also pops open Firefox and Chrome with links to themes to make them fit in with the rest of the environment. However, should you decide you just want Chrome (the web browser) to have an OS X look-and-feel, here's a link to the recommended theme, on DeviantArt: &lt;a href="http://eamon63.deviantart.com/art/GTK-Leopard-Chrome-Theme-151975508"&gt;GTK Leopard Chrome Theme&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_IkKUpnRplbs/TNsR_hyat-I/AAAAAAAAAQs/LXj4NIkZc_A/s1600/Screenshot-20101110-2.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 200px; height: 125px;" src="http://2.bp.blogspot.com/_IkKUpnRplbs/TNsR_hyat-I/AAAAAAAAAQs/LXj4NIkZc_A/s200/Screenshot-20101110-2.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5538039949881423842" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1558324149520634678-8805716307886198320?l=nesv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nesv.blogspot.com/feeds/8805716307886198320/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://nesv.blogspot.com/2010/11/macbuntu.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/8805716307886198320'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/8805716307886198320'/><link rel='alternate' type='text/html' href='http://nesv.blogspot.com/2010/11/macbuntu.html' title='MacBuntu'/><author><name>indienick</name><uri>http://www.blogger.com/profile/12739388753406392673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-JrEjMfcwy5U/TazUpJds0BI/AAAAAAAAAT8/hAyqD2IWlwA/s220/2011-04-18-195657.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_IkKUpnRplbs/TNsR_hyat-I/AAAAAAAAAQs/LXj4NIkZc_A/s72-c/Screenshot-20101110-2.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1558324149520634678.post-2452133289490550168</id><published>2010-11-04T11:36:00.000-04:00</published><updated>2010-11-04T11:39:11.149-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Learn Python (the Hard Way)</title><content type='html'>I came across this on &lt;a href="http://www.reddit.com/"&gt;reddit&lt;/a&gt; this morning: &lt;a href="http://learnpythonthehardway.org/index"&gt;http://learnpythonthehardway.org/index&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It's geared for those who have never programmed before - so, if you have programmed, chances are your brains will be dripping out of your ears by the end of the first exercise. &lt;br /&gt;&lt;br /&gt;However, for those interested in programming but just don't know where to start, that book is a good place! It walks you through the basics of programming using a modern, yet very simple, practical and usable language: Python!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1558324149520634678-2452133289490550168?l=nesv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nesv.blogspot.com/feeds/2452133289490550168/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://nesv.blogspot.com/2010/11/learn-python-hard-way.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/2452133289490550168'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/2452133289490550168'/><link rel='alternate' type='text/html' href='http://nesv.blogspot.com/2010/11/learn-python-hard-way.html' title='Learn Python (the Hard Way)'/><author><name>indienick</name><uri>http://www.blogger.com/profile/12739388753406392673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-JrEjMfcwy5U/TazUpJds0BI/AAAAAAAAAT8/hAyqD2IWlwA/s220/2011-04-18-195657.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1558324149520634678.post-3688922123178288858</id><published>2010-10-12T17:16:00.000-04:00</published><updated>2010-10-12T17:17:17.930-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Maverick</title><content type='html'>Ubuntu 10.10 is out!&lt;br /&gt;&lt;br /&gt;...and it still makes my laptop freeze.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1558324149520634678-3688922123178288858?l=nesv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nesv.blogspot.com/feeds/3688922123178288858/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://nesv.blogspot.com/2010/10/maverick.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/3688922123178288858'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/3688922123178288858'/><link rel='alternate' type='text/html' href='http://nesv.blogspot.com/2010/10/maverick.html' title='Maverick'/><author><name>indienick</name><uri>http://www.blogger.com/profile/12739388753406392673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-JrEjMfcwy5U/TazUpJds0BI/AAAAAAAAAT8/hAyqD2IWlwA/s220/2011-04-18-195657.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1558324149520634678.post-6762688470211880009</id><published>2010-10-04T11:54:00.001-04:00</published><updated>2010-10-04T11:54:44.271-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Ubuntu 10.10 countdown!</title><content type='html'>&lt;a href="http://www.ubuntu.com/"&gt;&lt;img src="http://www.ubuntu.com/countdown/banner2.png" border="0" width="180" height="150" alt="The next version of Ubuntu is coming soon"&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1558324149520634678-6762688470211880009?l=nesv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nesv.blogspot.com/feeds/6762688470211880009/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://nesv.blogspot.com/2010/10/ubuntu-1010-countdown.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/6762688470211880009'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/6762688470211880009'/><link rel='alternate' type='text/html' href='http://nesv.blogspot.com/2010/10/ubuntu-1010-countdown.html' title='Ubuntu 10.10 countdown!'/><author><name>indienick</name><uri>http://www.blogger.com/profile/12739388753406392673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-JrEjMfcwy5U/TazUpJds0BI/AAAAAAAAAT8/hAyqD2IWlwA/s220/2011-04-18-195657.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1558324149520634678.post-6485892085365967438</id><published>2010-09-22T11:07:00.000-04:00</published><updated>2010-09-22T11:10:14.632-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='dbus'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Hallelujah - A good Python-Dbus example!</title><content type='html'>So, after many days spent searching for a decent tutorial, or even an example, on how to apply/use Python's Dbus bindings, I found one!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://excid3.com/blog/2010/05/an-actually-decent-python-dbus-tutorial/"&gt;http://excid3.com/blog/2010/05/an-actually-decent-python-dbus-tutorial/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Enjoy.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1558324149520634678-6485892085365967438?l=nesv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nesv.blogspot.com/feeds/6485892085365967438/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://nesv.blogspot.com/2010/09/hallelujah-good-python-dbus-example.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/6485892085365967438'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/6485892085365967438'/><link rel='alternate' type='text/html' href='http://nesv.blogspot.com/2010/09/hallelujah-good-python-dbus-example.html' title='Hallelujah - A good Python-Dbus example!'/><author><name>indienick</name><uri>http://www.blogger.com/profile/12739388753406392673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-JrEjMfcwy5U/TazUpJds0BI/AAAAAAAAAT8/hAyqD2IWlwA/s220/2011-04-18-195657.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1558324149520634678.post-3635465908055760752</id><published>2010-08-03T11:38:00.001-04:00</published><updated>2010-08-03T11:40:01.409-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='shirt'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='hacker manifest'/><category scheme='http://www.blogger.com/atom/ns#' term='GNU'/><category scheme='http://www.blogger.com/atom/ns#' term='debian'/><category scheme='http://www.blogger.com/atom/ns#' term='cafepress'/><title type='text'>Gimme, gimme, gimme...</title><content type='html'>&lt;a href="http://www.cafepress.ca/+hackers_manifesto_large_poster,97429171"&gt;Poster: Hacker Manifesto&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.cafepress.ca/+debian_products_designs_li_dark_tshirt,211820293"&gt;Shirt:Simple black, with grey Debian logo&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.cafepress.ca/+gnu_head_ash_grey_tshirt,23914654"&gt;Shirt: Ash grey, with sketched GNU head&lt;/a&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/1558324149520634678-3635465908055760752?l=nesv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nesv.blogspot.com/feeds/3635465908055760752/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://nesv.blogspot.com/2010/08/gimme-gimme-gimme.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/3635465908055760752'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/3635465908055760752'/><link rel='alternate' type='text/html' href='http://nesv.blogspot.com/2010/08/gimme-gimme-gimme.html' title='Gimme, gimme, gimme...'/><author><name>indienick</name><uri>http://www.blogger.com/profile/12739388753406392673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-JrEjMfcwy5U/TazUpJds0BI/AAAAAAAAAT8/hAyqD2IWlwA/s220/2011-04-18-195657.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1558324149520634678.post-254244184095350196</id><published>2010-07-30T12:30:00.001-04:00</published><updated>2010-07-30T12:30:44.165-04:00</updated><title type='text'>Happy SysAdmin Day, everyone!</title><content type='html'>&lt;a href="http://www.sysadminday.com"&gt;&lt;br /&gt;&lt;img src="http://www.sysadminday.com/images/thank-468x60.gif"  ALT="SysAdminDay"&gt;&lt;br /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1558324149520634678-254244184095350196?l=nesv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nesv.blogspot.com/feeds/254244184095350196/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://nesv.blogspot.com/2010/07/happy-sysadmin-day-everyone.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/254244184095350196'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/254244184095350196'/><link rel='alternate' type='text/html' href='http://nesv.blogspot.com/2010/07/happy-sysadmin-day-everyone.html' title='Happy SysAdmin Day, everyone!'/><author><name>indienick</name><uri>http://www.blogger.com/profile/12739388753406392673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-JrEjMfcwy5U/TazUpJds0BI/AAAAAAAAAT8/hAyqD2IWlwA/s220/2011-04-18-195657.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1558324149520634678.post-520175504239850085</id><published>2010-07-29T17:37:00.000-04:00</published><updated>2010-07-29T17:44:22.826-04:00</updated><title type='text'>Screenshot</title><content type='html'>I just finished setting up a new desktop for myself at work. &lt;br /&gt;&lt;br /&gt;I realize I haven't posted much in the past few weeks, so I felt compelled to post a screenshot. Brief information on what is in the screenshot:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_IkKUpnRplbs/TFH14Qq3NYI/AAAAAAAAAP4/mRXYhkf6W_o/s1600/Screenshot.29July2010.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 200px; height: 125px;" src="http://4.bp.blogspot.com/_IkKUpnRplbs/TFH14Qq3NYI/AAAAAAAAAP4/mRXYhkf6W_o/s200/Screenshot.29July2010.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5499446966892311938" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;li&gt;Ubuntu 10.04 "Lucid Lynx" (AMD64)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;GNOME Desktop&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://do.davebsd.com/wiki/Docky"&gt;Docky&lt;/a&gt;, at the bottom&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;As for the background, I have no idea what it's called; I just found it on Reddit a while ago.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1558324149520634678-520175504239850085?l=nesv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nesv.blogspot.com/feeds/520175504239850085/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://nesv.blogspot.com/2010/07/screenshot.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/520175504239850085'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/520175504239850085'/><link rel='alternate' type='text/html' href='http://nesv.blogspot.com/2010/07/screenshot.html' title='Screenshot'/><author><name>indienick</name><uri>http://www.blogger.com/profile/12739388753406392673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-JrEjMfcwy5U/TazUpJds0BI/AAAAAAAAAT8/hAyqD2IWlwA/s220/2011-04-18-195657.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_IkKUpnRplbs/TFH14Qq3NYI/AAAAAAAAAP4/mRXYhkf6W_o/s72-c/Screenshot.29July2010.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1558324149520634678.post-6410348081238025280</id><published>2010-07-11T16:35:00.000-04:00</published><updated>2010-07-11T16:40:16.079-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='g20'/><category scheme='http://www.blogger.com/atom/ns#' term='toronto'/><title type='text'>Scaling the summit</title><content type='html'>A bit of not-so-fresh news, I found some absolutely amazing photos taken from the ghastly events at the G20 summit a couple of weeks ago, in Toronto.&lt;br /&gt;&lt;br /&gt;This G20 summit had to have been one of the most poorly thought-out executions this time around; instead of putting the world's leaders on the Toronto Island where they could deploy a barricade or at least have an easier time of keeping a security detail, they host it right downtown.&lt;br /&gt;&lt;br /&gt;If you haven't heard about what happened, let me sum it up &lt;em&gt;exceptionally&lt;/em&gt; quickly for you: tons of people got arrested and a police cruiser - or two - got torched.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.viceland.com/blogs/en/2010/06/29/some-pics-from-the-toronto-g20/"&gt;http://www.viceland.com/blogs/en/2010/06/29/some-pics-from-the-toronto-g20/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1558324149520634678-6410348081238025280?l=nesv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nesv.blogspot.com/feeds/6410348081238025280/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://nesv.blogspot.com/2010/07/scaling-summit.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/6410348081238025280'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/6410348081238025280'/><link rel='alternate' type='text/html' href='http://nesv.blogspot.com/2010/07/scaling-summit.html' title='Scaling the summit'/><author><name>indienick</name><uri>http://www.blogger.com/profile/12739388753406392673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-JrEjMfcwy5U/TazUpJds0BI/AAAAAAAAAT8/hAyqD2IWlwA/s220/2011-04-18-195657.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1558324149520634678.post-3395066619140332284</id><published>2010-07-11T16:20:00.001-04:00</published><updated>2010-07-11T16:27:31.234-04:00</updated><title type='text'>Moar Ghosts n' Stuff</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://public.dourfestival.be/images/old/2009hp/l_d18b2c34c8164883a5aa701967ab2ae2.jpg"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 260px; height: 168px;" src="http://public.dourfestival.be/images/old/2009hp/l_d18b2c34c8164883a5aa701967ab2ae2.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;For Canada Day, my new roommate treated me to see Deadmau5 (along with Benny Benassi, and Jesse F. Keillor) at Koolhaus/Guvernment in Toronto.&lt;br /&gt;&lt;br /&gt;An absolutely brilliant show. I don't think I've ever sweat that much in my life. Let me put it this way, it was packed to the point where you couldn't move, everyone was dancing and the ceiling was dripping with sweat.&lt;br /&gt;&lt;br /&gt;Here's a YouTube video someone captured on their phone during "Strobe": &lt;a href="http://www.youtube.com/watch?v=9sOT9rdicRY&amp;feature=fvst"&gt;http://www.youtube.com/watch?v=9sOT9rdicRY&amp;feature=fvst&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1558324149520634678-3395066619140332284?l=nesv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nesv.blogspot.com/feeds/3395066619140332284/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://nesv.blogspot.com/2010/07/moar-ghosts-n-stuff.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/3395066619140332284'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/3395066619140332284'/><link rel='alternate' type='text/html' href='http://nesv.blogspot.com/2010/07/moar-ghosts-n-stuff.html' title='Moar Ghosts n&apos; Stuff'/><author><name>indienick</name><uri>http://www.blogger.com/profile/12739388753406392673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-JrEjMfcwy5U/TazUpJds0BI/AAAAAAAAAT8/hAyqD2IWlwA/s220/2011-04-18-195657.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1558324149520634678.post-7396392681691441357</id><published>2010-06-17T19:31:00.001-04:00</published><updated>2010-06-17T19:34:23.610-04:00</updated><title type='text'>Updates</title><content type='html'>I have been neglecting this blog lately, and for that I apologize. My only excuse is work.&lt;br /&gt;&lt;br /&gt;I got promoted to lead programmer, about a month ago and since then, there has been a serious amount of housecleaning going on. We have been cleaning, not only the servers, but also the floors. The office doesn't even look like the office I started in, last April/May.&lt;br /&gt;&lt;br /&gt;More details on this later; what I can say is that once things settle out, I am going to resume my usual posting volume.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1558324149520634678-7396392681691441357?l=nesv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nesv.blogspot.com/feeds/7396392681691441357/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://nesv.blogspot.com/2010/06/updates.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/7396392681691441357'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/7396392681691441357'/><link rel='alternate' type='text/html' href='http://nesv.blogspot.com/2010/06/updates.html' title='Updates'/><author><name>indienick</name><uri>http://www.blogger.com/profile/12739388753406392673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-JrEjMfcwy5U/TazUpJds0BI/AAAAAAAAAT8/hAyqD2IWlwA/s220/2011-04-18-195657.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1558324149520634678.post-7653683821075389275</id><published>2010-05-14T11:13:00.000-04:00</published><updated>2010-05-15T14:45:22.264-04:00</updated><title type='text'>Goodbye Frank Frazetta</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://tonova.typepad.com/photos/uncategorized/frank_frazetta_1.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 292px; height: 400px;" src="http://tonova.typepad.com/photos/uncategorized/frank_frazetta_1.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;Frank Frazetta was a painter who is famous for his fantastical works. There are a flurry of adjectives that flood my mind and mouth, whenever I look at any of his paintings, but I dare not utter any of those words at risk of giving someone the wrong idea.&lt;br /&gt;&lt;br /&gt;Mr. Frazetta died of a stroke on Monday - but I didn't get the notice until today (thanks, &lt;a href="http://viceland.com/"&gt;Vice&lt;/a&gt;!).&lt;br /&gt;&lt;br /&gt;I had seen his works before, but there isn't anything quite like a Frazetta - there's something wonderfully raw about his paintings (take the &lt;em&gt;Fighting Man of Mars&lt;/em&gt;, for instance).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1558324149520634678-7653683821075389275?l=nesv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nesv.blogspot.com/feeds/7653683821075389275/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://nesv.blogspot.com/2010/05/goodbye-frank-frazetta.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/7653683821075389275'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/7653683821075389275'/><link rel='alternate' type='text/html' href='http://nesv.blogspot.com/2010/05/goodbye-frank-frazetta.html' title='Goodbye Frank Frazetta'/><author><name>indienick</name><uri>http://www.blogger.com/profile/12739388753406392673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-JrEjMfcwy5U/TazUpJds0BI/AAAAAAAAAT8/hAyqD2IWlwA/s220/2011-04-18-195657.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1558324149520634678.post-7552115207173320427</id><published>2010-05-04T21:26:00.000-04:00</published><updated>2010-05-04T21:31:12.867-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='reddit'/><title type='text'>A recent success for open-source</title><content type='html'>I saw this article on &lt;a href="http://www.reddit.com/"&gt;reddit&lt;/a&gt; earlier today. My only thoughts, after reading this article, is that if this is what these patent-trolling companies (which seem to be popping up a lot, lately) are relegated to using emotional, hypothetical tangents to try and prove their ill-thought out, empty claims, then the day of these patent-trolling enterprises are coming to an end. Wonderful.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://opensource.com/law/10/5/total-victory-patent-lawsuit-against-open-source-software"&gt;http://opensource.com/law/10/5/total-victory-patent-lawsuit-against-open-source-software&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1558324149520634678-7552115207173320427?l=nesv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nesv.blogspot.com/feeds/7552115207173320427/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://nesv.blogspot.com/2010/05/recent-success-for-open-source.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/7552115207173320427'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/7552115207173320427'/><link rel='alternate' type='text/html' href='http://nesv.blogspot.com/2010/05/recent-success-for-open-source.html' title='A recent success for open-source'/><author><name>indienick</name><uri>http://www.blogger.com/profile/12739388753406392673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-JrEjMfcwy5U/TazUpJds0BI/AAAAAAAAAT8/hAyqD2IWlwA/s220/2011-04-18-195657.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1558324149520634678.post-1589186680883142431</id><published>2010-04-22T23:03:00.001-04:00</published><updated>2010-04-23T11:04:33.131-04:00</updated><title type='text'>The view from the top</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_IkKUpnRplbs/S9EOoOPs_FI/AAAAAAAAAO0/M2IGhCayLR4/s1600/100_0442.JPG"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 200px; height: 150px;" src="http://4.bp.blogspot.com/_IkKUpnRplbs/S9EOoOPs_FI/AAAAAAAAAO0/M2IGhCayLR4/s200/100_0442.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5463163907158637650" /&gt;&lt;/a&gt;&lt;br /&gt;I snapped this shot tonight - it has almost been a month since I moved into my apartment, down-town, and I cannot believe I have not put up a picture.&lt;br /&gt;&lt;br /&gt;This shot is from my 15th/14th-floor balcony - which, as you can see, looks out over the forks of the Thames.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;EDIT: I apologize for the blur - nighttime mode takes forever to take a picture and I do not have a tripod.&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1558324149520634678-1589186680883142431?l=nesv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nesv.blogspot.com/feeds/1589186680883142431/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://nesv.blogspot.com/2010/04/view-from-top.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/1589186680883142431'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/1589186680883142431'/><link rel='alternate' type='text/html' href='http://nesv.blogspot.com/2010/04/view-from-top.html' title='The view from the top'/><author><name>indienick</name><uri>http://www.blogger.com/profile/12739388753406392673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-JrEjMfcwy5U/TazUpJds0BI/AAAAAAAAAT8/hAyqD2IWlwA/s220/2011-04-18-195657.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_IkKUpnRplbs/S9EOoOPs_FI/AAAAAAAAAO0/M2IGhCayLR4/s72-c/100_0442.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1558324149520634678.post-4262993827691205586</id><published>2010-04-21T13:51:00.000-04:00</published><updated>2010-04-21T13:52:33.391-04:00</updated><title type='text'>Banksy</title><content type='html'>Banksy's graffiti - erm, art - is so friggin' cool.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.banksy.co.uk/"&gt;http://www.banksy.co.uk/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1558324149520634678-4262993827691205586?l=nesv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nesv.blogspot.com/feeds/4262993827691205586/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://nesv.blogspot.com/2010/04/banksy.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/4262993827691205586'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/4262993827691205586'/><link rel='alternate' type='text/html' href='http://nesv.blogspot.com/2010/04/banksy.html' title='Banksy'/><author><name>indienick</name><uri>http://www.blogger.com/profile/12739388753406392673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-JrEjMfcwy5U/TazUpJds0BI/AAAAAAAAAT8/hAyqD2IWlwA/s220/2011-04-18-195657.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1558324149520634678.post-5951977689575320342</id><published>2010-04-16T14:08:00.000-04:00</published><updated>2010-04-16T14:12:31.585-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='eddie izzard'/><category scheme='http://www.blogger.com/atom/ns#' term='toronto'/><category scheme='http://www.blogger.com/atom/ns#' term='massey hally'/><title type='text'>Cake or death?</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.la2day.com/files/u13/eddie_izzard.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 250px; height: 200px;" src="http://www.la2day.com/files/u13/eddie_izzard.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;So, I recently got wind that Eddie Izzard is going to be performing at Massey Hall, in Toronto, at the end of May! Upon further research, I discovered that he is also performing at the end of April, but the notice, at this point, is a little short for me.&lt;br /&gt;&lt;br /&gt;I have already bought my tickets, and I am - avidly - waiting for them in the mail!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1558324149520634678-5951977689575320342?l=nesv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nesv.blogspot.com/feeds/5951977689575320342/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://nesv.blogspot.com/2010/04/cake-or-death.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/5951977689575320342'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/5951977689575320342'/><link rel='alternate' type='text/html' href='http://nesv.blogspot.com/2010/04/cake-or-death.html' title='Cake or death?'/><author><name>indienick</name><uri>http://www.blogger.com/profile/12739388753406392673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-JrEjMfcwy5U/TazUpJds0BI/AAAAAAAAAT8/hAyqD2IWlwA/s220/2011-04-18-195657.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1558324149520634678.post-8471956866854564552</id><published>2010-04-15T16:38:00.000-04:00</published><updated>2010-04-15T17:13:29.002-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='common lisp'/><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><category scheme='http://www.blogger.com/atom/ns#' term='openmis'/><category scheme='http://www.blogger.com/atom/ns#' term='portability'/><title type='text'>A new language</title><content type='html'>So, lately, I have been taking a peek into C#. I had tried it several times, over the past few years, and I always found myself getting so incredibly pissed off with it. However, for some strange reason, I gave it another chance and (this is the weird part) I actually found myself liking it. This may very well lead me to start writing more things in it; I actually started re-writing my OpenMIS project, again, this time in C#.&lt;br /&gt;&lt;br /&gt;Typically, when I learn a new language, I try to do it the hardest way, first. I made the mistake with Java by applying what I had read and learned in an IDE - both Netbeans and Eclipse. It made things really easy, but all quickly fell to pieces when I found myself, as a newborn pup, trying to do it the "hard" way - Emacs, Ant and a command-line to issue &lt;tt&gt;javac&lt;/tt&gt; from. After teaching myself just enough about the blending of directory structures with Java's packaging system, and the &lt;tt&gt;javac&lt;/tt&gt; flags necessary to compile a program kept in a package, I just went straight back to the IDE.&lt;br /&gt;&lt;br /&gt;With Common Lisp, there really is no IDE for it (excluding Allegro and the Dandelion Eclipse plugin) and no code-completion. Perhaps a reason why I like the language so much, is that I had to apply it the "hard" way; Emacs, SLIME, SBCL, ECL and CLISP.&lt;br /&gt;&lt;br /&gt;With C# though (under Linux and *BSD - have yet to work with it on Windows), I did things the easy way, and just started working with it in MonoDevelop. After spending the better part of two-nights'-worth of time on it, I found I actually got more code written down, and was able to package up what source code I had written, more easily than I ever had with Java (I am referring to my OpenMIS project).&lt;br /&gt;&lt;br /&gt;The main reason I stuck so hard to Java with OpenMIS is that one of the biggest goals I set for that project, is that I wanted it to be easily deployable; I want someone using a Windows platform to be able to install it, and get it working, just as easily as someone can doing under BSD or Linux. &lt;i&gt;I am developing it under BSD and Linux, hence the reason for the direction of the previous statement.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;I must admit, Sun (R.I.P.) did wonders trying to get Java as wide-spread and supported as possible across as many platforms as was feasible. Ideally, I would love to write OpenMIS in Lisp, but could you imagine the nightmare of trying to install it in Windows? If I were being paid to write OpenMIS, heck, I would put every effort into making it work. But I'm not - at work, I get paid to write other pieces of software (mostly PHP) and fetch coffee.&lt;br /&gt;&lt;br /&gt;A quick aside, I do plan on writing some portions of OpenMIS in PHP, but those will be strictly for viewing inventory, and whatnot - no actual functions which modify the database will be available; see it more as a "status check" and "report generator".&lt;br /&gt;&lt;br /&gt;One of the biggest things that got me upset with Java, aside from the asinine compiler flags-directory structure-packaging system, is how f&amp;#$ing hard it is to use a third-party library in your application (especially when that third-party application is a MySQL driver). *bleearrrg!* The Common Lisp SQL library (cl-sql) is so weirdly different in how it handles your database connections and querying, but it is still easy to install and use.&lt;br /&gt;&lt;br /&gt;So, let us see just how long it takes for me to throw up my hands and say, "Screw it," to C#.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1558324149520634678-8471956866854564552?l=nesv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nesv.blogspot.com/feeds/8471956866854564552/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://nesv.blogspot.com/2010/04/new-language.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/8471956866854564552'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/8471956866854564552'/><link rel='alternate' type='text/html' href='http://nesv.blogspot.com/2010/04/new-language.html' title='A new language'/><author><name>indienick</name><uri>http://www.blogger.com/profile/12739388753406392673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-JrEjMfcwy5U/TazUpJds0BI/AAAAAAAAAT8/hAyqD2IWlwA/s220/2011-04-18-195657.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1558324149520634678.post-7259539753230099563</id><published>2010-04-01T17:20:00.000-04:00</published><updated>2010-04-01T18:30:13.283-04:00</updated><title type='text'>New Tutorial: Accessing a text file from a JAR</title><content type='html'>A new tutorial is up on my Google Sites page: nicksaika.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sites.google.com/site/nicksaika/tutorials/accessing-a-text-file-from-a-jar"&gt;http://sites.google.com/site/nicksaika/tutorials/accessing-a-text-file-from-a-jar&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1558324149520634678-7259539753230099563?l=nesv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nesv.blogspot.com/feeds/7259539753230099563/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://nesv.blogspot.com/2010/04/new-tutorial-accessing-text-file-from.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/7259539753230099563'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/7259539753230099563'/><link rel='alternate' type='text/html' href='http://nesv.blogspot.com/2010/04/new-tutorial-accessing-text-file-from.html' title='New Tutorial: Accessing a text file from a JAR'/><author><name>indienick</name><uri>http://www.blogger.com/profile/12739388753406392673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-JrEjMfcwy5U/TazUpJds0BI/AAAAAAAAAT8/hAyqD2IWlwA/s220/2011-04-18-195657.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1558324149520634678.post-2401073408900664497</id><published>2010-03-11T16:56:00.001-05:00</published><updated>2010-03-11T19:25:37.005-05:00</updated><title type='text'>Code tutorials</title><content type='html'>&lt;p&gt;Every now and then, I will post code tutorials of things I have figured out. This is simply because I don't want to have to remember every detail of something cool I accomplish, plus my memory isn't too great - especially when it comes to remembering code (bouncing between Common Lisp, Java and whatever else can get kind of hairy ;).&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Check out my &lt;a href="http://sites.google.com/site/nicksaika/"&gt;homepage&lt;/a&gt;, in the &lt;em&gt;Tutorials&lt;/em&gt; section, for any tutorials I write.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;I will put a post up here to alert any readers when I have written a new tutorial.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;My first tutorial is for Java and it shows how you can retrieve an image kept in a JAR. Yes, I realize any Java programmer worth their salt would, more than likely, know how to do this, but I figured this out all by myself with nothing more than Java's online Javadoc to guide me. :)&lt;br /&gt;What's more, I am sure there are thousands of other programmers out there who just need to know - simply - how to get the task done as eloquently as possible, in the shortest amount of time.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Here is the first tutorial: &lt;a href="http://sites.google.com/site/nicksaika/tutorials/accessing-an-image-from-a-jar-as-a-resource"&gt;Accessing an image from a JAR, as a resource&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1558324149520634678-2401073408900664497?l=nesv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nesv.blogspot.com/feeds/2401073408900664497/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://nesv.blogspot.com/2010/03/code-tutorials.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/2401073408900664497'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/2401073408900664497'/><link rel='alternate' type='text/html' href='http://nesv.blogspot.com/2010/03/code-tutorials.html' title='Code tutorials'/><author><name>indienick</name><uri>http://www.blogger.com/profile/12739388753406392673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-JrEjMfcwy5U/TazUpJds0BI/AAAAAAAAAT8/hAyqD2IWlwA/s220/2011-04-18-195657.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1558324149520634678.post-89346209254709496</id><published>2010-02-28T15:28:00.000-05:00</published><updated>2010-02-28T15:34:14.309-05:00</updated><title type='text'>New 'puter!</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_IkKUpnRplbs/S4rTKPo0olI/AAAAAAAAAOo/eAMSYegDkfg/s1600-h/100_0435.JPG"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_IkKUpnRplbs/S4rTKPo0olI/AAAAAAAAAOo/eAMSYegDkfg/s320/100_0435.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5443395272580571730" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p&gt;Yesterday, I bought myself a new case, motherboard and CPU (and some shiny new RAM, too) to replace my aging Pentium 4 (which required SDRAM!).&lt;/p&gt;&lt;br /&gt;&lt;p&gt;It is pretty sexy, not going to lie; AMD Phenom II Black Edition (X4 955), 2GB of DDR3 RAM (for starters) and an ASUS M4A785TD-V EVO motherboard.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;I installed FreeBSD 8.0 (amd64) on it, and am currently in complete awe, watching it crunch through the ports tree like there's nothing to it. :)&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1558324149520634678-89346209254709496?l=nesv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nesv.blogspot.com/feeds/89346209254709496/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://nesv.blogspot.com/2010/02/new-puter.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/89346209254709496'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/89346209254709496'/><link rel='alternate' type='text/html' href='http://nesv.blogspot.com/2010/02/new-puter.html' title='New &apos;puter!'/><author><name>indienick</name><uri>http://www.blogger.com/profile/12739388753406392673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-JrEjMfcwy5U/TazUpJds0BI/AAAAAAAAAT8/hAyqD2IWlwA/s220/2011-04-18-195657.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_IkKUpnRplbs/S4rTKPo0olI/AAAAAAAAAOo/eAMSYegDkfg/s72-c/100_0435.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1558324149520634678.post-6398591008067478637</id><published>2010-02-22T11:25:00.000-05:00</published><updated>2010-02-22T11:27:46.637-05:00</updated><title type='text'>Thank you, Slashdot.</title><content type='html'>&lt;p&gt;I was browsing through &lt;a href="http://slashdot.org/"&gt;Slashdot&lt;/a&gt; this morning and I found this link in an article. Two words for you: way cool. For me, it's all about the last item (on the second page of the article) - powered armor.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://www.gamesradar.com/f/fantastic-video-game-weapons-vs-their-real-life-equivalents/a-20100215101131764035"&gt;http://www.gamesradar.com/f/fantastic-video-game-weapons-vs-their-real-life-equivalents/a-20100215101131764035&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1558324149520634678-6398591008067478637?l=nesv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nesv.blogspot.com/feeds/6398591008067478637/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://nesv.blogspot.com/2010/02/thank-you-slashdot.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/6398591008067478637'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/6398591008067478637'/><link rel='alternate' type='text/html' href='http://nesv.blogspot.com/2010/02/thank-you-slashdot.html' title='Thank you, Slashdot.'/><author><name>indienick</name><uri>http://www.blogger.com/profile/12739388753406392673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-JrEjMfcwy5U/TazUpJds0BI/AAAAAAAAAT8/hAyqD2IWlwA/s220/2011-04-18-195657.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1558324149520634678.post-6463784882479289080</id><published>2010-01-09T14:17:00.000-05:00</published><updated>2010-01-11T15:56:46.170-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ecl'/><category scheme='http://www.blogger.com/atom/ns#' term='common lisp'/><category scheme='http://www.blogger.com/atom/ns#' term='c'/><title type='text'>ECL, pt. 1</title><content type='html'>&lt;p&gt;Lately, I have been tinkering around with C and I came across &lt;a href="http://ecls.sourceforge.net/"&gt;ECL&lt;/a&gt; (Embeddable Common Lisp). I mean, first of all, it's Common Lisp, which is way cool, and secondly, it's embeddable!&lt;/p&gt;&lt;br /&gt;&lt;p&gt;So, I have decided to start writing a multi-part tutorial on how to write a C program, and extend it with Common Lisp by using ECL, en lieu of ECL's documentation not being completely up-to-snuff. (Don't worry, I will push my findings their way.)&lt;/p&gt;&lt;br /&gt;&lt;p&gt;In this first part, I will show you - the curious programmer - how to set up the Common Lisp environment in your C program. I will also show you how to compile your Lisp code into a native binary. This tutorial is not meant to be used as a way to learn the Common Lisp or C programming languages, but they can provide a real-world example when doing so; this will pertain for the Lisp portions, mostly.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;As this multi-part tutorial progresses, we will eventually end up with a C program that has an embedded Common Lisp environment, that will load plug-ins written in Common Lisp.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Without any further ado, here are my absolute starting points for beginning a C project with an embedded Common Lisp environment:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;strong&gt;main.c&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;#include &amp;lt;ecl/ecl.h&amp;gt;&lt;br /&gt;&lt;br /&gt;int main(int argc, char **argv)&lt;br /&gt;{&lt;br /&gt;  printf("Initializing ECL environment...");&lt;br /&gt;  cl_boot(argc, argv);&lt;br /&gt;  printf("Done\n");&lt;br /&gt;&lt;br /&gt;  printf("Shutting down ECL environment...");&lt;br /&gt;  cl_shutdown();&lt;br /&gt;  printf("Done\n");&lt;br /&gt;&lt;br /&gt;  return 0;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;strong&gt;Makefile&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;CC := `which cc`&lt;br /&gt;CFLAGS := -Wall -g -Dlinux -I/usr/local/include/&lt;br /&gt;LDFLAGS := -L/usr/local/lib/ -lecl -ldl -lm&lt;br /&gt;OBJ_FILES := main.o&lt;br /&gt;&lt;br /&gt;all: &lt;em&gt;program_name&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;program_name&lt;/em&gt;: main.o&lt;br /&gt; $(CC) $(LDFLAGS) -o $@ $(OBJ_FILES)&lt;br /&gt;&lt;br /&gt;main.o: main.c&lt;br /&gt; $(CC) $(CFLAGS) -c main.c -o main.o&lt;br /&gt;&lt;br /&gt;clean:&lt;br /&gt; @echo "Cleaning source tree..."&lt;br /&gt; rm -f *.o&lt;br /&gt; rm -f *~&lt;br /&gt; @echo "Done."&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Now, supposing you want to use ECL's wonderfully spiffy Lisp-to-C translator-compiler to compile your Common Lisp code to a native binary executable:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;strong&gt;main.lisp&lt;/strong&gt;&lt;br/&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;(format t "~&amp;Hello world!~%")&lt;br /&gt;(force-output)&lt;br /&gt;(ext:quit 0)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;strong&gt;Makefile.lisp&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;;;To build the program, you must use ECL (http://ecls.sourceforge.net/). &lt;br /&gt;;;Just run:&lt;br /&gt;;;&lt;br /&gt;;; ecl -load Makefile.lisp&lt;br /&gt;&lt;br /&gt;(defconstant +program-name+ "&lt;em&gt;your_program_name&lt;/em&gt;")&lt;br /&gt;&lt;br /&gt;(defvar *files-to-build* '("main.lisp"))&lt;br /&gt;(defvar *object-files* '())&lt;br /&gt;&lt;br /&gt;(dolist (file *files-to-build*)&lt;br /&gt;  (push (compile-file file :system-p t) *object-files*))&lt;br /&gt;&lt;br /&gt;(if (c:build-program +program-name+ :lisp-files *object-files*)&lt;br /&gt;    (ext:quit 0)&lt;br /&gt;  (ext:quit 1))&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;And it will go (should only take a few seconds)!&lt;/p&gt;&lt;br /&gt;&lt;p&gt;I did this really late at night, and I have not had any time to try it out on any other Common Lisp implementations (like CLISP, SBCL, etc.); if you would like to try it out on any other implementations, please feel free to work it out, and let me know.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;To explain some of the - perhaps - not-so-obvious conventions I have used:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;The use of the &lt;tt&gt;FORCE-OUTPUT&lt;/tt&gt; function, in &lt;tt&gt;main.lisp&lt;/tt&gt; is not entirely necessary, I am just using it here to preemptively avoid any weird behaviours when the output stream is buffered and output is not necessarily written until the program ends and the ouput stream is flushed.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;In &lt;tt&gt;Makefile.lisp&lt;/tt&gt; I use the &lt;tt&gt;PUSH&lt;/tt&gt; function in correspondence with the &lt;tt&gt;COMPILE-FILE&lt;/tt&gt; function and &lt;tt&gt;*OBJECT-FILES*&lt;/tt&gt; list. When &lt;tt&gt;COMPILE-FILE&lt;/tt&gt; is run, it returns the pathname of the generated object file (&lt;tt&gt;*.o&lt;/tt&gt;) - in this case, it will return the value &lt;tt&gt;#p"main.o"&lt;/tt&gt;. So, what I do is push the returned pathname value onto the &lt;tt&gt;*OBJECT-FILES*&lt;/tt&gt; list, then pass the list to the &lt;tt&gt;C:BUILD-PROGRAM&lt;/tt&gt; function as an argument to the &lt;tt&gt;:LISP-FILES&lt;/tt&gt; keyword.&lt;/li&gt;&lt;br /&gt;&lt;/ul&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/1558324149520634678-6463784882479289080?l=nesv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nesv.blogspot.com/feeds/6463784882479289080/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://nesv.blogspot.com/2010/01/ecl.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/6463784882479289080'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/6463784882479289080'/><link rel='alternate' type='text/html' href='http://nesv.blogspot.com/2010/01/ecl.html' title='ECL, pt. 1'/><author><name>indienick</name><uri>http://www.blogger.com/profile/12739388753406392673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-JrEjMfcwy5U/TazUpJds0BI/AAAAAAAAAT8/hAyqD2IWlwA/s220/2011-04-18-195657.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1558324149520634678.post-8848918204510390365</id><published>2010-01-09T14:15:00.000-05:00</published><updated>2010-01-11T15:19:01.882-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tattoo'/><category scheme='http://www.blogger.com/atom/ns#' term='archived'/><title type='text'>Tattoozle</title><content type='html'>&lt;p&gt;I have been looking to get a tattoo for a long while, but I refuse to just pick a design I like, sit down in the chair, and pay my money for something that I am probably going to get sick of. I think about the design, let it stew, and if after a year I still like the tattoo design, I will start amassing funds to get the work done.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;The tattoo design I - previously - wanted to get was an Orthodox Christian cross across the front of my torso and my church across my back. (Yes, I am a churchy.) After finding out from my parents that the church (and the cross, for that matter) is a big no-no, I later see Eastern Promises, got looking into the tattoos I wanted and double-checked to make sure I wasn’t getting any Russian mob tattoos. Sure enough, the church is a Russian mob tat’; the number of steeples dictates either the number of times you have been incarcerated, or the number of years you have served in incarceration. Yikes.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;So, today (at work, mind you) I stumbled across geekytattoos.com and started looking through the posts. I saw, perhaps, the best one: a data matrix 2-D barcode. Let’s put it together, it’s not an offensive tattoo, it’s got geek-cred, and it just looks damn cool.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;If you wouldl like to generate your own data matrix (you don’t have to do text, you can also do a URL, SMS or phone number) go here: &lt;a href="http://datamatrix.kaywa.com/"&gt;http://datamatrix.kaywa.com/&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1558324149520634678-8848918204510390365?l=nesv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nesv.blogspot.com/feeds/8848918204510390365/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://nesv.blogspot.com/2010/01/tattoozle.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/8848918204510390365'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/8848918204510390365'/><link rel='alternate' type='text/html' href='http://nesv.blogspot.com/2010/01/tattoozle.html' title='Tattoozle'/><author><name>indienick</name><uri>http://www.blogger.com/profile/12739388753406392673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-JrEjMfcwy5U/TazUpJds0BI/AAAAAAAAAT8/hAyqD2IWlwA/s220/2011-04-18-195657.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1558324149520634678.post-3432941624781080332</id><published>2010-01-09T14:14:00.000-05:00</published><updated>2010-01-09T14:15:23.819-05:00</updated><title type='text'>Revoking Prior Statements</title><content type='html'>&lt;p&gt;I take back anything bad I ever said about PHP; really, sincerely, I do. It is actually a pretty solid language.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Lately, I have been tinkering with the PHP-GTK2 module. All I have to say about that is, “Wow”. Designing interfaces with Glade and then using the GladeXML class to load the resulting .glade file really cuts down on the amount of boring, repetetive typing normally involved with GUI programming.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;That being said, OpenMIS has changed its development language, again.  It started out as Java, went to Common Lisp, skipped around in Python and is now, finally, settling on PHP.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Why not Java? Ugh - it wasn’t a matter of biting off more than I could chew with some of the features I wanted, it was a matter of trying to keep my mind focused while writing incessantly repetetive lines of GUI code (and no, Netbeans and its form designer didn’t help). I also kept running into problems where I wanted some portions of the code to be declared static, but could not make it mesh with the non-static portions. This was namely so I wouldn’t have to create another object on the heap just to access some simple functions and so I could force only one instance of OpenMIS to be running, but mainly for efficiency during execution and just-in-time compiling.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;I cry that I cannot write it in Common Lisp, but with Lisp GUI toolkits having the focus of something on the back-burner and a lack of easy deployment to various platforms (I am assuming the lowest common denominator of user trying to install it) it just didn’t seem feasible (much to my chagrin).&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Python…unfortunately, I don’t have much nice to say about Python. Yes, it is a nice, clean language but some of the Python 2.x semantics make no sense and they don’t seem to be explained. For instance, why on Earth does a function (erm, “method”), within a class, have to have self as the first parameter? I have not tried Python 3 yet because I was using wxPython for GUI (for cross-platform reasons) and I do not think wxPython can be built with Python 3…easily. Again, what killed this (aside from asinine language semantics) was deployability.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;So yes, settling on PHP (with the PHP-GTK2 module). The only problem I am running into, on Windows machines (I don’t have access to a Mac OS X machine), is that I can get PHP with the PHP-GTK2 module OR PHP with the MySQL module. I need both, but it is proving to not be a straight-forward path to getting them both in the same setting.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1558324149520634678-3432941624781080332?l=nesv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nesv.blogspot.com/feeds/3432941624781080332/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://nesv.blogspot.com/2010/01/revoking-prior-statements.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/3432941624781080332'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/3432941624781080332'/><link rel='alternate' type='text/html' href='http://nesv.blogspot.com/2010/01/revoking-prior-statements.html' title='Revoking Prior Statements'/><author><name>indienick</name><uri>http://www.blogger.com/profile/12739388753406392673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-JrEjMfcwy5U/TazUpJds0BI/AAAAAAAAAT8/hAyqD2IWlwA/s220/2011-04-18-195657.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1558324149520634678.post-7005982398529704686</id><published>2010-01-09T14:09:00.000-05:00</published><updated>2010-01-09T14:14:02.031-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sbcl'/><category scheme='http://www.blogger.com/atom/ns#' term='git'/><category scheme='http://www.blogger.com/atom/ns#' term='common lisp'/><category scheme='http://www.blogger.com/atom/ns#' term='emacs'/><category scheme='http://www.blogger.com/atom/ns#' term='openbsd'/><category scheme='http://www.blogger.com/atom/ns#' term='archived'/><category scheme='http://www.blogger.com/atom/ns#' term='clisp'/><title type='text'>Retooling</title><content type='html'>&lt;p&gt;New job! I have had a new job for about a month now, and man - it’s awesome. No longer am I slaving away for where I was, for the past two years. I got a job at a local taxi company as a programmer.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;I got a car too! A 1994 Honda Civic LX coupe. It looks like crap and doesn’t respond to jamming the gas pedal to the floor, but it runs well, has a “pop can” on the exhaust (makes it go *vroom vroom*) and is, badly, in need of a paint job.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Eventually, I will be getting into some of the Gambas projects they have floating around. Double-gross. I absolutely despise BASIC and anything to do with it. I would rather program in Python - seriously.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Here is a list of programming things I have recently been surrounding myself with (in the computer world):&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;strong&gt;Emacs&lt;/strong&gt;&lt;br /&gt;&lt;p&gt;Damn straight; best text editor out there for [almost] every language. The only place it lacks for me, is when I have to suffer through bouts of PHP; in which case, not only do I have to suffer through PHP, I must also suffer through VIM.&lt;/p&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;strong&gt;Git&lt;/strong&gt;&lt;br /&gt;&lt;p&gt;Wonderfully simple version control system; no cryptic CVS or Subversion (SVN) for me, thank you very much.  I switched to this from Bazaar because it supported transferring over HTTP(S) and (S)FTP! (Plus, for some strange reason, I just do not trust Canonical.)&lt;/p&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;strong&gt;SBCL and CLISP&lt;/strong&gt;&lt;br /&gt;&lt;p&gt;It is easier to do some things in SBCL than it is to do the same function in CLISP, and vice versa. Requiring both of them, and mixing the two together, provides quite a powerful combination. It appears to be one of the first times I have ever mixed two things together - in computing - that yielded the most benefit with the least amount of hassle (actually, the only “hassle” is reading an extremely informative and well-made manpage).&lt;/p&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;strong&gt;LTK - The Lisp Toolkit&lt;/strong&gt;&lt;br /&gt;&lt;p&gt;A Tk binding for Common Lisp, that provides GUIs! YEEEEY! And, it’s extremely easy to use! The only quirk I can see myself running into, is when a user wants to run a program under Mac OS X, the Aqua toolkit does not support buttons with images, so the GUI will probably not work if I have something resembling a toolbar in the mix.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;em&gt;Side note, I absolutely love toolbars as a GUI component. They make sense. However, given OS X’s roots from NeXTStep, I am not in the least bit worried by this. The OpenStep look is quite nice, and Apple has done some good work in providing an aesthetically-pleasing interface. The only problem I have is that a Tk interface that looks good in OS X, will probably look like crap on anything else.&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;strong&gt;OpenBSD&lt;/strong&gt;&lt;br /&gt;&lt;p&gt;It’s wonderful, it truly is.&lt;/p&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1558324149520634678-7005982398529704686?l=nesv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nesv.blogspot.com/feeds/7005982398529704686/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://nesv.blogspot.com/2010/01/retooling.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/7005982398529704686'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/7005982398529704686'/><link rel='alternate' type='text/html' href='http://nesv.blogspot.com/2010/01/retooling.html' title='Retooling'/><author><name>indienick</name><uri>http://www.blogger.com/profile/12739388753406392673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-JrEjMfcwy5U/TazUpJds0BI/AAAAAAAAAT8/hAyqD2IWlwA/s220/2011-04-18-195657.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1558324149520634678.post-544032140162672072</id><published>2010-01-09T14:08:00.000-05:00</published><updated>2010-01-09T14:09:22.987-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='openbsd'/><category scheme='http://www.blogger.com/atom/ns#' term='archived'/><title type='text'>OpenBSD 4.5</title><content type='html'>OpenBSD 4.5 is officially here!&lt;br /&gt;&lt;br /&gt;I mean, there have been snapshots available for a while, but now I can download the pre-built packages and ports tree!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1558324149520634678-544032140162672072?l=nesv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nesv.blogspot.com/feeds/544032140162672072/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://nesv.blogspot.com/2010/01/openbsd-45.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/544032140162672072'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/544032140162672072'/><link rel='alternate' type='text/html' href='http://nesv.blogspot.com/2010/01/openbsd-45.html' title='OpenBSD 4.5'/><author><name>indienick</name><uri>http://www.blogger.com/profile/12739388753406392673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-JrEjMfcwy5U/TazUpJds0BI/AAAAAAAAAT8/hAyqD2IWlwA/s220/2011-04-18-195657.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1558324149520634678.post-2510796025878516938</id><published>2010-01-09T14:05:00.000-05:00</published><updated>2010-01-09T14:08:55.520-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='archived'/><title type='text'>Updates</title><content type='html'>&lt;p&gt;Jeez - it’s been a while since I have written anything. Let’s see…what’s been new in my life…&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;strong&gt;New car/G2 license:&lt;/strong&gt;&lt;br /&gt;&lt;p&gt;About a month ago, my dad stumbled upon a bitchin’ deal on Kijiji for a ‘94 Honda Civic. Despite its age, it is in absolutely wonderful condition (the engine is re-built and the brakes are brand new). Also, as of Thursday, I can somewhat officially drive on my own. All I have to do is wait for the provincial government to send me a certificate saying I have completed driver’s education, then I can head off to an insurance company, get insured and start driving my ride.&lt;/p&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;strong&gt;Seceding from Linux/Hello OpenBSD:&lt;/strong&gt;&lt;br /&gt;&lt;p&gt;This is a somewhat long-winded story. My first laptop went to my brother; he asked for one, I was feeling particularly charitable, and upon receiving my shiny Dell Inspiron Mini 9, he obtained my full-size laptop. Several months, and a trip to Calgary later, the Mini 9 proved to be a wonderful laptop to travel with, but we parted ways due to ergonomics; large hands + miniature keyboard = hand cramps.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;After resurrecting my old desktop, the cheap-ass offshore motherboard took its own life (there’s a gaping hole in the board) and I borrowed a clunker of a Pentium II off of Fil. I didn’t have a Slackware install DVD lying around, and Debian (for whatever bizarre reason) would not recognize the PCI Ethernet NIC. I had burned an install ISO for OpenBSD 4.4, as I had been meaning to give BSD a try, and what do you know? the install completed, the NIC was recognized and I had a fully functional system within 15 minutes!&lt;/p&gt;&lt;br /&gt;&lt;p&gt;It was wonderful: the online documentation is thorough and precise, but not extraeneous, and man pages are no longer felt like a leftover from the yesteryears of UNIX documentation! The system was fast - I kept forgetting that I was running on a Pentium II, half of the time.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;So, after a while, my shiny-new Dell Inspiron 1545 came in. I gave Windows Vista a chance, but after it taking a solid 15 minutes for it to get to a somewhat-usable state, I just said, “Eff this,” and installed OpenBSD.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;However, that was short-lived: the Ethernet NIC is not supported in OpenBSD 4.4 (but it is in 4.5 - but that is not officially out until May 1st, hence no downloadable packages). So, I will post updates on my OpenBSD (or just BSD, in general) adventures. I am going to see if NetBSD or FreeBSD support my NIC. Additional note, the Broadcom BCM4312 WLAN card is a red-headed stepchild: neither Linux nor OpenBSD support it (even the proprietary, Broadcom wireless drivers don’t work - fml…); it also seems that there are no Windows XP drivers for the card, thus I cannot use NDISwrapper (Windows Vista drivers don’t work - I already tried it).&lt;/p&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;strong&gt;New job:&lt;/strong&gt;&lt;br /&gt;&lt;p&gt;I got a new job, as a programmer, at a local taxi company; however, I haven’t left my current job. At the new place, I am on a “trial period” until the end of the month. After that trial period (where they have given me a small PHP assignment) I am going to see if I can swing both jobs - mechanical engineering full-time, and programming part-time. While I absolutely detest the management (and the rest of those in charge) at my current, full-time job, I have built some good working relationships with several of my co-workers, and I do not want my past, two years’ worth of work to be for naught. (Not to mention, if the place goes down in flames, I want to watch it go.)&lt;/p&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1558324149520634678-2510796025878516938?l=nesv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nesv.blogspot.com/feeds/2510796025878516938/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://nesv.blogspot.com/2010/01/updates.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/2510796025878516938'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/2510796025878516938'/><link rel='alternate' type='text/html' href='http://nesv.blogspot.com/2010/01/updates.html' title='Updates'/><author><name>indienick</name><uri>http://www.blogger.com/profile/12739388753406392673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-JrEjMfcwy5U/TazUpJds0BI/AAAAAAAAAT8/hAyqD2IWlwA/s220/2011-04-18-195657.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1558324149520634678.post-3779057287290573251</id><published>2010-01-09T14:03:00.000-05:00</published><updated>2010-01-09T14:05:04.732-05:00</updated><title type='text'>TYoL 1.5</title><content type='html'>&lt;p&gt;I definitely digressed too far from the opening of the TYoL post, to the closing.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Statements:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;While I prefer GNOME to KDE in terms of aesthetic appearance, and functionality, it feels too “blotchy” in that it is somewhat obvious that there is little-to-no standardization for the “look-’n-feel” for applications; there are no standards for user interface design, in terms of widget placements and centralized control panels.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;KDE is my preferred platform for customization through a central control panel, but I cannot speak much for its aesthetic presentation - sorry, it just does not appeal to me.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Modifying text files by hand is not a good thing to throw on new users. It makes sense for those of us that have successfully passed the learning curve from switching to Linux, but if most of the computer-using world were as dedicated to messing around with stuff - as we are - there would have been a free UNIX clone decades ago.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Unfortunately, it is our support of a system that prides itself on its virtue of choice that wards most people away. Many people who do not “know” about computers - in my experience - find it almost unbelievable that one, lone computer can act as a DNS, IMAP, SMTP, HTTP, FTP, SMB, print (CUPS) and proxy server and still allow a user to work on it like a Windows machine. This is, of course, supplying you explain what each of those server types are.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Most people do not know what a window manager or desktop environment are; they think what they see is Windows - they do not know that they are looking at the desktop environment and window manager that the Windows operating system provides.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Most people just simply do not know. Then again, there are those that just do not care, but they are not within the scope of these statements. Our “targets” are those who are interested in technology and are open to new, low-or-if-any-cost alternatives. We cannot force our opinions onto others; we cannot put the choices we have made - and are quite happy with - out on display and slam it back in the face of people, who either have yet to make the choice to secede from Windows or those who are truly disinterested, saying “See, look at the right choice I made…” It can only breed contempt.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;In your advocations of Linux - and open-source, in general - be humble, be like the man on the top of the mountain. If people are interested, they will present themselves and it is up to you to provide them the tools into their decision to secede from the proprietary world; do not get upset if someone decides it is not for them. Let everyone be happy.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1558324149520634678-3779057287290573251?l=nesv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nesv.blogspot.com/feeds/3779057287290573251/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://nesv.blogspot.com/2010/01/tyol-15.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/3779057287290573251'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/3779057287290573251'/><link rel='alternate' type='text/html' href='http://nesv.blogspot.com/2010/01/tyol-15.html' title='TYoL 1.5'/><author><name>indienick</name><uri>http://www.blogger.com/profile/12739388753406392673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-JrEjMfcwy5U/TazUpJds0BI/AAAAAAAAAT8/hAyqD2IWlwA/s220/2011-04-18-195657.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1558324149520634678.post-3092589692820693855</id><published>2010-01-09T13:59:00.000-05:00</published><updated>2010-01-09T14:03:45.458-05:00</updated><title type='text'>TYoL</title><content type='html'>&lt;p&gt;While reading this blurb on Slashdot,&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;    The main reason why “the year of Linux” never happens is that the press (and analysts) keep comparing Linux to what they know: a Windows desktop.&lt;/blockquote&gt;&lt;br /&gt;I realized something.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;There is a part of me that really does not want to see Linux move past where it currently is - more installations yes, but as a strict successor to Windows? It ain’t ever gonna be (unless some belts get tightened - which is probably never going to happen, either); it’s not a bad thing, do not misunderstand me.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;But why is this? What does Windows have that Linux doesn’t? Dictatorship. Let me explain: Linux has a communal structure - no duh - which I parallel to the human existence (a giant genetic pool that everyone contributes to - except, in Linux’s case, substitute bodily fluids with code and genetic evolution with revisions).  Windows, however, has a few outside contributers - though for the most part, the complete design, sematincs and (keyword) integration of all of the components; which I parallel to Hitler’s blond-haired, blue-eyed, superhuman race.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Where Windows exceedinly shows Linux up, is in its integration properties. Every inch of Microsoft-supplied components interact with each other so nicely, and so smoothly, I find myself barely noticing that these are all separate programs. The look and feel are unified (no matter how terrible or repulsive they may be), the various components that piece together the user interface just work and - most importantly, in my opinion - are that most applications interact with each other, so nicely. But where do these three, saving graces come from? How are they achieved?&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Strict control; well, actually, that is the most abstracted point. Under the dictatorial umbrella that Windows development has always been under, are the various things that make such a system work.  For Windows, Microsoft has provided a rigid API that is not too prone to change and provides features for things like drag-’n-drop - a system reliant on the GUI toolkit.  Linux could attempt to counter this by providing libraries that allow smooth interaction between its plethora of graphical toolkits (GTK+ 1.x, GTK+ 2.x, Qt, Tk, Xlib, SWT and wxWidgets, for starters); my thinking is not just a multitude of libraries to handle the possible number of permutations of X -&gt; Y compatibility libraries, but a single, massive library to allow, say, a Qt application to allow drag-’n-drop functionality between an Xlib, wxWidgets and Tk interface. The various toolkits should be designed in such a way that they can have a compatibility layer with every other graphical toolkit out there.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Covering their asses with things like a GNOME compatibility library for various languages (Ruby, Python, C++ to name a few) does not cut it, as that relies on the user to have that desktop environment installed. While I am not saying that these library models should be jettisoned, as they do serve a good purpose, I see them as too distant of an attempt at a solution - a solution they should provide, but do not.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Now, I know GNOME and KDE are environments for applications and applets to exist within, and allow intercommunication, but in turn you are required to have that desktop environment installed (which can be a pretty substantial footprint on your hard drive). The intercommunication should be handled through a unified method implemented in ALL graphical toolkits (think D-Bus incorporated into the GTK+ and Qt libraries).&lt;/p&gt;&lt;br /&gt;&lt;p&gt;I feel as though I am digressing too far, and droning at this point - and for that I apologize. What I see the grand problem here, being, is that the Linux community is saying “this will be the year for Linux” while they try to promote Linux on its virtue of personal choice. If they are trying to get more people using Linux, they cannot. They are just going to see a group of zealots pushing for a free operating system - which does not really work on a sociological scale. Where I think Linux needs to be promoted, is not with the established Windows and Mac OS X  user base, but instead with the younger ones - our children; those who are just getting into the whole computing scene.&lt;/p&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;p&gt;An address to all Linux enthusiasts that push for Linux to have more of a place in today’s electronic world:&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Do not try and convert the user base Windows has spent decades solidifying. The only reason things are in the state they currently are - with operating systems - is because Microsoft has been around since the 1970s and lulled the consumer market into using Windows (at the time, MS-DOS) with a marketing scheme that was applicable to the time. By nature, things like this stagnate, and become standardized so don’t try to fight them.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Instead, try to get your children exposed to Linux (or *BSD) at a younger age and present it as a lesson in technological alternatives.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Should you not have children of your own, try a philanthropic approach, try a small side-project advocating Linux and other, various open-source technologies in public forums (libraries, organizing a LUG for your area, etc.)&lt;/p&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1558324149520634678-3092589692820693855?l=nesv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nesv.blogspot.com/feeds/3092589692820693855/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://nesv.blogspot.com/2010/01/tyol.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/3092589692820693855'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/3092589692820693855'/><link rel='alternate' type='text/html' href='http://nesv.blogspot.com/2010/01/tyol.html' title='TYoL'/><author><name>indienick</name><uri>http://www.blogger.com/profile/12739388753406392673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-JrEjMfcwy5U/TazUpJds0BI/AAAAAAAAAT8/hAyqD2IWlwA/s220/2011-04-18-195657.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1558324149520634678.post-1564331270166904160</id><published>2010-01-09T13:52:00.000-05:00</published><updated>2010-01-09T13:54:40.412-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Richard M. Stallman'/><category scheme='http://www.blogger.com/atom/ns#' term='GNU'/><category scheme='http://www.blogger.com/atom/ns#' term='toronto'/><category scheme='http://www.blogger.com/atom/ns#' term='onlinux'/><title type='text'>Ontario Linux Fest. 2008</title><content type='html'>&lt;p&gt;It has been a month and a week or so since the 2008 Ontario Linux Fest and Conference in Toronto, and I apologize not having written any sort of thoughts down on this earlier, but life has kept me busy.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Simply, the conference was great. Many great speakers and many great ideas. I greatly enjoyed the fact that you did not have to be a programming guru, or a GNU/Linux/FSF/FLOSS/FOSS fanatic to attend the conference; most of the talks given had the Linux theme but kept the ideas behind each topic completely open to those with little-to-no insight into the world of free software, or GNU/Linux.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;As far as my memory serves, I recall attending the OpenMoko chat by Ian Darwin, A History of Linux by Peter H. Salus, Intellectual Property and Open Source by Barnaby Bienkowski and - of course - the keynotes delivered by Jeremy Allison (Livin’ la vida Linux) and John “maddog” Hall (Sustainable Computing). Several things I gained from each of these chats:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;OpenMoko: My next cell phone.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;A History of Linux: Peter Salus is quite the speaker, however this talk was more a brief history of Richard M. Stallman. (I’m not complaining, though. ;)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Intellectual Property and Open Source: To cover your butt with open-source projects, you have to licence your code, incessantly; boring and prone to drudgery, yes, but important.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Livin’ la vida Linux: This chat, moreso, provided me the reminder that while open-source audio and video formats (Ogg Vorbis and Ogg Theora, respectively) are the “preferred” way, the biggest problem that arises is that practically no-one makes a portable audio player (MP3 player) that supports open-source audio and video codecs: Ogg Vorbis, FLAC, etc.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Sustainable Computing: This was - by long and far - the most interesting of all the notes I attended. John Hall went on about how we need to form the computing world into a more prevalent, long-term world. No more, “oh, this computer will be outdated by the time I get it home and unpackage it”. Actually maintaining the computers we currently have and their supporting infrastructures: low-power systems to quell the need for ghastly power provisioning (monstrous hydro-electric dams, nuclear fission reactors). Just because a computer is 10 years old - I can honestly say I still own a 486 laptop and a 486 desktop - does not mean it is useless; they can still serve purposes within our daily lives. My 486 desktop, for instance, acts as a firewall.&lt;/li&gt;&lt;br /&gt;&lt;/ul&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/1558324149520634678-1564331270166904160?l=nesv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nesv.blogspot.com/feeds/1564331270166904160/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://nesv.blogspot.com/2010/01/ontario-linux-fest-2008.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/1564331270166904160'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/1564331270166904160'/><link rel='alternate' type='text/html' href='http://nesv.blogspot.com/2010/01/ontario-linux-fest-2008.html' title='Ontario Linux Fest. 2008'/><author><name>indienick</name><uri>http://www.blogger.com/profile/12739388753406392673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-JrEjMfcwy5U/TazUpJds0BI/AAAAAAAAAT8/hAyqD2IWlwA/s220/2011-04-18-195657.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1558324149520634678.post-4481075910475719299</id><published>2010-01-09T13:47:00.000-05:00</published><updated>2010-01-09T13:49:26.493-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='common lisp'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='gcj'/><category scheme='http://www.blogger.com/atom/ns#' term='archived'/><title type='text'>GCJ: The worst thing to happen to Java</title><content type='html'>&lt;p&gt;I have mixed feelings with regards to GCJ.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;When I’m writing anything for distribution that cannot be expressed appropriately (syn. “eloquently”) in a Common Lisp script, I write it in Java; all of my homebrew system administration scripts are written in Common Lisp.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;The good points of GCJ:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Any written Java code can be compiled to a native binary.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Yeah, that’s a pretty slim list, hence why I’m not sold, in the least on GCJ. My main problem with it, is that it is - at best - two, minor versions behind Sun’s Java. I know it is not an entirely fair comparison, as Sun is the leading developer of Java, but it is really a big piss-off; GCJ offers partial Java 1.4 support while Sun Java is at version 1.6.&lt;br /&gt;I really want to use GCJ, I truly do, simply as I know many Linux users like to keep their installs a trim as possible and, not to mention, most distributions do not ship with Sun’s JRE (or JDK) out of the box, and they are quite weighty to download (for people without broadband Internet connections), not forgetting to mention the footprint it leaves on your hard drive. I want to be able to distribute any of my future Java applications, to Linux users, with the ability to compile from source with a simple “./configure &amp;&amp; make &amp;&amp; make install” that is possible with GCJ.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;To avoid the usual, “Well, why don’t you help with the development of GCJ?!” my response is simple: I have several projects (one of them, substantially large) that I am working on, in both Java and Common Lisp, and I do not want to have to reallocate time from those projects to bone-up on my C and C++ knowledge and aid the development of the GCJ project.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;My biggest pet peeve is that half of the classes I use on a regular basis (that are in the Java 1.4 API) are not in the GCJ class set. Also, the javax.swing package (and any of its sub-packages) are not included. I don’t mind this too much, as I can use the java-gnome project’s JAR files to get GTK+ user interfaces for my Sun Java-compliant programs, but this just means more cruft and dependencies for the end user. GCJ does have some of the java.awt packages (and sub-packages) implemented, and they are linked to the GTK+ toolkit, but they are spotty at best.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;C’mon GCJ developers, give me a reason to use it! Implement before you optimize, or learn to do both at the same time!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1558324149520634678-4481075910475719299?l=nesv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nesv.blogspot.com/feeds/4481075910475719299/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://nesv.blogspot.com/2010/01/gcj-worst-thing-to-happen-to-java.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/4481075910475719299'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/4481075910475719299'/><link rel='alternate' type='text/html' href='http://nesv.blogspot.com/2010/01/gcj-worst-thing-to-happen-to-java.html' title='GCJ: The worst thing to happen to Java'/><author><name>indienick</name><uri>http://www.blogger.com/profile/12739388753406392673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-JrEjMfcwy5U/TazUpJds0BI/AAAAAAAAAT8/hAyqD2IWlwA/s220/2011-04-18-195657.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1558324149520634678.post-5187163587415719510</id><published>2010-01-09T13:46:00.002-05:00</published><updated>2010-01-09T13:47:46.148-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gtk'/><category scheme='http://www.blogger.com/atom/ns#' term='slackware'/><category scheme='http://www.blogger.com/atom/ns#' term='xfce'/><category scheme='http://www.blogger.com/atom/ns#' term='qt'/><category scheme='http://www.blogger.com/atom/ns#' term='dropline'/><category scheme='http://www.blogger.com/atom/ns#' term='kde'/><category scheme='http://www.blogger.com/atom/ns#' term='archived'/><category scheme='http://www.blogger.com/atom/ns#' term='gnome'/><title type='text'>Dropping the line</title><content type='html'>Admittedly, I’m not the biggest fan of KDE. I much prefer GNOME. Personally, I just think the GTK+ engines, on the whole, look nicer than the Qt toolkit. KDE 4 does  look nice, but I still prefer GNOME (and even Xfce).&lt;br /&gt;&lt;br /&gt;Since Slackware 12.1 only ships with KDE 3.5.9 and Xfce 4.4.2, I was tempted to try installing Dropline GNOME. However, that did not turn out too well. Dropline is only available for Slackware versions up to 12.0 - I should have heeded this. I opted to just download all of the packages and install the ones I need, and even this proved problematic.&lt;br /&gt;&lt;br /&gt;After tying up the bandwidth at my house for a good half-hour, I started to install all of the necessary libraries and programs that weren’t shipped with Slackware 12.1. Somewhere along the way, I missed something and installed a lesser version of a library I already had.&lt;br /&gt;&lt;br /&gt;When I finally decided to admit defeat, that perhaps this was just far too much trouble than in was worth just to get a Slackware-ized version of GNOME, I started to uninstall the packages that the dropline-installer had installed.&lt;br /&gt;&lt;br /&gt;I realized some of the libraries had had lesser versions installed in parallel, so I reinstalled all of the libraries frome the L/ set on the Slackware 12.1 DVD. My laptop started to run a bit funny, so I decided to do a restart.&lt;br /&gt;&lt;br /&gt;Well, somewhere along the way, something happened to the libpam shared library. I couldn’t log in to my box - from the command line!&lt;br /&gt;&lt;br /&gt;Luckily, I had 20GB of partitioned off space, at the end of my hard drive, and I just did a quick Debian install, backed up all of my files that I needed onto my 500GB external HD and proceeded to reinstall Slackware 12.1. This took up the better part of my weekend; backing up my data (+100GB, and ensuring there was no file degredation during transfer) and reinstalling my primary OS.&lt;br /&gt;&lt;br /&gt;The moral of the story is: space permitting, install a secondary, trimmer operating system on your machine with any and all of the tools you will need for a backup when this kind of thing happens. Also, make sure you do not have a separate /boot partition for this “oh shit” backup OS (supplying it’s a UNIX-type OS), and have your bootloader (residing in the MBR) be governed by configuration files on the backup OS.  Even though my primary OS is Slackware, my bootloader is still GRUB, where the menu.lst file is in the /boot/grub directory of the Debian partition.&lt;br /&gt;&lt;br /&gt;As a side note, I normally would have used DSL (Damn Small Linux) in this sort of a situation, but I couldn’t find the CD I usually have, floating around&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1558324149520634678-5187163587415719510?l=nesv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nesv.blogspot.com/feeds/5187163587415719510/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://nesv.blogspot.com/2010/01/dropping-line.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/5187163587415719510'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/5187163587415719510'/><link rel='alternate' type='text/html' href='http://nesv.blogspot.com/2010/01/dropping-line.html' title='Dropping the line'/><author><name>indienick</name><uri>http://www.blogger.com/profile/12739388753406392673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-JrEjMfcwy5U/TazUpJds0BI/AAAAAAAAAT8/hAyqD2IWlwA/s220/2011-04-18-195657.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1558324149520634678.post-5655028658458251153</id><published>2010-01-09T13:46:00.001-05:00</published><updated>2010-01-09T13:46:35.741-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='archived'/><title type='text'>Overthinking</title><content type='html'>I am tempted to think that we, as a species, have been avoiding overlooking some of the biological technologies that exist in our very own backyard:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://web.mit.edu/newsoffice/2008/oxygen-0731.html"&gt;http://web.mit.edu/newsoffice/2008/oxygen-0731.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1558324149520634678-5655028658458251153?l=nesv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nesv.blogspot.com/feeds/5655028658458251153/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://nesv.blogspot.com/2010/01/overthinking.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/5655028658458251153'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/5655028658458251153'/><link rel='alternate' type='text/html' href='http://nesv.blogspot.com/2010/01/overthinking.html' title='Overthinking'/><author><name>indienick</name><uri>http://www.blogger.com/profile/12739388753406392673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-JrEjMfcwy5U/TazUpJds0BI/AAAAAAAAAT8/hAyqD2IWlwA/s220/2011-04-18-195657.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1558324149520634678.post-3316694733684499574</id><published>2010-01-09T13:44:00.001-05:00</published><updated>2010-01-09T13:46:03.559-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='calgary'/><category scheme='http://www.blogger.com/atom/ns#' term='archived'/><title type='text'>Stampede, pt. 2</title><content type='html'>Ever since I’ve returned from my trip to Calgary, there are several things I would like to state:&lt;br /&gt;&lt;br /&gt;    * My family watches way too much TV - I spent an entire 10 days in Calgary without it (not saying there wasn’t one available, I just didn’t watch any) and I didn’t miss it in the least. It doesn’t matter what time of the day it is, there is - guaranteed - someone watching the TV.Me, I barely watch TV. But I think I’m going to take it one step further and actively not watch TV, with one exception: the movie channels. Every-so-often, my mum complains I’m on the computer too much however, my defense is that [1] I’m actually doing something mildly productive on here (ie. programming), and [2] I don’t sit at the computer for hours on end - I do it in 15-30 minute chunks.&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;I’m going to try and exercise on a more regular business - just the basic, Systema warmups.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Without becoming a complete hippy/food-nazi, I’m going to try eating a little more organically (not to mention eating less, and a little healthier).&lt;/li&gt;&lt;br /&gt;&lt;li&gt;I’m going to drink more water and less pop, but my coffee intake will be the same; 12-hr. days are practically suicide without the bean juice.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;I want to actively do more around the house; the moment I start feeling as though I’m not being proactive or productive, I’m going to find something to do.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Updates will be posted&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1558324149520634678-3316694733684499574?l=nesv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nesv.blogspot.com/feeds/3316694733684499574/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://nesv.blogspot.com/2010/01/stampede-pt-2.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/3316694733684499574'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/3316694733684499574'/><link rel='alternate' type='text/html' href='http://nesv.blogspot.com/2010/01/stampede-pt-2.html' title='Stampede, pt. 2'/><author><name>indienick</name><uri>http://www.blogger.com/profile/12739388753406392673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-JrEjMfcwy5U/TazUpJds0BI/AAAAAAAAAT8/hAyqD2IWlwA/s220/2011-04-18-195657.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1558324149520634678.post-5369987562955664981</id><published>2010-01-09T13:42:00.000-05:00</published><updated>2010-01-09T13:44:33.490-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='calgary'/><category scheme='http://www.blogger.com/atom/ns#' term='archived'/><title type='text'>Stampede</title><content type='html'>Maaaaan, oh man…&lt;br /&gt;&lt;br /&gt;Last week, I took a trip to Calgary - something I’ve been wanting to do for years - and did not regret it in the slightest. It is absolutely amazing there.&lt;br /&gt;&lt;br /&gt;*speechless*&lt;br /&gt;&lt;br /&gt;(FYI: I missed the Calgary Stampede, but from what I’ve been told, I wasn’t missing much.)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1558324149520634678-5369987562955664981?l=nesv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nesv.blogspot.com/feeds/5369987562955664981/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://nesv.blogspot.com/2010/01/stampede.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/5369987562955664981'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/5369987562955664981'/><link rel='alternate' type='text/html' href='http://nesv.blogspot.com/2010/01/stampede.html' title='Stampede'/><author><name>indienick</name><uri>http://www.blogger.com/profile/12739388753406392673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-JrEjMfcwy5U/TazUpJds0BI/AAAAAAAAAT8/hAyqD2IWlwA/s220/2011-04-18-195657.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1558324149520634678.post-5362922517529459604</id><published>2010-01-09T13:41:00.000-05:00</published><updated>2010-01-09T13:42:35.162-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='archived'/><title type='text'>Fortune</title><content type='html'>I love the “offensive” lines output by running fortune with the “-o” option.&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;    Physicists do it with charm.&lt;br /&gt;&lt;br /&gt;    Vidi, vici, veni. (I saw, I conquered, I came.)&lt;br /&gt;&lt;br /&gt;    Absinthe makes the tart grow fonder.&lt;br /&gt;&lt;br /&gt;    Q: How do you play religious roulette?&lt;br /&gt;    A: You stand around in a circle and blaspheme and see who gets struck by lightning first.&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;And, my personal favourite, thus far (as I am a Lisp hacker):&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;    Lisp hackers have to be bound (to-do ‘it)&lt;br /&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1558324149520634678-5362922517529459604?l=nesv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nesv.blogspot.com/feeds/5362922517529459604/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://nesv.blogspot.com/2010/01/fortune.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/5362922517529459604'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/5362922517529459604'/><link rel='alternate' type='text/html' href='http://nesv.blogspot.com/2010/01/fortune.html' title='Fortune'/><author><name>indienick</name><uri>http://www.blogger.com/profile/12739388753406392673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-JrEjMfcwy5U/TazUpJds0BI/AAAAAAAAAT8/hAyqD2IWlwA/s220/2011-04-18-195657.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1558324149520634678.post-5815560943205097319</id><published>2010-01-09T13:40:00.000-05:00</published><updated>2010-01-09T13:41:24.694-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ion3'/><category scheme='http://www.blogger.com/atom/ns#' term='slackware'/><category scheme='http://www.blogger.com/atom/ns#' term='archived'/><title type='text'>Slacky McSlackerton</title><content type='html'>I’m grooving out to my seriously pared down Slackware 12.1 install. I skipped out for a bit, and went back to Debian, but got bored with it and - oddly enough - I found myself in many a fix where I would say, “Cheeeezz - where is that damn [conf] file…it was right here in Slackware…”&lt;br /&gt;&lt;br /&gt;Also, I’m loving the WXGA display not going to waste by using Ion3.&lt;br /&gt;&lt;br /&gt;I’ll post a screenshot, eventually.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1558324149520634678-5815560943205097319?l=nesv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nesv.blogspot.com/feeds/5815560943205097319/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://nesv.blogspot.com/2010/01/slacky-mcslackerton.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/5815560943205097319'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/5815560943205097319'/><link rel='alternate' type='text/html' href='http://nesv.blogspot.com/2010/01/slacky-mcslackerton.html' title='Slacky McSlackerton'/><author><name>indienick</name><uri>http://www.blogger.com/profile/12739388753406392673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-JrEjMfcwy5U/TazUpJds0BI/AAAAAAAAAT8/hAyqD2IWlwA/s220/2011-04-18-195657.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1558324149520634678.post-1914326195711251664</id><published>2010-01-09T13:39:00.000-05:00</published><updated>2010-01-09T13:40:26.236-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Richard M. Stallman'/><category scheme='http://www.blogger.com/atom/ns#' term='FSF'/><category scheme='http://www.blogger.com/atom/ns#' term='GNU'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='archived'/><title type='text'>FSF</title><content type='html'>As far as free software goes, there are at least two major camps and to be perfectly honest, neither of them cut it for me. The first camp, being proprietary, closed-source software and the other being “free”, open-source software.&lt;br /&gt;&lt;br /&gt;Bill Gates is the definition of closed-source, and Richard M. Stallman (RMS) is the antithesis; Gates is evil, and RMS is a whiny, kumbaya hippie.&lt;br /&gt;&lt;br /&gt;I like what RMS has done for the software industry in being a complainer and saying “fuck you” to the corporate fat-cats of the software world and showed how free (in every sense of the word) software is a viable alternative to the often-way-too-expensive corporately-sponsored solution. You want Microsoft Office, here, take OpenOffice.org instead (or KOffice, or the GNOME Office collection). I greatly like the idea of free software (both cost-wise and as described by the GPL), but I really frown upon the fanatics.&lt;br /&gt;&lt;br /&gt;Free software is great, but it’s prone to its shortcomings; in that there is no monetary pressure to release a stable product (in most cases), the software can be buggy beyond compare, but in the free-software-defense, you have the source code handy, so fix it, alert the developers and give yourself a pat on the back.&lt;br /&gt;&lt;br /&gt;There are some things RMS fights for that I want to slap him for:&lt;br /&gt;&lt;br /&gt;    * Owner-less projects; if I, single-handedly, wrote a piece of software, I want and deserve the full right to say “I wrote this.” If more than one person contributes to a project, needn’t you worry, I’ll be sure to tack their name on to the “Contributors” list. However, if they submit a single fix, I’m not going to give them more credit than they deserve; they will get a nice little “thanks for catching that”, and their name will be mentioned. End of story.&lt;br /&gt;    * No passwords; screw off. No, I’m not hiding anything in my data or user accounts that I would be embarrassed if people found, I just like a degree of privacy. No passwords on data equals no locks on doors; it is absolute stupidity.&lt;br /&gt;&lt;br /&gt;Those are just two examples, but RMS needs to get some things sorted out.&lt;br /&gt;&lt;br /&gt;I like the “GNU” name in the sense that “GNU’s Not UNIX”, but I am not a free-software fanatic. Linus Torvalds even admits to not running a 100% “free” shop; he is practical - if the tool works, use it - but he is a self-centered prick. Rightfully so, though. If I was pestered with dumb-ass questions about, “which desktop environment do you use?” I would be a prick, too. Linus answered that question though (he prefers KDE to GNOME, and proceeded to bash the GNOME camp). Don’t ever ask yourself “What would Linus do?” or, “What would Richard M. Stallman do?”…and for certain, never ask Linus or RMS what they would do, when it’s something as stupid and trivial as a desktop environment.&lt;br /&gt;What got me on this irrational tangent? Debian fanatics - “It’s gotta be 100% free software as defined by the GPL.” Some of these unofficial spokespeople sound like the use of non-free software kills little children in [insert name of third-world country]. The only free software I care about is the stuff that does not cost me any money, regardless of whether or not I can see the source code.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1558324149520634678-1914326195711251664?l=nesv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nesv.blogspot.com/feeds/1914326195711251664/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://nesv.blogspot.com/2010/01/fsf.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/1914326195711251664'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/1914326195711251664'/><link rel='alternate' type='text/html' href='http://nesv.blogspot.com/2010/01/fsf.html' title='FSF'/><author><name>indienick</name><uri>http://www.blogger.com/profile/12739388753406392673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-JrEjMfcwy5U/TazUpJds0BI/AAAAAAAAAT8/hAyqD2IWlwA/s220/2011-04-18-195657.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1558324149520634678.post-398024578070930169</id><published>2010-01-09T13:25:00.000-05:00</published><updated>2010-01-09T13:39:36.656-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sciencetech'/><category scheme='http://www.blogger.com/atom/ns#' term='slackbuilds'/><category scheme='http://www.blogger.com/atom/ns#' term='slackware'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='common lisp'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='archived'/><title type='text'>Slithering with a Speech Impediment</title><content type='html'>One of the things that has been detracting from my focus on OpenMIS, is some of the smaller programming projects I have taken on, or been assigned.&lt;br /&gt;&lt;br /&gt;At work, those of us who concerns ourselves with such, are - metaphorically - standing around the hospital bed, waiting for our server to bite the dust. The thing has been running for the past 4 or 5 years, everyday, non-stop. Nor was it an official “server” per se; it was purchased piece-by-piece, and custom-built by a previous employee. Currently, we are doing periodic backups onto a portable, USB drive. When the new server (which yours truly will probably be setting up) is implemented, I’ve written a Python script that just rsync’s the data to the portable drive. Now, in the event that any of us who know anything about computers quit or get fired, I decided to extend the script a little. Instead of requiring the user to know how to power up a Linux box, login and call my script, I figured to make it just that much easier. Have a secondary script running in the background, as a daemon, that gets loaded on boot. It will listen to DBUS (through DBUS’ Python bindings) waiting for that particular USB drive to get plugged in; I am trying to decide how I’m going to discern the drive from others - maybe by volume label? When the USB drive gets plugged in, my daemon will start up the primary script (I am ranking the scripts by function) which will perform the rsync dump. Once the file transfer finishes, the primary script will umount and sdparm the drive and I will get the PC speaker to make a noise (something unique) to let the person know that the dump has completed successfully and it is safe to remove the drive.&lt;br /&gt;&lt;br /&gt;It is a sweet project I have made for myself, here.&lt;br /&gt;&lt;br /&gt;Also, on a personal note, since switching to Slackware (which I very much enjoy) since most of the tools that are usually available to other such Linux distributions (even Debian has a warm-and-fuzzy feeling to it, when in comparison) are not available in Slackware, I have taken to writing my own. A few administration scripts that are provided with Slackware include TGZ package handling (without dependency checking, mind you), a script to set your default X window manager and a slick script to set your console font (Sun 12×22 has my heart right now). I have taken to writing a bunch of my own scripts and am really liking it. In the event that Slackware packages can be created using the ever-so-cool SlackBuilds system, I have taken to writing a Common Lisp program (not just a single script) to manage, and install/remove, SlackBuilds. Doing this taught me, quite nicely, how to work with strings in Lisp; it is quite similar to C in this respect, but perpetually cooler.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1558324149520634678-398024578070930169?l=nesv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nesv.blogspot.com/feeds/398024578070930169/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://nesv.blogspot.com/2010/01/one-of-things-that-has-been-detracting.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/398024578070930169'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1558324149520634678/posts/default/398024578070930169'/><link rel='alternate' type='text/html' href='http://nesv.blogspot.com/2010/01/one-of-things-that-has-been-detracting.html' title='Slithering with a Speech Impediment'/><author><name>indienick</name><uri>http://www.blogger.com/profile/12739388753406392673</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/-JrEjMfcwy5U/TazUpJds0BI/AAAAAAAAAT8/hAyqD2IWlwA/s220/2011-04-18-195657.jpg'/></author><thr:total>0</thr:total></entry></feed>
