<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Brad Conte &#187; My Projects</title>
	<atom:link href="http://bradconte.com/category/projects/feed" rel="self" type="application/rss+xml" />
	<link>http://bradconte.com</link>
	<description>Why know the ordinary when you can understand the extraordinary?</description>
	<lastBuildDate>Wed, 03 Feb 2010 16:48:11 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>LoginMSG</title>
		<link>http://bradconte.com/loginmsg.html</link>
		<comments>http://bradconte.com/loginmsg.html#comments</comments>
		<pubDate>Wed, 26 Nov 2008 03:36:06 +0000</pubDate>
		<dc:creator>Brad Conte</dc:creator>
				<category><![CDATA[My Projects]]></category>

		<guid isPermaLink="false">http://bradconte.com/?p=72</guid>
		<description><![CDATA[About

I wrote LoginMSG to address a very simple convenience that I was without in my day-to-day life in Linux, namely, a simple way to leave myself a one-time message for the next time I logged in.


Keeping to-do lists is one thing, but quick &#8220;first thing tomorrow&#8221; reminders are another. After writing my fair share of [...]]]></description>
			<content:encoded><![CDATA[<div class="section-title">About</div>

I wrote LoginMSG to address a very simple convenience that I was without in my day-to-day life in Linux, namely, a simple way to leave myself a one-time message for the next time I logged in.
<br /><br />

Keeping to-do lists is one thing, but quick &#8220;first thing tomorrow&#8221; reminders are another. After writing my fair share of such reminders, I got tired of going through post-it notes and decided to write a quick script that would allow me to automatically display myself a message the next time I logged in.
<br /><br />

Thus LoginMSG was born. LoginMSG is a simple shell script (less than 50 lines long) that stores a text message and displays it. You can add a message, append to the existing message, remove the message, and view the existing message. When you view the message, a simple, no-frills xmessage box is displayed center-screen with your message, allowing you to read it and then remove it or keep it.
<br /><br />

<center><img src="/files/projects/loginmsg/loginmsg-example.png" height="159" width="313" /></center>
<br /><br />

<div class="section-title">Download</div>

&bull; <a href="/files/projects/loginmsg/loginmsg">LoginMSG v.1</a> &#8211; <i>Jan 6, 2009</i>
<br /><br />

<div class="section-title">Usage</div>

<div class="code"> LoginMSG v.1 &#8211; Display yourself a message (the next time X starts)

 usage: loginmsg [ options ]

 &#8211;add MSG : Create a message with contents MSG, or
             append MSG to the existing message contents.
             Message contents are stored in ~/.loginmsg.
 &#8211;show    : Display the message.
 &#8211;remove  : Remove any existing message.</div>
<br /><br />

Place the script somewhere in your $PATH. Add (or append) a message from a terminal using &#8220;loginmsg &#8211;add&#8221;. To display any existing messages when you login, have your desktop environment run &#8220;loginmsg &#8211;show&#8221; when you log in. LoginMSG does not have a feature to make itself automatically start when a user logs in &#8212; you will have to see to that manually. There are many ways to do this. For example, in Gnome you could add it to the &#8220;Session&#8221; list in System -> Preferences -> Session. In Openbox, you could add it to ~/.config/openbox/autostart.sh. Reference the help pages for your specific desktop environment.]]></content:encoded>
			<wfw:commentRss>http://bradconte.com/loginmsg.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ArchLinux AUR Contributions</title>
		<link>http://bradconte.com/archlinux-aur-contributions.html</link>
		<comments>http://bradconte.com/archlinux-aur-contributions.html#comments</comments>
		<pubDate>Sat, 27 Sep 2008 21:16:57 +0000</pubDate>
		<dc:creator>Brad Conte</dc:creator>
				<category><![CDATA[My Projects]]></category>

		<guid isPermaLink="false">http://bradconte.com/?p=64</guid>
		<description><![CDATA[I&#8217;m a user of ArchLinux, a lightweight and flexible Linux distribution that tries to Keep It Simple. 


There are thousands of packages officially maintained in Arch&#8217;s package repositories. However, to ensure the robustness and completeness of available packages, a supplementary user-administrated repository exists, where users can create and maintain their own packages. This is called [...]]]></description>
			<content:encoded><![CDATA[I&#8217;m a user of <a href="http://archlinux.org">ArchLinux</a>, a lightweight and flexible Linux distribution that tries to Keep It Simple. 
<br /><br />

There are thousands of packages officially maintained in Arch&#8217;s <a href="http://archlinux.org/packages/">package repositories</a>. However, to ensure the robustness and completeness of available packages, a supplementary user-administrated repository exists, where users can create and maintain their own packages. This is called the <a href="http://aur.archlinux.org">Arch User Repository</a>. The AUR allows users to add lesser-known packages that are not widely used enough to warrant maintenance time from an official developer, create spin-off packages of packages in the official repositories, contribute their own scripts, etc.
<br /><br />

I&#8217;ve made a few contributions to the AUR. To see them, I refer you to:<br />
&bull; <a href="http://aur.archlinux.org/account.php?Action=AccountInfo&#038;ID=6310">My AUR profile</a> <br />
&bull; <a href="http://aur.archlinux.org/packages.php?K=B-Con">My AUR List of Packages</a>]]></content:encoded>
			<wfw:commentRss>http://bradconte.com/archlinux-aur-contributions.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Simple Elegance &#8211; Openbox Theme</title>
		<link>http://bradconte.com/simple-elegance-openbox-theme.html</link>
		<comments>http://bradconte.com/simple-elegance-openbox-theme.html#comments</comments>
		<pubDate>Thu, 10 Jul 2008 02:30:48 +0000</pubDate>
		<dc:creator>Brad Conte</dc:creator>
				<category><![CDATA[My Projects]]></category>

		<guid isPermaLink="false">http://bradconte.com/?p=60</guid>
		<description><![CDATA[I&#8217;ve designed a theme for the Openbox window manager based on the principle of simplicity and clarity. 


I designed the theme because, shortly after my transition to Openbox, I was unable to find a dark theme that was (very) simple, had corners, and didn&#8217;t change the colors between active and inactive windows drastically. So I [...]]]></description>
			<content:encoded><![CDATA[I&#8217;ve designed a theme for the <a href="http://icculus.org/openbox/index.php/Main_Page">Openbox</a> window manager based on the principle of simplicity and clarity. 
<br /><br />

I designed the theme because, shortly after my transition to Openbox, I was unable to find a dark theme that was (very) simple, had corners, and didn&#8217;t change the colors between active and inactive windows drastically. So I set out to design my own. I originally started by modifying the standard &#8220;Syscrash&#8221; theme included by default in Openbox, but over time it became unrecognizable and I&#8217;ve seen fit to publish it. My theme still uses the four icons from Syscrash, however, because I&#8217;m no graphics artist.
<br /><br />

I call my theme &#8220;simple&#8221; because it uses only three colors and has corners. I call it &#8220;elegant&#8221; because it blends the colors in simple, consistent, and distinct ways. It&#8217;s easy on the eyes, but it&#8217;s smooth and not boring. Simple, yet elegant.
<br /><br />

There are two variations of the theme, differentiated by their primary color. Both have a gray secondary color with blue accenting. Both are hosted at <a href="http://box-look.org">box-look.org</a>.
<br /><br />

&bull; <a href="http://www.box-look.org/content/show.php?content=84923">The <b>black</b> version can be found here</a>. <br />
&bull; <a href="http://www.box-look.org/content/show.php?content=84924">The <b>dark gray</b> version can be found here</a>.
<br /><br />
]]></content:encoded>
			<wfw:commentRss>http://bradconte.com/simple-elegance-openbox-theme.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PCManFM Patch &#8211; Confirm Delete</title>
		<link>http://bradconte.com/pcmanfm-patch-confirm-delete.html</link>
		<comments>http://bradconte.com/pcmanfm-patch-confirm-delete.html#comments</comments>
		<pubDate>Sun, 18 May 2008 04:30:35 +0000</pubDate>
		<dc:creator>Brad Conte</dc:creator>
				<category><![CDATA[My Projects]]></category>

		<guid isPermaLink="false">http://bradconte.com/?p=58</guid>
		<description><![CDATA[Update 6-30-08 (PCManFM v4.5): 
As of v4.5, PCManFM started to add an integrated feature to disable delete confirmation, fullfilling the goal of this patch. (The upcoming official feature appears to disable confirmation when a trash can is used.) This new feature does not yet fully work but the code is similar to the patch. Since [...]]]></description>
			<content:encoded><![CDATA[<span style="color: red">Update 6-30-08 (PCManFM v4.5):</span> <br />
As of v4.5, PCManFM started to add an integrated feature to disable delete confirmation, fullfilling the goal of this patch. (The upcoming official feature appears to disable confirmation when a trash can is used.) This new feature does not yet fully work but the code is similar to the patch. Since the author has not seen fit to activate the feature and is clearly working on it, I do no anticipate releasing patches to work with any version beyond v4.3.
<br /><br />

<div class="section-title">About</div>
<img align="right" src="/files/projects/pcmanfm-conf_del/pcmanfm-conf_del.png" width="418" height="336" alt="The patched preferences menu" title="The patched preferences menu with delete confirmation turned off" />
This patch adds the option to enable/disable delete confirmation in <a href="http://pcmanfm.sourceforge.net/">PCManFM</a>, a popular, light-weight, tabbed file browser. Default behavior in PCManFM is to always prompt the user for confirmation when deleting a file (the classic &#8220;Are you sure?&#8221; prompt), a feature some find inconvenient. This patch adds an option to the Preferences menu that allows the user to select whether or not they wish to be prompted on deletion. 
<br /><br />

To the right is what the Preferences menu looks like after the patch. (The dark colors are due to my GTK theme, they have nothing to do with the patch.) <br />
</center>
<br /><br />

<div class="section-title">Download</div>
Patch version: v2 (June 26, 2008) <br />
Last tested against: PCManFM v0.4.3 <br />
&bull; <a href="/files/projects/pcmanfm-conf_del/pcmanfm-conf_del_patch.tar.gz">Download</a> &bull;
<br /><br />

<div class="section-title">Applying the Patch</div>
Applying the patch is simple. First download and extract the PCManFM code. Then apply the patch to the source. Either:
<br /><br />
&#8230;from the parent directory with:
<div class="code">$ ls
pcman-0.4.1.1   confirm_delete.patch
$ patch -p0 < confirm_delete.patch
</div>

&#8230;or from the actual source directory with
<div class="code">$ ls
AUTHORS      config.guess          libtool
COPYING      config.h              ltmain.sh
ChangeLog    config.h.in           missing
INSTALL      config.log            mkinstalldirs
Makefile     config.status         pcmanfm.desktop
Makefile.am  config.sub            pcmanfm.desktop.in
Makefile.in  configure             pcmanfm.png
NEWS         configure.in          please_read_README_carefully_before_packaging
README       confirm_delete.patch  po
TODO         data                  src
aclocal.m4   depcomp               stamp-h1
autogen.sh   install-sh
$ patch -p1 < confirm_delete.patch
</div>
You can then compile PCManFM with the standard:
<div class="code">$ ./configure
$ make
$ make install
</div>
<br />

<div class="section-title">Technical Notes</div>
Patching was pretty minimal, save for one file: pcmanfm-{$version}/data/ui/prefdlg.glade . In the original source, practically the entire XML UI design file is devoid of whitespace, including newlines (for optimization), which makes a nimble patch for it impossible, thus this entire file must be redistributed. This file holds the entire visual layout for the Preferences menu, thus the patched prefdlg.glade file will have to be updated whenever the official PCManFM package updates the Preferences menu layout (something unlikely to happen).
<br /><br />

Aside from that issue, since the editing was very simple and inline with the basic structure of the program itself, I see no reason why it shouldn&#8217;t work for on many PCManFM releases to come. (If things change, I&#8217;ll update the patch, though.)
<br /><br />

<div class="section-title">Automatic Installation</div>
Some OSs lend themselves to compiling from source very easily. If you use such an OS (Arch Linux, Gentoo, FreeBSD, etc) you may wish to write a script to apply the patch and rebuild the package. For Arch Linux, move the patch to your /var/abs/local/pcmanfm directory and add the patch to the PKGBUILD via:
<div class="code">$ cd /var/abs/local/pcmanfm
$ sed -i &#8220;s_cd\ \$startdir/src/pcmanfm-\$pkgver_cd\ \$startdir/src/pcmanfm\
-\$pkgver\npatch\ -p1<../../confirm\_delete.patch_g" PKGBUILD
</div>
I&#8217;m unfamiliar with Gentoo&#8217;s ebuild format, but I&#8217;m sure that modifying an ebuild would be similar.]]></content:encoded>
			<wfw:commentRss>http://bradconte.com/pcmanfm-patch-confirm-delete.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GDM Login Theme: Blue Fractal</title>
		<link>http://bradconte.com/gdm_blue_fractal.html</link>
		<comments>http://bradconte.com/gdm_blue_fractal.html#comments</comments>
		<pubDate>Sat, 15 Dec 2007 02:40:54 +0000</pubDate>
		<dc:creator>Brad Conte</dc:creator>
				<category><![CDATA[My Projects]]></category>

		<guid isPermaLink="false">http://test.b-con.us/projects/gdm-login-blue-beacon-fractal</guid>
		<description><![CDATA[Ever one to customize that which I use, I&#8217;ve take the time to design my own GDM Login Theme for the Gnome desktop manager for the X Window system.


My inspiration to create the theme actually started with the background image. I&#8217;m not graphics artist and I never create my own artwork beyond the simplest of [...]]]></description>
			<content:encoded><![CDATA[Ever one to customize that which I use, I&#8217;ve take the time to design my own GDM Login Theme for the <a href="http://gnome.org">Gnome</a> desktop manager for the X Window system.
<br /><br />

My inspiration to create the theme actually started with the background image. I&#8217;m not graphics artist and I never create my own artwork beyond the simplest of images, but I know when I see an image I like. The background I used for this theme is a blue-colored fractal from <a href="http://www.beautifulfractals.com/2007/10/31/37-this-is-a-dream-this-is-a-lie/">Beautiful Fractals</a>. The moment I saw the image, the center circle practically demanded that someone insert a user name prompt in it. So I did.
<br /><br />

The theme only comes with a background resolution of 1280&#215;1024. It scales nicely to fit other resolutions so I didn&#8217;t care to create separate themes for different resolutions. The original wallpaper, however, comes in many resolution sizes so it&#8217;s easy to modify it if you care to.
<br /><br />

E-mail me with any bugs and/or problems. No graphics requests, please, I can&#8217;t fulfill them. (And yes, the wallpaper itself is asymmetrically shifted by a couple pixels to the left.)
<br /><br />

This GDM theme is available <a href="http://www.gnome-look.org/content/show.php/Blue+Fractal?content=78797">Gnome Look</a>]]></content:encoded>
			<wfw:commentRss>http://bradconte.com/gdm_blue_fractal.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>My Notepad Info</title>
		<link>http://bradconte.com/my-notepad-info.html</link>
		<comments>http://bradconte.com/my-notepad-info.html#comments</comments>
		<pubDate>Wed, 29 Aug 2007 04:07:10 +0000</pubDate>
		<dc:creator>Brad Conte</dc:creator>
				<category><![CDATA[My Projects]]></category>

		<guid isPermaLink="false">http://bradconte.com/projects/my-notepad-info</guid>
		<description><![CDATA[My project &#8220;My Notepad Info&#8221; is an online notepad service and has a dedicated website: MyNotepad.Info. (Also accessible via MyNotepad.org.)


My Notepad Info is a free, online application for storing and retrieving notes. The goal of My Notepad Info is to provide users with an web-based convenient, keyboard-oriented notepad that can be smoothly be entered and [...]]]></description>
			<content:encoded><![CDATA[My project &#8220;My Notepad Info&#8221; is an online notepad service and has a dedicated website: <a href="http://mynotepad.info">MyNotepad.Info</a>. (Also accessible via <a href="http://mynotepad.org">MyNotepad.org</a>.)
<br /><br />

My Notepad Info is a free, online application for storing and retrieving notes. The goal of My Notepad Info is to provide users with an web-based convenient, keyboard-oriented notepad that can be smoothly be entered and exited to store and retrieve notes. Instead of e-mailing oneself notes or URLs to bookmark or read later, you can just save them in your notepad and retrieve them from another computer.
<br /><br />

I designed My Notepad Info because I was annoyed with having to e-mail myself links/notes and many other online notepads I found fell short of what I wanted. More <a href="http://mynotepad.info/about.php">information</a> is on the project&#8217;s website.
]]></content:encoded>
			<wfw:commentRss>http://bradconte.com/my-notepad-info.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Credit Card Number Generator</title>
		<link>http://bradconte.com/cc_generator.html</link>
		<comments>http://bradconte.com/cc_generator.html#comments</comments>
		<pubDate>Sat, 03 Mar 2007 21:52:28 +0000</pubDate>
		<dc:creator>Brad Conte</dc:creator>
				<category><![CDATA[My Projects]]></category>

		<guid isPermaLink="false">http://test.b-con.us/projects/credit-card-number-generator</guid>
		<description><![CDATA[

Generate Credit Card Numbers
 

 Visa &#160; (Length: 13: &#160;16:)

 Mastercard

 American Express

 Discover

Download: JavaScript source code.


About This Generator
First of all, let me make it clear what this generator is not. It is not a legitimate credit card number generator. It just produces numbers that will pass the initial credit card numerical testing. Numbers generated [...]]]></description>
			<content:encoded><![CDATA[<script language="javascript" type="text/javascript" src="/files/projects/cc-generator/cc-generator.js"></script>

<div class="section-title">Generate Credit Card Numbers</div>
<input type="button" onclick="cc_gen()" value="Generate CC Number - &gt;" /> <input type="text" value="" size="17" id="cc_num" readonly="readonly" />
<br />
<input type="radio" name="cardissuer" value="visa" checked="checked" /> Visa &nbsp; (Length: 13:<input type="radio" name="visa_length" value="13" /> &nbsp;16:<input type="radio" name="visa_length" value="16" checked="checked" />)
<br />
<input type="radio" name="cardissuer" value="mastercard" /> Mastercard
<br />
<input type="radio" name="cardissuer" value="amex" /> American Express
<br />
<input type="radio" name="cardissuer" value="discover" /> Discover
<br /><br />
<b>Download</b>: <a href="/files/projects/cc-generator/cc-generator.js">JavaScript source code</a>.
<br /><br />

<div class="section-title">About This Generator</div>
First of all, let me make it clear what this generator <b>is not</b>. It is not a <i>legitimate</i> credit card number generator. It just produces numbers that will pass the initial credit card numerical testing. Numbers generated by this script <i>could</i> be valid, since they conform to the general necessary numerical requirements, but statistically it&#8217;s near impossible to generate a valid card number by chance &#8212; the odds are literally trillions to one (against) of doing so. If you try to use one of the numbers generated here as an actual credit card number, it&#8217;ll get bounced the moment the card gets validated by the bank that supposedly backs it.
<br /><br />

Now, about what this generator <b>is</b>. Despite what it might look like, Credit Card numbers aren&#8217;t totally random strings of numbers. Ever wondered how online stores like Amazon.com can helpfully inform you if your credit card number is invalid when you make a typo? This is possible because all credit card numbers all conform to the <a href="http://en.wikipedia.org/wiki/Luhn_algorithm">Luhn algorithm</a>. The Luhn algorithm acts as a convenient way to catch almost all credit card number typos by subjecting numbers to a numerical test that a valid credit card number definitely will pass, but is unlikely a mistyped number will pass.
<br /><br />

All things considered, the Luhn algorithm is very simple, and it&#8217;s algorithmically trivial to generate a random number and tweak it so as to force it to pass the Luhn test and appear, at a glance, as a valid credit card number.
<br /><br />

To use the Luhn algorithm, start at the right side of the credit card number. Moving left, add the first digit to your running sum (which starts at zero), then double the second number and add that to your running sum. However, if the double of the second number yields a double digit number, separate the digits and add them separately, (ie, 16 becomes 1 and 6 and adds to 7). Continue this pattern of adding each number and doubling every other number for all digits in the card. Take the final sum and divide it by 10. In order to pass the Luhn test, the remainder must be zero (ie, the total sum must be a multiple of 10).
<br /><br />

Using this process, anyone who wants to validate that your credit card number is plausible, before they waste a day or two of both your time trying to process it, can easily do so. Statistically if you make a mistake typing your credit card number you will not enter a number that passes the test. If you make a mistake on just one of the numbers you cannot have a valid credit card number because the total must be a multiple of 10, and no one digit can be 10 off from itself without being equivalent to itself modulo 10, thus your mistake must include at least two numbers. But although you likely will not accidentially generate a valid incorrect credit card number, it&#8217;s not hard to custom tailor a number to pass the Luhn test. 
<br /><br />

Two facts make it easy to generate a number that passes the Luhn test: The final sum of the number string must be a multiple of 10, and the last digit of the number is never doubled. Thus the final number can be custom tailored to the rest of the number to force the sum to be a multiple of 10. My script (above) does just this, it generates random numbers right up to the last digit, calculates the sum using the existing digits, then tacks onto the end whatever number is necessary to force the sum to a multiple of 10. (Actually, the first couple numbers are dictated by the specific credit card vendor you want to use, since they all have their own blocks of numbers they&#8217;re allowed to use.) This process isn&#8217;t far from how banks generate the credit card numbers themselves, they start the card with their allocated first number(s), then pad the number to a certain length with random digits, then create and append the card&#8217;s account number, which fills up the card to the very last digit, which is then chosen specifically to make the card pass the Luhn test.
<br /><br />

At the top of this page is my credit card number generator, written in JavaScript. It will generate card numbers that pass the Luhn test and fall into the numerical category of the vendor you choose, with the appropriate card number length. But, again, these are not valid credit card numbers, they simply pass typo testing. You can validate that these cards pass the Luhn test by putting them through the test form <a href="http://www.brainjar.com/js/validation/default2.asp">here</a>. You can read more about credit card numbers <a href="http://www.merriampark.com/anatomycc.htm">here</a>.]]></content:encoded>
			<wfw:commentRss>http://bradconte.com/cc_generator.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
