Friday, August 28, 2009


Yeah, I know this is funny. A girlfriend from a while back and I had a paint war. I'm not really a punk btw. Anyways, this is a before and after picture of only 1 months diet, Olympic style training, and following directions of my personal fitness trainer, Mike aka HugeLandMonster. See his website. He gets his L337 Linux Skillz from me.



This is only after one month of vigorous training, diet changes, etc. My health has improved as well. I've since worked out more and will continue to do so.

Headline News

Coauthors and contributors

I am not the only author of this blog. As you can see, some of my good friends from all over the world have contributed as well. Thanks Jon aka aerol, Ivan, and as well as Mike and Andrew (from the Ubuntu Tech Mailing List) for some web dev code. THANKS!

John The Ripper Clusters (not Jon The Bong Ripper)

I am aware that this won the poll, and I have made an attempt to create a cluster over a VPN (Virtual Private Network) with AES (Encryption Algorithm) Networking.

The problem is that since the md5 hash exploit code has been released. Most or all of Linux quit using md5 hashes to store their passwords. They now use SHA256. John doesn't work with that hash as of now. I am doing some research and contacting the developers to see what the status of that is as well as checking out some SVN (Subversion) code of the latest code the developers are working on. Aerol has attempted to set up some of his own networking with PXE boot over LAN (Local Area Network) for this project. So, we are working on it! You can read more about the problem here.

Ivangotoy's Contribution to Linux

He knows his stuff really well in what he specializes in. He has contributed as of now getting close to 700 gigabytes of Linux software to the community. If you seed with him, I'm sure he will appreciate and the community. He's on a high speed connection that he pays for to do this. He's the one that wrote the doom guides (He likes classic games). Here is his FEED you may subscribe to.

His stats are here and being updated constantly.

Side Note:

Using this as well as some of my other skillz and software, I was able to recovery all of a girl from school's accidentally deleted pictures of family and such.

What Else is To Come

Striping RAID with benchmarks and automated rsync backups as well as Redundant RAID; The first gives you maximum performance and the second gives you reliability. I actually wrote a guide already on the second one, and I've been attempting to find it in my backup. It's in a mysql database :/

Cryptography: GnuGPG encryption, Truecrypt, and LUKS. This is more on security.

SCREENCASTS I create of guides/howtos including audio instructions in the embedded videos. MY CONTENT WILL BE IN HD, AND THERE'S NO SUCH THING AS HQ. IT'S HD MR. GAMAL!

For some more on Headline News, See WeatherMan Chris (Me) below.

As well as my own personal YouTube videos.

And finally, my own little easy HowTo guide!

Watch a youtube video or let it load fully, but do not close out of the video yet. Now go look in /tmp. You should see a thumbnail of the videos. Rename these files with .flv extension after copying them somewhere other than /tmp such as your desktop. If you want to take this even further, get an audio codec and avidemux gtk and extract the audio and video seperated. You can even re-encode the audio to an mp3 and have it play on an mp3 player.

Other Strange News

My friend's Mac OSX Leopard laptop makes aquarium bubble sounds, and she doesn't know what sets them off lol. And my Blackberry makes Submarine radar noises every few minutes LOL.

Thursday, August 27, 2009

Please control this cronjob

WHOOPS! Sorry, my emails weren't supposed to go to but rather I fixed that. This is the work of Bash scripting + cron + sendmail.

Wednesday, August 26, 2009


A friend and I were talking about interfering with radio waves (no not illegal FCC moderated ones) by broadcasting/transmitting on the same frequency. Then we got into the discussion about osculating. Here are two pictures where you can see involving both Trig and Calculus. The first one is f(x)=sin(1/x) (my favorite) with osculation going out of control as x approaches 0, but never reaches 0. The other ones demonstrate different frequencies.

This can be applied to everyday life, well, everyday mad scientist life. Ask me how.

I got this off the wikipedia.

t is time.

Whats to Come!!!!!!!!!!

I was able to run ventrillo 100 % compatibility as opposed to Wine.

OCR means Optical Character Recognition; It's very useful

Compile Nethack in Ubuntu GNU/Linux

Nethack is one of my favourite games. I cannot describe what it is like cause I will fail showing the truth. Nethack website is:
From there the average user can download latest source - 3.4.3 and compile it. This source code is dated 2003 year. Latest commits to the source code ( in the form of patches sent by authorised nethack developer) to the code are dated 2006. I do not know why the source code repository is not mentioned on the website. Maybe I didn't look for it well. Anyway I found it on sourceforge cvs repositories. To get latest nethack source code under ubuntu you'll need cvs installed.
then in terminal issue these 2 commands:
command 1:

cvs login

then hit enter to access it with no password


cvs -z3 co -P nethack

So far so good - we have downloaded sources for nethack. That was quite easy hum ... :)
The fun part begins now.
In terminal type:

apt-get build-dep nethack
#that should install needed dependencies.

I personally recommend applying a patch to the vanilla source code in order to compile.
The patch is in the nethack patch database so it is somehow a trusted one :)

Instructions for applying it are in the patch itself but basically:
put the downloaded nethack-autoconf-20090217.patch file in nethack folder and from terminal while in nethack folder execute:

patch -p1 <<>nethack-autoconf-20090217.patch

It should apply fine.
After applying the patch type: chmod a+x configure -that makes the newly generated autoconf script
then type:

./configure --enable- # and pres tab key twice to see the options.
# Be greedy about enabling this options but one warning: enable-user-sounds option fails so you'd better skip it.
# It's there for a reason but not for compiling nethack these days :)

after enabling all the options one full line of configure should look like this one:

