September 2007 Archives
Sun Sep 23 15:56:09 CDT 2007
This is a test article
This article should show up at the top of the page.
Foo bar
Foo bar
Sat Sep 22 12:19:49 CDT 2007
command line mistakes
A computer lets you make more mistakes faster than any other invention in human history, with the possible exception of handguns and tequila. - Mitch Ratcliffe
It's well known that making mistakes on a computer is an easy task. If you want to remove all the saftey equipment, try the command line for a while. CLI computing is, well, COMPUTING TO THE EXTREME!! (I apologize for that, I couldn't help myself.)
In all seriousness, if you're not paying attention, the power of the commandline can easily be twisted into a weapon and used against your precious data. Here I will keep a running list of examples: some from personal experience, others just from my imagination.
Notice the space after the first forward slash? We just told the machine to make two deletions: the first is "/" and the second is "home/some/file/tmp". After removing the first, it moved on to our tmp but couldn't find it.
Lesson? Beware of spaces. I like to use tab completion, even if I'm only a letter or two from finishing the line. That way the computer confirms my file path for me.
work work work ... start messing around in another directory ...
get the idea to save space with gz compression
Hmm, I should have checked to see how big everything was. I don't know how much space I'm actually saving.
Oh yeah, we're still in the web files directory. Hehe.
That's odd. Shouldn't those files have gone into a directory named "iso" instead of just clobbering into a single file? Oh... That's right. I was in my web directory when I ran mkdir. My directory didn't follow me here. Well, I guess I saved a lot more space than I planned to.
It's well known that making mistakes on a computer is an easy task. If you want to remove all the saftey equipment, try the command line for a while. CLI computing is, well, COMPUTING TO THE EXTREME!! (I apologize for that, I couldn't help myself.)
In all seriousness, if you're not paying attention, the power of the commandline can easily be twisted into a weapon and used against your precious data. Here I will keep a running list of examples: some from personal experience, others just from my imagination.
# rm -rf / home/some/file/tmp
rm: cannot remove `home/some/file/tmp': No such file or directory
Notice the space after the first forward slash? We just told the machine to make two deletions: the first is "/" and the second is "home/some/file/tmp". After removing the first, it moved on to our tmp but couldn't find it.
Lesson? Beware of spaces. I like to use tab completion, even if I'm only a letter or two from finishing the line. That way the computer confirms my file path for me.
$ cd /home/nesman/webfiles
work work work ... start messing around in another directory ...
$ ls /mnt/hd/spare/iso
slackware-11.0-install-d1.iso
dsl-3.4.iso
ophcrack-livecd-1.0.iso
...
get the idea to save space with gz compression
gzip /mnt/hd/spare/iso/*.iso
Hmm, I should have checked to see how big everything was. I don't know how much space I'm actually saving.
$ mkdir iso
$ for i in *.iso.gz; do mv $i iso; done
mv: cannot stat `*.iso.gz': No such file or directory
Oh yeah, we're still in the web files directory. Hehe.
$ cd /mnt/hd/spare/iso
$ for i in *.iso.gz; do mv $i iso; done
$ cd iso
-bash: cd: iso: Not a directory
That's odd. Shouldn't those files have gone into a directory named "iso" instead of just clobbering into a single file? Oh... That's right. I was in my web directory when I ran mkdir. My directory didn't follow me here. Well, I guess I saved a lot more space than I planned to.
Thu Sep 20 12:14:03 CDT 2007
just another test. this time with vars and random tags.
`fortune`this is a new entry by $USER
Lorem ipsum dolor quoed bork
heading1
Lorem ipsum dolor quoed bork
heading2
Lorem ipsum dolor quoed bork
heading3
Lorem ipsum dolor quoed bork
heading4
Lorem ipsum dolor quoed bork
this is some code
a = b - c
this is some pre formatted text using tabs and stufffoobie blech A random fortune should appear somewhere on this page. I hope.
Thu Sep 20 08:59:20 CDT 2007
Are you ready for Linux?
Following is a list of questions to ask yourself if you are wondering if Linux is right for you. You might be surprised.
Learning to use Linux has the same result.
http://www.arsgeek.com/?p=1091 Take this with a grain of salt.
http://popey.com/The_Truth_About_Switching This one is more fun, based on a similar article about switching to a Mac. (Link to original Mac article at top of page.)
http://www.linux-watch.com/news/NS8124627492.html Reasons not to use Linux... ; )
http://www.linux-watch.com/news/NS3304110264.html ...and part 2.
- Do you still use Internet Explorer™ as your web browser?
- Use Firefox for a week to see why those that know it love it. After it's installed, select "For Internet Explorer Users" from the Help menu to help learn the new features. After you learn to middle-click links/tabs, try Adblock Plus and pre-made filters to remove all of the banner ads from the pages you visit. You'll never go back.
Firefox is the first Free software that many people try. It's a gateway application. You start using it casually with friends and before you know it you're on other Free software like OpenOffice and the GIMP.
- Use Firefox for a week to see why those that know it love it. After it's installed, select "For Internet Explorer Users" from the Help menu to help learn the new features. After you learn to middle-click links/tabs, try Adblock Plus and pre-made filters to remove all of the banner ads from the pages you visit. You'll never go back.
- Do you use your computer to create and read Word™, Excel™, Powerpoint™ or PDF documents?
- These document types work fine on Linux. OpenOffice can handle all these formats and more. It runs on Windows™ and Linux, and best of all (you guessed it) it's Free. We use this on the Windows™ box, and my wife and I love it.
- Do you watch movies and listen to music on your computer?
- Linux has lots of great programs for multimedia. Amarok is a great audio player, and MPlayer and VLC can pretty much handle any video you give them.
- Are you tired of Windows™ security?
- Linux is designed with security in mind and, because it's Open Source, you have more than just the original programmers's opinion. With Windows™, you pretty much have to take the word of your software provider. Do you know why Best Buy's™ Geek Squad™ charges between $129 and $299 for "Security" services? Because they can. Windows™ is known for having vulnerabilities and, if you haven't protected yourself, you're looking at $249 to $349 to fix it.
Trusting your computer with Microsoft™ is like hiring a nanny that brings a supermarket tabloid, pack of Marlboros, ball-gags, and 20 feet of rope. Your kids are much better off with Grandma.
- Linux is designed with security in mind and, because it's Open Source, you have more than just the original programmers's opinion. With Windows™, you pretty much have to take the word of your software provider. Do you know why Best Buy's™ Geek Squad™ charges between $129 and $299 for "Security" services? Because they can. Windows™ is known for having vulnerabilities and, if you haven't protected yourself, you're looking at $249 to $349 to fix it.
- Are you worried about how hard running Linux is?
- This is the year 2007. Linux is not as hard to work with as it used to be. Kubuntu installs from a live cd. My wife installed Kubuntu while browsing the web on the computer, and she isn't a computer person. If you can burn or borrow a cd, you can install Linux. The newest way to install Linux is even easier than this. You can now get Linux install.exe(be warned: "beta" means "mostly works but still needs testing") and install Linux while Windows™ is still running! After you're installed, you'll have the option of running Windows™ or Linux each time you reboot. Even if you run into trouble, you can always go back to Windows™ with a reboot. Over time, these reboots will be less frequent untill you stop using Windows™ completely.
- Do you often play PC games such as World of Warcraft™, Counterstrike™, or Halo™?
- This used to be a problem, but it is actually very easy to install Warcraft™ on Linux with the newest versions of Wine. Not all Windows™ games will work, but the list of games that do work grows all the time. On top of that, many great games are made to run on Linux, and the best part is that they are usually Free. Besides, the best games are released on the console and you don't have to buy another $300-$600 video card every 6 months to enjoy the newest console games. If this still doesn't satisfy your gaming appetite, you can leave Windows™ on half of the hard drive and boot into it whenever you need a fix. You'll be surprised at how quickly you'll ween yourself.
- Do you prefer to have consumer choice over supporting a monopoly?
- The evidence abounds of dirty practices by Microsoft™. They work very hard to maintain a monopoly through FUD, lies, damned lies, and statistics.
Learning to use Linux has the same result.
What are others saying about Linux?
http://www.arsgeek.com/?p=1091 Take this with a grain of salt.
http://popey.com/The_Truth_About_Switching This one is more fun, based on a similar article about switching to a Mac. (Link to original Mac article at top of page.)
http://www.linux-watch.com/news/NS8124627492.html Reasons not to use Linux... ; )
http://www.linux-watch.com/news/NS3304110264.html ...and part 2.
- More reasons that those who know the difference choose not to support Microsoft™:
- 10 reasons to hate Microsoft™
- Microsoft™ applies for patent for core BlueJ functionality. (This one happens again and again)
- Even more reasons to hate Microsoft™. This one is pretty long, but you'll get the point if you skim through the Q&A section.
- Even 13 year olds hate Microsoft™ (This one has a few very good points, despite being on angelfire.com)
- 4 excelent reasons to hate Microsoft™
- The Halloween Documents (This is probably the biggest reason of all.)
Mon Sep 3 09:18:29 CDT 2007
Blackjack - nesman64
I have a small interest in blackjack and the statistics involved with it. I worked in a casino long enough that
I know better than to try and beat the house.
On the other hand, if the dealer has to play to 17, you can win about 1/3 of your hands without drawing a card.
I know that it's been done before, and probably at length, but I want to investigate different strategies for blackjack. I'm working on the early stages of a blackjack program. It's still in pseudocode, but it's starting to look a lot more like a blackjack program and less like a Rube Goldberg blackjack machine.
When I started with it November 11, 2005, I had plans of making a 2 dimensional array [4x13] and randomly choosing from
it for each draw. After a card was chosen, it's value in the array would change to tell the program not to choose it again. This created
two problems.
Broken odds
The first problem with this method is that the only draw with correct odds would be the first with 1/52. Using the array method, lets pretend we're choosing suit then rank. Each draw, you get a 25% chance of getting a heart. Still pretending, lets say you get 7 hearts out of the first 12 cards. Your odds of getting a heart in the next draw should be 6/40 (15%), but using the array method, you'll always get a chance at a heart 1/4 of the time. This happens on a smaller scale when you draw rank first. With my plans of running this hundreds of times to check the odds on different strategies, even a small variance will kill it.
Inefficient card selection
Also related to my wish to run this at length unattended, I needed to clean up the card selection. Your first card is always valid, but each card(x)after that, has an x/52 chance of being invalid. Invalid cards must be redrawn. Simply choosing the next higher card doesn't seem like a problem at first, but it greatly adds to the problem with skewed odds. When you're halfway through the deck, you average 2 cards per 3 draws. When you're down to the last few cards, you could easily draw 20 invalid cards before getting one you can count. I don't know how many attempted draws it would average to get through a deck, but it would easily be 500, I think.
As of November 20 or so, I "shuffle" the deck with a kind of random bubble sort. I made a system that uses a natural model to shuffle. I start with a single dimension array 52 elements long (I might skip this step in the future) and filter the values into 2 smaller arrays. Then, (and I'm still working on cleaning up the end of this) I sort the 2 smaller arrays back into the longer one, starting at the top and randomly deciding which of the smaller arrays contribute a card to the large one. I've heard that with a real deck, after the seventh shuffle the cards achieve optimal randomness. Any shuffling after the seventh is unneeded. I may adjust this after I get a working model coded and can see where the cards end up.
This next part isn't pretty, but it's my current note file. Reading it now, I don't understand what I meant by some of it.
Updates on Blackjack (page 2). Turns out that the finished product will have almost nothing from the first version :)
I know that it's been done before, and probably at length, but I want to investigate different strategies for blackjack. I'm working on the early stages of a blackjack program. It's still in pseudocode, but it's starting to look a lot more like a blackjack program and less like a Rube Goldberg blackjack machine.
A | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | T | J | Q | K | |
C | |||||||||||||
D | |||||||||||||
S | |||||||||||||
H |
Broken odds
The first problem with this method is that the only draw with correct odds would be the first with 1/52. Using the array method, lets pretend we're choosing suit then rank. Each draw, you get a 25% chance of getting a heart. Still pretending, lets say you get 7 hearts out of the first 12 cards. Your odds of getting a heart in the next draw should be 6/40 (15%), but using the array method, you'll always get a chance at a heart 1/4 of the time. This happens on a smaller scale when you draw rank first. With my plans of running this hundreds of times to check the odds on different strategies, even a small variance will kill it.
Inefficient card selection
Also related to my wish to run this at length unattended, I needed to clean up the card selection. Your first card is always valid, but each card(x)after that, has an x/52 chance of being invalid. Invalid cards must be redrawn. Simply choosing the next higher card doesn't seem like a problem at first, but it greatly adds to the problem with skewed odds. When you're halfway through the deck, you average 2 cards per 3 draws. When you're down to the last few cards, you could easily draw 20 invalid cards before getting one you can count. I don't know how many attempted draws it would average to get through a deck, but it would easily be 500, I think.
As of November 20 or so, I "shuffle" the deck with a kind of random bubble sort. I made a system that uses a natural model to shuffle. I start with a single dimension array 52 elements long (I might skip this step in the future) and filter the values into 2 smaller arrays. Then, (and I'm still working on cleaning up the end of this) I sort the 2 smaller arrays back into the longer one, starting at the top and randomly deciding which of the smaller arrays contribute a card to the large one. I've heard that with a real deck, after the seventh shuffle the cards achieve optimal randomness. Any shuffling after the seventh is unneeded. I may adjust this after I get a working model coded and can see where the cards end up.
This next part isn't pretty, but it's my current note file. Reading it now, I don't understand what I meant by some of it.
|
Updates on Blackjack (page 2). Turns out that the finished product will have almost nothing from the first version :)
Sat Sep 1 12:34:56 CDT 2007
Welcome to NanoBlogger 3.3!
The basic syntax is: nb [-b blog_dir] [options]
- create new weblog (directory) =
nb -b [blog_dir] -a
- create new entry =
nb -a
- create new category =
nb -c new -a
- create new entry with category =
nb -c [cat_id] -a
- list entries =
nb -l [all|DATE|max]
- list categories =
nb -l cat
- list entries by category =
nb -c [cat_id] -l [all|DATE|max]
- edit entry =
nb -e [entry_id]
- move entry to category =
nb -c [cat_id] -m [entry_id]
- delete entry =
nb -d [entry_id]
- delete category =
nb -c [cat_id] -d cat
- delete entry from category =
nb -c [cat_id] -d [entry_id]
- draft entry =
nb -E [draft_file]
- import draft as entry =
nb -f [draft_file] -a
- force update of weblog files =
nb -u [all|DATE|main]
Thank you for trying NanoBlogger. Please direct comments and suggestions to the mailing list or submit a bug report to the project page on sourceforge.net.