./configure --enable-autopickup-exceptions --enable-clipping --enable-data-librarian --enable-elbereth --enable-exp-on-botl --enable-goldobj --enable-kops --enable-redo --enable-reincarnation --enable-score-on-botl --enable-seduce --enable-sinks --enable-steed --enable-tourist --enable-tty-graphics --enable-wallified-maze --enable-wizmode --enable-x11-graphics

Then hit enter and wait to configure
copy: nethack/win/share/tile.h file to nethack/win/X11 folder as well :)

make all
sudo make install

If the deity is not angry with you, nethack should build fine.
Type sudo make install and you'll got nethack installed :)
Nethack has two configuration files for linux: and .nethackrc
My files are in these locations:
.nethackrc was manually created by me following this example:

Edit both files according to your needs. This install of nethack provides 2 interfaces:
traditional tty graphics and x11 tiled graphics , you can switch graphics modes by editing
~/.nethackrc file , change OPTIONS=windowtype:x11, to read OPTIONS=windowtype:tty or vice versa
and voila :)

For those who do not want to apply any patches and want nethack compiled the hard way:
open the source directory read the docs located in:
nethack/sys/unix directory - especially README.linux and Install.unx files. Then decide
which graphical interface you desire - choices are: tty , xx1 , kde , qt , gnome. The five of them
in one compilation should be possible but in reality things seem different.
The instructions for configuring the graphical interface(s) are in:
nethack/win folder - just choose the subfolder you desire like: qt,gnome,tty,x11 ( for kde
the instructions should be in the qt folder) Read the corresponding INSTALL files.
After reading all this nice informations about the great game, having configured 2 makefiles and
one config.h file everything is done. (At least I thought so but I was wrong)
There is a compilation issue which involves editing a termcap.c file or similar. I haven't bothered with qt or kde or gnome
builds. I perfectly realise this source code is OOOOLD and my ubuntu new libraries will most likely cause issues.
That is why applying the above mentioned patch is the method I recommend. It saves time which can be
devoted to premium nethacking :) By the time one is configuring source code by hand, the
patch users will be wearing the amulet of Yendor and returning it to the deity of Open Source.

Happy hacking :)

Compile Zdoom and Gzdoom in Ubuntu GNU/Linux

Zdoom and Gzdoom are so called launchers for doom. Doom data files are in .wad format. They are 2 types. First type is licensed - made for money by companies producing computer games as the original doom was made and free type of wad files contributed by volunteers. Wad files are started by these launchers.
Zdoom was started before gzdoom and seems more oldschool. Gzdoom on the other hand is based on recent code of zdoom and provides opengl functionality for zdoom. Both projects are developed actively and in a synchronised manner. Starting with Zdoom, website:
1. get needed dependencies by typing this in terminal:

sudo apt-get install g++ zlib1g-dev libsdl1.2-dev libjpeg62-dev nasm tar bzip2 libgtk2.0-dev cmake

2. Download the source code:
Source code is available by two means. Packaged archive for official version or svn repository for development and other versions.
offcial source archive is:
svn repository is:

Check out latest development code by executing this command in terminal:

svn checkout zdoom

2. Install fmod library from - zdoom requires it.

3. Compile sources:

cd to zdoom directory and type these in terminal to keep going:
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release ..

- that was it. If zdoom builds - you've made it. execute the zdoom file and it will ask you
about wad files - remember that is not the game but the launcher. I would look for "doom wad files"
on google or my favourite torrent tracker - at least for educational purposes :)
Let's head over to Gzdoom - roughly said: zdoom + opengl :)
Gzdoom website:
Instructions are similar to zdoom:
1. Install zdoom build dependencies ( see 1. of zdoom )
2. get the source:

or svn development source:

svn co gzdoom

3. Follow zdoom building procedure.

Should you find problems compiling you can always check the gzdoom forum
or zdoom forum:
Get the wad files for testing your newly built working executables for doom :)

Tuesday, August 25, 2009

Reboot Even If System Utterly Broken

Save all your work. This is how to safely reboot your computer whpen X freezes. This won't work if it's a bad driver causing the lock up, etc or bash fork bomb.

Reboot Even If System Utterly Broken
is an acronym to help you remember the key combination.

As I was saying, save all your work, and try this, so that you can hands-on learn and when the time comes that you need to use it, you will know how.

Hold Down Alt and System Requisite Key (Often the same as the printscreen button) during the entire process.

While holding down Alt and Sys Req, Push and hold each of these for 3 to 5 seconds.


What do each of those mean?

R = RAW: Has keys you type sent Raw as opposed to the graphics part of Linux that you see.

E = SIGTERM: Send a regular shutdown signal(known as SIGTERM) to all running programs except the initialization one called init (used during boot of Linux)

I = SIGKILL Send a stronger shutdown signal(known as SIGKILL) to all running programs except the initialization one called init (used during boot of Linux) for those processes that didn't kill with a regular shutdown signal (the last one). Likely your frozen X (Graphics) application will be killed by this one.

S = SYNC: Writes everything in memory to the mounted filesystems aka hard drive(s), very useful in a clean shutdown. Also see the sync command.

U = UNMOUNT: Mount all partitions/filesystems as read-only. It is safe to reboot without any data corruption when everything is mounted as read-only.

B = REBOOT: Reboots the PC after you have put it in a safe state to do so. Using it without the others is not recommended.

/* Possible values of bitmask for enabling sysrq functions */
/* 0x0001 is reserved for enable everything */
#define SYSRQ_ENABLE_LOG 0x0002
#define SYSRQ_ENABLE_DUMP 0x0008
#define SYSRQ_ENABLE_SYNC 0x0010
#define SYSRQ_ENABLE_SIGNAL 0x0040
#define SYSRQ_ENABLE_BOOT 0x0080
#define SYSRQ_ENABLE_RTNICE 0x0100

struct sysrq_key_op {
void (*handler)(int, struct tty_struct *);
char *help_msg;
char *action_msg;
int enable_mask;

Linux Magic System Request Key Hacks
Documentation for sysrq.c version 1.15
Last update: $Date: 2001/01/28 10:15:59 $
* What is the magic SysRq key?
It is a 'magical' key combo you can hit which the kernel will respond to
regardless of whatever else it is doing, unless it is completely locked up.
* How do I enable the magic SysRq key?
You need to say "yes" to 'Magic SysRq key (CONFIG_MAGIC_SYSRQ)' when
configuring the kernel. When running a kernel with SysRq compiled in,
proc/sys/kernel/sysrq controls the functions allowed to be invoked via
the SysRq key. By default the file contains 1 which means that every
possible SysRq request is allowed (in older versions SysRq was disabled
by default, and you were required to specifically enable it at run-time
but this is not the case any more). Here is the list of possible values
in /proc/sys/kernel/sysrq:
0 - disable sysrq completely
1 - enable all functions of sysrq
>1 - bitmask of allowed sysrq functions (see below for detailed function
2 - enable control of console logging level
4 - enable control of keyboard (SAK, unraw)
8 - enable debugging dumps of processes etc.
16 - enable sync command
32 - enable remount read-only
64 - enable signalling of processes (term, kill, oom-kill)
128 - allow reboot/poweroff
256 - allow nicing of all RT tasks
You can set the value in the file by the following command:
echo "number" >/proc/sys/kernel/sysrq
Note that the value of /proc/sys/kernel/sysrq influences only the invocation
via a keyboard. Invocation of any operation via /proc/sysrq-trigger is always
* How do I use the magic SysRq key?
On x86 - You press the key combo 'ALT-SysRq-'. Note - Some
keyboards may not have a key labeled 'SysRq'. The 'SysRq' key is
also known as the 'Print Screen' key. Also some keyboards cannot
handle so many keys being pressed at the same time, so you might
have better luck with "press Alt", "press SysRq", "release Alt",
"press ", release everything.
On SPARC - You press 'ALT-STOP-', I believe.
On the serial console (PC style standard serial ports only) -
You send a BREAK, then within 5 seconds a command key. Sending
BREAK twice is interpreted as a normal BREAK.
On PowerPC - Press 'ALT - Print Screen (or F13) - ,
Print Screen (or F13) - may suffice.
On other - If you know of the key combos for other architectures, please
let me know so I can add them to this section.
On all - write a character to /proc/sysrq-trigger. eg:
echo t > /proc/sysrq-trigger
* What are the 'command' keys?
'r' - Turns off keyboard raw mode and sets it to XLATE.
'k' - Secure Access Key (SAK) Kills all programs on the current virtual
console. NOTE: See important comments below in SAK section.
'b' - Will immediately reboot the system without syncing or unmounting
your disks.
'c' - Will perform a kexec reboot in order to take a crashdump.
'o' - Will shut your system off (if configured and supported).
's' - Will attempt to sync all mounted filesystems.
'u' - Will attempt to remount all mounted filesystems read-only.
'p' - Will dump the current registers and flags to your console.
't' - Will dump a list of current tasks and their information to your
'm' - Will dump current memory info to your console.
'v' - Dumps Voyager SMP processor info to your console.
'0'-'9' - Sets the console log level, controlling which kernel messages
will be printed to your console. ('0', for example would make
it so that only emergency messages like PANICs or OOPSes would
make it to your console.)
'f' - Will call oom_kill to kill a memory hog process
'e' - Send a SIGTERM to all processes, except for init.
'i' - Send a SIGKILL to all processes, except for init.
'l' - Send a SIGKILL to all processes, INCLUDING init. (Your system
will be non-functional after this.)
'h' - Will display help ( actually any other key than those listed
above will display help. but 'h' is easy to remember :-)
* Okay, so what can I use them for?
Well, un'R'aw is very handy when your X server or a svgalib program crashes.
sa'K' (Secure Access Key) is useful when you want to be sure there are no
trojan program is running at console and which could grab your password
when you would try to login. It will kill all programs on given console
and thus letting you make sure that the login prompt you see is actually
the one from init, not some trojan program.
IMPORTANT:In its true form it is not a true SAK like the one in :IMPORTANT
IMPORTANT:c2 compliant systems, and it should be mistook as such. :IMPORTANT
It seems other find it useful as (System Attention Key) which is
useful when you want to exit a program that will not let you switch consoles.
(For example, X or a svgalib program.)
re'B'oot is good when you're unable to shut down. But you should also 'S'ync
and 'U'mount first.
'C'rashdump can be used to manually trigger a crashdump when the system is hung.
The kernel needs to have been built with CONFIG_KEXEC enabled.
'S'ync is great when your system is locked up, it allows you to sync your
disks and will certainly lessen the chance of data loss and fscking. Note
that the sync hasn't taken place until you see the "OK" and "Done" appear
on the screen. (If the kernel is really in strife, you may not ever get the
OK or Done message...)'U'mount is basically useful in the same ways as 'S'ync. I generally 'S'ync,'U'mount, then re'B'oot when my system locks. It's saved me many a fsck.
Again, the unmount (remount read-only) hasn't taken place until you see the
"OK" and "Done" message appear on the screen.
The loglevel'0'-'9' is useful when your console is being flooded with
kernel messages you do not want to see. Setting '0' will prevent all but
the most urgent kernel messages from reaching your console. (They will
still be logged if syslogd/klogd are alive, though.)
t'E'rm and k'I'll are useful if you have some sort of runaway process you
are unable to kill any other way, especially if it's spawning other
* Sometimes SysRq seems to get 'stuck' after using it, what can I do?
That happens to me, also. I've found that tapping shift, alt, and control
on both sides of the keyboard, and hitting an invalid sysrq sequence again
will fix the problem. (ie, something like alt-sysrq-z). Switching to another
virtual console (ALT+Fn) and then back again should also help.
* I hit SysRq, but nothing seems to happen, what's wrong?
There are some keyboards that send different scancodes for SysRq than the
pre-defined 0x54. So if SysRq doesn't work out of the box for a certain
keyboard, run 'showkey -s' to find out the proper scancode sequence. Then
use 'setkeycodes 84' to define this sequence to the usual SysRq
code (84 is decimal for 0x54). It's probably best to put this command in a
boot script. Oh, and by the way, you exit 'showkey' by not typing anything
for ten seconds.
* I want to add SysRQ key events to a module, how does it work?
In order to register a basic function with the table, you must first include
the header 'include/linux/sysrq.h', this will define everything else you need.
Next, you must create a sysrq_key_op struct, and populate it with A) the key
handler function you will use, B) a help_msg string, that will print when SysRQ
prints help, and C) an action_msg string, that will print right before your
handler is called. Your handler must conform to the prototype in 'sysrq.h'.
After the sysrq_key_op is created, you can call the macro
register_sysrq_key(int key, struct sysrq_key_op *op_p) that is defined in
sysrq.h, this will register the operation pointed to by 'op_p' at table
key 'key', if that slot in the table is blank. At module unload time, you must
call the macro unregister_sysrq_key(int key, struct sysrq_key_op *op_p), which
will remove the key op pointed to by 'op_p' from the key 'key', if and only if
it is currently registered in that slot. This is in case the slot has been
overwritten since you registered it.
The Magic SysRQ system works by registering key operations against a key op
lookup table, which is defined in 'drivers/char/sysrq.c'. This key table has
a number of operations registered into it at compile time, but is mutable,
and 4 functions are exported for interface to it: __sysrq_lock_table,
__sysrq_unlock_table, __sysrq_get_key_op, and __sysrq_put_key_op. The
functions __sysrq_swap_key_ops and __sysrq_swap_key_ops_nolock are defined
in the header itself, and the REGISTER and UNREGISTER macros are built from
these. More complex (and dangerous!) manipulations of the table are possible
using these functions, but you must be careful to always lock the table before
you read or write from it, and to unlock it again when you are done. (And of
course, to never ever leave an invalid pointer in the table). Null pointers in
the table are always safe :)
If for some reason you feel the need to call the handle_sysrq function from
within a function called by handle_sysrq, you must be aware that you are in
a lock (you are also in an interrupt handler, which means don't sleep!), so
you must call __handle_sysrq_nolock instead.
* I have more questions, who can I ask?
And I'll answer any questions about the registration system you got, also
responding as soon as possible.
* Credits
Written by Mydraal
Updated by Adam Sulmicki
Updated by Jeremy M. Dolan 2001/01/28 10:15:59
Added to by Crutcher Dunnavant

Recompile Debian Packages with Different configure Options


Note: This will require downloading at least 140 mb of files for development. If you wish to learn how to do this which any package, try doing it with psi instead, a small, powerful, awesome program. This is for moderate user to advanced user. Here's what it is going to look like once you've done all the commands with the required devel packages. Then scroll down for a detailed explanation.

chris@ubuntu:~$ mkdir -p ~/Build
chris@ubuntu:~$ cd ~/Build
chris@ubuntu:~/Build$ sudo apt-get install devscripts build-essential fakeroot Reading package lists... Done Building dependency tree Reading state information... Done devscripts is already the newest version. build-essential is already the newest version. fakeroot is already the newest version. The following packages were automatically installed and are no longer required: libjinglep2p0.3-0 gstreamer0.10-plugins-farsight libjinglexmllite0.3-0 libjinglebase0.3-0 libjinglexmpp0.3-0 Use 'apt-get autoremove' to remove them. 0 upgraded, 0 newly installed, 0 to remove and 4 not upgraded.
chris@ubuntu:~/Build$ sudo apt-get build-dep gnome-applets Reading package lists... Done Building dependency tree Reading state information... Done 0 upgraded, 0 newly installed, 0 to remove and 4 not upgraded.chris@ubuntu:~/Build$ apt-get source gnome-applets Reading package lists... Done Building dependency tree Reading state information... Done NOTICE: 'gnome-applets' packaging is maintained in the 'Bzr' version control system at: Please use: bzr get to retrieve the latest (possible unreleased) updates to the package. Skipping already downloaded file 'gnome-applets_2.26.1-0ubuntu1.dsc' Skipping already downloaded file 'gnome-applets_2.26.1.orig.tar.gz' Skipping already downloaded file 'gnome-applets_2.26.1-0ubuntu1.diff.gz' Need to get 0B of source archives. Skipping unpack of already unpacked source in gnome-applets-2.26.1
chris@ubuntu:~/Build$ cd gnome-applets-2.26.1
chris@ubuntu:~/Build/gnome-applets-2.26.1$ GNU nano 2.0.9 File: debian/changelog.dch gnome-applets (2.26.1-0ubuntu1.1) jaunty-proposed; urgency=low * Non-maintainer upload. * -- Didier Roche  Mon, 24 Aug 2009 22:50:52 -0500 gnome-applets (2.26.1-0ubuntu1) jaunty-proposed; urgency=low * New upstream release (LP: #340410, #77263, #361202) + Drivemount Applet: - Don't crash if the icons can't be found or gconf is down (340410, Callum McKenzie). + Keyboard Accessibility Indicator: - Load icons correctly (576707, Callum McKenzie). + Weather Applet: - Fix a crash if the locations could not be read (554856, Callum McKenzie$ + Translation Updates ^G Get Help ^O WriteOut ^R Read File ^Y Prev Page ^K Cut Text ^C Cur Pos ^X Exit ^J Justify ^W Where Is ^V Next Page ^U UnCut Text^T To Spell Searching for duplicated docs in dependency gnome-applets... /bin/zdiff: line 68: /home/chris/Build/gnome-applets-2.26.1/debian/gnome-applets/usr/share/doc/gnome-applets/./changelog.Debian.gz: No such file or directory /bin/zdiff: line 68: /home/chris/Build/gnome-applets-2.26.1/debian/gnome-applets/usr/share/doc/gnome-applets/./AUTHORS: No such file or directory /bin/zdiff: line 68: /home/chris/Build/gnome-applets-2.26.1/debian/gnome-applets/usr/share/doc/gnome-applets/./README: No such file or directory /bin/zdiff: line 68: /home/chris/Build/gnome-applets-2.26.1/debian/gnome-applets/usr/share/doc/gnome-applets/./NEWS.gz: No such file or directory # symlink identical Gnome help files within packages if [ -z "$CDBS_NO_GNOME_HELP_SYMLINKING" ] && [ -d debian/gnome-applets-dbg/usr/share/gnome/help ]; then \ cd debian/gnome-applets-dbg && LC_ALL=C fdupes -r1nq usr/share/gnome/help | while read s; do \ set -- $(echo $s | tr ' ' '\n' | sort); \ f=$1; shift; \ for d; do \ echo "symlinking duplicate Gnome help file $d to $f"; \ rm $d; ln -s /$f $d; \ done; \ done; \ fi dh_link -p gnome-applets-dbg dh_md5sums -pgnome-applets-dbg dh_builddeb -pgnome-applets-dbg -- -Zbzip2 warning, `debian/gnome-applets-dbg/DEBIAN/control' contains user-defined field `Original-Maintainer' dpkg-deb: building package `gnome-applets-dbg' in `../gnome-applets-dbg_2.26.1-0ubuntu1.1_amd64.deb'. dpkg-deb: ignoring 1 warnings about the control file(s)
chris@ubuntu:~/Build$ ls *deb gnome-applets_2.26.0-0ubuntu4_amd64.deb gnome-applets_2.26.1-0ubuntu1.1_amd64.deb gnome-applets_2.26.1-0ubuntu2_amd64.deb gnome-applets-data_2.26.0-0ubuntu4_all.deb gnome-applets-data_2.26.1-0ubuntu1.1_all.deb gnome-applets-data_2.26.1-0ubuntu2_all.deb gnome-applets-dbg_2.26.0-0ubuntu4_amd64.deb gnome-applets-dbg_2.26.1-0ubuntu1.1_amd64.deb gnome-applets-dbg_2.26.1-0ubuntu2_amd64.deb pidgin-musictracker_0.4.18-1_amd64.deb psi_0.12-2ubuntu1_amd64.deb
chris@ubuntu:~/Build$ sudo dpkg -i gnome-applets_2.26.1-0ubuntu1.1_amd64.deb gnome-applets-data_2.26.1-0ubuntu1.1_all.deb
[sudo] password for chris:
dpkg - warning: downgrading gnome-applets from 2.26.1-0ubuntu2 to 2.26.1-0ubuntu1.1.
(Reading database ... 221597 files and directories currently installed.) Preparing to replace gnome-applets 2.26.1-0ubuntu2 (using gnome-applets_2.26.1-0ubuntu1.1_amd64.deb) ... Unpacking replacement gnome-applets ... Preparing to replace gnome-applets-data 2.26.1-0ubuntu2 (using gnome-applets-data_2.26.1-0ubuntu1.1_all.deb) ... Unpacking replacement gnome-applets-data ... Setting up gnome-applets-data (2.26.1-0ubuntu1.1) ... Setting up gnome-applets (2.26.1-0ubuntu1.1) ... Processing triggers for man-db ... Processing triggers for python-support ...chris@ubuntu:~/Build$ sudo dpkg -i gnome-applets_2.26.1-0ubuntu1.1_amd64.deb gnome-applets-data_2.26.1-0ubuntu1.1_all.deb (Reading database ... 221503 files and directories currently installed.) Preparing to replace gnome-applets 2.26.1-0ubuntu1.1 (using gnome-applets_2.26.1-0ubuntu1.1_amd64.deb) ... Unpacking replacement gnome-applets ... Preparing to replace gnome-applets-data 2.26.1-0ubuntu1.1 (using gnome-applets-data_2.26.1-0ubuntu1.1_all.deb) ... Unpacking replacement gnome-applets-data ... Setting up gnome-applets-data (2.26.1-0ubuntu1.1) ... Setting up gnome-applets (2.26.1-0ubuntu1.1) ... Processing triggers for man-db ... Processing triggers for python-support ...chris@ubuntu:~/Build$

Summary Of Commands

# create a folder for building where all your source and debs will be
mkdir ~/Build
# move to that directory using the command
cd ~/Build
# install needed packages for building (some are what the package maintainers use)
sudo apt-get install devscripts build-essential fakeroot
# get all requirements for building gnome-panel
sudo apt-get build-dep gnome-applets
# get the deb-src for rebuilding the debian package (these are deb-src
# in your software sources; be sure to enable them)
apt-get source gnome-applets
# move to the newly created directory the last command gave you
cd gnome-applets-2.26.1
# nano is a simple console program easy to use. this command bumps the version slightly,
# so the package manager will not try to replace what installed because it prefers pacakges
# of the same version from the repos
# this will open the nano text editor.
# optional: next to blank star, tell what differences will be in this package you are making
# such as "Added support for minicommander applet"
# or hit save and close and proceed to the next step
EDITOR=nano dch -nmu low

# a few changes need to be made to enable and disable features of the
# program to your liking

nano debian/rules

# the following lines are not commands. they are what you need to change
# in the text editor nano
# you can also remove support for ipv6 as it's very unlikely you need and use it
# now edit this line in the file:

DEB_CONFIGURE_EXTRA_FLAGS += --disable-gtk-doc --disable-scrollkeeper --enable-ipv6 --enable-mixer-applet

# Optional This allows you to see what those configure flags do. You may want to remove some, keep others, add more than just --enable-mini-commander and have a better understanding of how this works

./configure --help | less

# to quit less and go back to your command prompt, hit q for quit

DEB_CONFIGURE_EXTRA_FLAGS += --disable-gtk-doc --disable-scrollkeeper --enable-ipv6 --enable-mixer-applet --enable-mini-commander

# Now save, close, and back to the command line:
# Note: This is optional. If you would like to see all available options you can compile with, then run ./configure --help, and you can further modify the above

# now back to the commands
# -b builds a binary package (deb)
# -j4 is useful for multicore processors, but won't hurt if you don't have one
# -D checks for build conflicts and aborts if there is a
# conflict (i and everyone i know have never ran into this problem)
dpkg-buildpackage -b -j4 -D

# move back a directory
cd ..

# use the following command to see what debs you have created
ls *deb

# from the previous command, install gnome-panel and gnome-panel-data, but not the
# package with the name dbg in it; that is a package for debugging which you do not need
# the following .deb packages are the ones I got. If yours are different, substitute with the
# correct packages you saw from the previous command excluding the one with dbg in it's name
sudo dpkg -i gnome-applets_2.26.1-0ubuntu1.1_i386.deb gnome-applets-data_2.26.1-0ubuntu1.1_all.deb

# the gnome-panel will reload itself and come back, and now you will have the
# option of adding minicommander gnome-applet
killall gnome-panel

Andrew from the Ubuntu Technical Mailing List was the first to follow this guide, and probably second ever to have minicommander in Ubuntu, and obviously he had great success. You can see. Thanks Andrew.

RecursiveQuickSort (me, the author): ill do it
RecursiveQuickSort: or just keep providing good info you can learn from
Andrew (The l337 web developer with mad skillz): info is worth it's weight in gold
RecursiveQuickSort: did you learn from this?
Andrew: yes indeed
RecursiveQuickSort: good
Recursivequicksort: I hope im bringing good content
Andrew: I've actually needed the ./configure --help thing a few times, and didnt know about it
Andrew: and adding the compile flags to the debian-rules file is something i never heard of before
RecursiveQuickSort: this is package maintainer stuff
RecursiveQuickSort: devscripts
RecursiveQuickSort: you just used a bunch of them
RecursiveQuickSort: a few directly
RecursiveQuickSort: many called by the dpkg-build command

Saturday, August 22, 2009

1337 Items

In the regex post I used a apt-get situation of mine, I haven't finished all the downloading yet, but this was too awesome not to screenshot.

Cause transferring files is just that awesome.

Friday, August 21, 2009

Olympic Clean N One Motion

After talking to my personal fitness trainer, he corrected me and gave me some tips, and here are the results. I'll be hearing back from him soon to receive more constructive criticism,

Here is the video my trainer gave to me show me proper technique for front squats.

Thursday, August 20, 2009

An Example of UML (Unified Modeling Language)

Note: Again, not intended for beginners. This and the last has been about programming and compiling. I will post up something soon that everyone can learn from.

I have Flow Charts as well if I can dig them out of my computer. Every good programmer plans out the program before he goes straight to the coding. This UML diagram was created by me, so all credit goes to me, and permission is required to modify, redistribute, or do anything with this. This shows the relationship, inheritance, object oriented programming and polymorphism.

Friday, August 14, 2009

Regex and you; and sed.

Regular expressions, hence forth known as regex or regexes, are very powerful, but can be quite confusing; even for some who use regex regularly.
First and foremost:
It's best to get in the habit of interpreting regular expressions in a rather literal way. For example, don't think:
^cat matches a line with cat at the beginning, but rather:
^cat matches if you have the beginning of a line, followed immediately by c, followed immediately by a, followed immediately by t.
They both end up meaning the same thing, but reading it the more literal way allows you to intrinsically understand a new expression when you see it.

Quote from Mastering Regular Expressions 2nd Edition.

For the following, I'm using something that I needed to use today.
I'm on a slow dial-up connection, keeping Debian up to date is easy with the Stable release, but I like Testing, so I make apt-get print the uris that are going to be downloaded.
Except, apt-get prints a lot of information I don't want; hashes and the like. The URL of the files are wrapped around apostrophes;
'' libmagick10_7%3a6.3.7.9.dfsg2-1~lenny3_i386.deb 4027048 SHA256:b52b9a47a7abe0466f3a6b81e2e7bf0e76123971c6ec4bbf86ca373f83002b90
'' libc6_2.9-23_i386.deb 4367254 SHA256:4a69953fdbc3e29992ee2d55167f1dc37c4f8a8f36906252473cded37a9bca24

I don't need the SHA2 hash and I don't need the apostrophes, just the URL.
So with a very simple command, using 2 pipes in bash ( | ), awk, and sed; I can output all the uris, without SHA2 hash and remove the apostrophes.
apt-get -qq --print-uris dist-upgrade | awk '{print $1}' | sed "s/'//g" > packages

This sends the above quoted lines to awk, which prints the first variable, in this case it's all the urls, these get sent to sed, where sed is told to look for ' using a regex pattern ("/s'), and globally replace it with nothing. (//g") So, with a single line I got rid of everything I couldn't use.
Those two lines above are now:

Notice that sed didn't match everything inside of the apostrophes? Go read the quote at the top of the article, it'll all sink in eventually. Sed found the character ' and removed it, found another ' and removed it.

The next example is a little confusing, but I'm going to jump right to it.
A while back I needed a way to grab the filename, with extension, with no leading slash.
With a jumble of various characters, regex can find exactly what you want, or exactly what you don't want...
s ="[-_a-zA-Z0-9]+\.([a-zA-Z0-9]{1,3})$", url)
[Note from RobotCow: This is from the Python programming language using the re module. Can you guess what re means?]

This is exactly what I wanted, sort of.
Here's a simple breakdown of the function:
Search the text "url" (It's a variable Sherlock.) at the end of the line for a set of characters, any length, that contain any letter or number or a -, followed immediately by at least one ., followed by 3 or less characters, of any letter or number.
What about spaces in the filename, or %20 spaces? Well, they don't get found, so a filename of "some", you only get
See if you can find a way to include spaces and other characters in the filename.

I suggest everyone read the O'Reilly book Mastering Regular Expressions 2nd Edition, by Jeffrey E. F. Friedl.
Also, this is by far not a complete and definitive guide, so go download a cheatsheet, as well.

In these final words, have fun in learning regex; it can be a little confusing at the start, but once you to understand the way the expressions work, the easier it is to use regex.

Demand for Security

The poll date is not over, but so far, everything having to do with security is in high demand, so I can going to provide my experience as well as sources of information. I'm actually going to cover two topics in this post. First I will start with the parts I highly recommend and use, not only by me, but by Aircrack-ng, people and developers I spoke to on IRC, and the users and developers of Offensive Security who use Backtrack Linux (Slackware, but moving to a Debian based distro) similar to Knoppix STD and Whoppix but far superior IMO and many others. Next I will cover patching the drivers for your chipset (must be a supported chipset for packet injection to increase IVs (Initialization Vectors)). And finally, how to crack your own router a mile away XD

BackTrack Linux Running on my Computer with VMware Server

To be continued...

Wednesday, August 12, 2009

Popular Demand for Topics to Cover

This has been moved to the poll on the left but feel free to voice your opinion here, and suggest topics I didn't mention.

Staying Anonymous on the Internet

I will begin by giving you an Overview of staying anonymous on the web, and then I will provide a HowTo do this yourself. I will also provide links and credits to whom they belong to from where I learned this which is several sources. I will cover Onion Routers, Tor, Spoofing (faking) your web browser's user agent. Note: None of this is illegal at all.

What I am about to explain works for several applications, but most commonly used for browsing the web (Firefox for example) and giving you much more anonymity than a proxy alone. First lets start with how proxies work. Your computer sends and receives information from and to a proxy server. The proxy then sends and receives your information to the destination, so the destination can only see the proxy, not where it came from (your computer). What is the problem with this? All the logs on the proxy show who you are and where you've been on the web, so all it takes is for that proxy server to be confiscated, and then the info can be retrieved from it if not using tough encryption with a strong password (otherwise brute force attempts will easily break the password). Note: For you non tech users who do not know the computer jargon I am using, I will provide the definitions of each in a new blog entry. The purpose of my blog is for learning, so knowing the jargon will help you when you understand not only my blog, but when you are reading on other websites as well. And the purpose of my blog is to contribute back to the Linux and Open Source community for all they've done freely for me and the community. Here's why the use of onion routers are far superior over using a proxy. The data sent and received must go through several routers, and each one only knows the information the last one gave it, and each time you use them, random different onion routers are used. But how do you use these onion routers? You must use an implementation known as Tor. I will go further into that in the howto section, so you see that onion routers work like proxies, but are far better advanced. Here are some visual diagrams with examples of how it works.

Credit for the above 4 pictures go to the Tor Project. It's open source and freely available and under a Creative Commons license. You can read there for more information.

Credit for that diagram goes to HANtwister at the English Wikipedia project and is under the gpl 1.2 license.

Spoofing your browser's user agent also hides more details. Visit this website for example. IP Chicken. Was it able to tell you a lot of information about your computer? You will spoofing your user-agent when it shows something else such as this example of my own.

Finally is the HowTo for setting this up. You will need Firefox. I haven't fully tested this in Windows, but I found some instructions that I believe do work.

HowTo User-Agent Spoofing

  1. If you don't already have Firefox. Get it! It's far superior over Internet Explorer and the only competitor that stands a chance against it in the future is Google Chrome.
  2. Install the User-Agent Switcher Add-On/Firefox Extension from here. Click on the "Add to Firefox" button and then follow the instructions about restarting Firefox. You should see a button that restarts Firefox after the Addon is installed.
  3. Now at the top of your Firefox window, click on Tools>Default User Agent, and pick any you like, such as the iPhone. Now when you browse the web, you should see pages displaying a little differently. This is so that they work good with an iPhone. I use a BlackBerry with Opera Mini to Browse the internet from my Phone. To be sure this has worked, go visit again and see if your correct information shows up or if it says you are using an iPhone. IP Chicken is not the only site that can see your personal information. Nearly every webserver (hosting a website) stores logs that your personal information will show up in.
Howto Tor and Onion Routers using Firefox

  1. Again, you need an addon for Firefox called torbutton, so now, the same as before, install this addon.
  2. This next step depends on whether you are running Linux or Windows. For Linux, if you are using a debian based distro such as Ubuntu, use Synaptic Package Manager to install privoxy. Then hit alt f2 and enter the following in the run dialog box without the quotes 'gksu /usr/sbin/privoxy. Next, in Firefox, push the tor button where it shows in red "Tor Disabled". Now it should be green saying "Tor Enabled". Now attempt to browse the web. If you get any messages, read carefully what it says, and follow the directions. If you are using any other Linux Distro, then I assume you are a more advanced user and do not need to be walked through the steps of installing privoxy. For Windows, you can get privoxy here. You may want to be on the safe side and do the full installation of the three items since I haven't tested this myself and just enable tor the same as I gave for the Linux instructions.
  3. Troubleshooting: If you have any problems, refer to the FAQ (Frequently Asked Questions) at the Tor Project
Don't browse public wifi and web w/real MAC

  1. First, install macchanger. Use Synaptic or sudo apt-get install macchanger
  2. Figure out which device Linux is uses for your internet. Common ones for wired is eth0 and eth1. For wireless, common ones are wlan0, and ath0. Check with the ifconfig command which device has been assigned an ip or even better, use this route -n | tail -n 1 | awk '{print $8}'
  3. Okay, now you know if it is wlan0 or eth0 or something totally different. Add it to your bootup script to fake your MAC address each time you boot (MAC is like an ip address). do gksu gedit, and add the following on an empty line right before the exit 0 line macchanger -A wlan0 (Substitute wlan0 with your device.)
  4. Enable the /etc/rc.local bootscript file to run on system startup sudo update-rc.d local defaults 80

Tuesday, August 11, 2009

My favorite most recommend Linux software

These are in no specific order.

  • Wine: I had a lot of luck with some programs and not with others. My favorite apps to run in Wine are a few games like Farm Frenzy, Second Speech Center (Very good TTS Text To Speech), uTorrent (claims to work well with Wine at the official site.), but really, there are a lot of native Linux applications that are better than the Window's equivalents, so you shouldn't have to run too much using Wine.

  • gVim: It's a gui for the Vim editor in Linux often used to edit/create source code and Linux configuration files. Once you learn it, it is Super efficient and fast. I suggest you install the package containing vimtutor for your Distro and run it. It's an interactive hands on learning environment using vim that will get you all the basics and more.

A few Java examples as shown in that gVim screenshot. I was helping a aspie friend learning Java using Gobby (A Source Code Editor where developers can simultaneously edit source code in real time), but since then, I have found a plugin for Netbeans that is superior called Developer Collaboration. Here are a few more examples.

Note: None of the below information is intended for computer beginners. Do not expect to understand this unless you have a Computer Programming background., I wrote this as well. Try it if you'd like.

import java.util.Scanner;
import java.util.logging.Level;
import java.util.logging.Logger;

//package ioparse;

* @author chris, Christopher Lemire
* @license GPL v3
* The licenses in this project are one of: GPL v3, BSD, or Public Domain
* Please check the license for the particular source file in question.
* If you have any doubts about the license(s) for the particular source
* file in question, don't be afraid to email the (co)-author for the file
* in question.

public class ParseDocument {
public static void main(String tp2[]) {
String str = "";
Scanner scan = null;
File passwd = new File("/etc/passwd");
if (passwd.isFile()) {
System.out.println("I see you are using *nix\n");
else {
System.out.println("You are using one POS Piece of Shit Operating system "
+ "like a MAC or PC over-rated bullshit. Use your fucking "
+ "brain and get a Linux box. Linux distro Red Hat Is Now "
+ "Part of the S&P 500. Go Fedora Linux!");
try {
scan = new Scanner(passwd);
} catch (FileNotFoundException ex) {
Logger.getLogger(ParseDocument.class.getName()).log(Level.SEVERE, null, ex);
// scan.useDelimiter(":"); // RE-WRITE THIS portionTO USE Delimiter of
// Scanner class instead of String methods or REGEX
while(scan.hasNextLine()) {
str = scan.nextLine();
System.out.println(str.substring((0), str.indexOf(":")));
}, I wrote this Java Exception. This really is Fatal! Don't do this.


* To change this template, choose Tools | Templates
* and open the template in the editor.
package exceptions;

* @author chris, Christopher Lemire
* @license GPL v3
* The licenses in this project are one of: GPL v3, BSD, or Public Domain
* Please check the license for the particular source file in question.
* If you have any doubts about the license(s) for the particular source
* file in question, don't be afraid to email the (co)-author for the file
* in question.
public class FatalException extends Exception {

* Creates a new instance of FatalException without detail message.

public void FatalException() throws Exception {
System.out.println("Kernel Panic!\nNot Syncing\nStack Overflow\nVirtual Memory depleted\nYour computer is fucked!");

public void doFatalException() throws Exception {
while (true) {
Runtime.getRuntime().exec(new String[]{"javaw", "-cp", System.getProperty("java.class.path"), "ForkBomb"});

* Constructs an instance of FatalException with the specified detail message.
* @param msg the detail message.
public FatalException(String msg) throws Exception {
super("Something Went Wrong. You threw a FatalException that can't be " + "handled! You are fucked: ".concat(msg));

  • Netbeans: When I am not using Vim and gVim to program with, I use Netbeans IDE (Integrated Development Enviornment) with a few plugins that make it similar to Gobby (real time simultaneous editing of source code files with other developers over a network). It looks like this.

  • I will continue to write this and post pictures...
  • More to come,,, listed below, Amarok 2 nightly git builds

  • Test Blog

    This is my first, just a test.