Tips and Tricks About Computers, Web Development, Linux, the Internet and the Like
Linux
Bash script to convert pngs to jpgs, thumbnail them and generate forum code
Aug 11th
I’ve been working on a tutorial for Nexuiz Ninjaz that requires a lot of screen shots. I’ve been utilizing the command line tool scrot to take screenshots on specific windows. These images however, are large pngs because the scrot date pattern wasn’t working properly when I tried to generate jpgs while repeating the same command. I went forward knowing I could find a way to batch compress these pngs later. Figuring I might as well “add a turbo while I’m under the hood”, I opted to both thumbnail the images (duh) and generate the forum thumbnail code (VROOOM).
So, to convert pngs to jpgs, I created a bash script which uses mogrify to convert, compress and thumbnail them and sed to assist in generating the forum code.
#!/bin/bash
#
# Convert pngs to jpgs, thumbnail them and generate forum code
# Created by Tyler Mulligan - www.doknowevil.net
condir=converted
if [ ! -d $condir ];then mkdir -p $condir;fi
pagename="http://www.nexuizninjaz.com/pics/howtos/map_link_a_ninja/"
# Convert to jpg and create thumbnails
echo -e "backing up originals...\n"
cp *.png originals
echo -e "converting to jpg...\n"
mogrify -format jpg *.png
echo -e "copying to converted directory...\n"
cp *.jpg $condir
echo -e "creating thumbnails...\n"
mogrify -resize 50% *.jpg
for file in *.jpg ; do mv $file `echo $file | sed 's/\(.*\.\)jpg/thumb_\1jpg/'` ; done
mv *.jpg $condir
echo -e "cleaning up\n"
rm *.png
# Generate forum code
for file in $condir/thumb_*.jpg ; do
tempname=`echo $file | sed 's/thumb_\(.*\)/\1/'`;
echo "[url=${pagename}${tempname}][img]thumb_${tempname}[/img][/url]"
done
Future plans call for adding flags to support different image types, and including the ability to take screen shots and generate the forum code on a per screen shot basis.
Sorta Off Topic: I’ve taken a swing at frameworks be developing a new layer of organization on top of cfg files in nexuiz. I’ve thoroughly documented this scalable, fully customizable package I’ve dubbed the Ninja Pack for Nexuiz
Geany, the Almost Notepad++, Improved gedit with a Few Extras That Make You Smile
Jul 21st
I was browsing around linuxappfinder.com today and came across Geany, which I’ve already gotten quite comfortable with.
Some features I found that make it similar to notepad++
- The hotkeys are very similar if not identical to notepad++ (gedit has different ones)
- It supports regex find/replace
- It supports ‘find in files’ – by using grep
- It’s a lightweight and efficient IDE
Some features Geany has that notepad++ doesn’t
- Status window with a history
- Scribble pad
- Built in terminal
- Color picker
- Support for projects
- Tight integration with my window manager
- The functions menu is expanded to contain all sorts of clever information that I can fold in a non buggy tree
Some features notepad++ has that geany doesn’t
- TextFX (neat macros that help you with string related pattern updates)
- GUI for changing theme colors
- Tabbed find/replace and find in all (nit pick)
Why I’m quickly choosing Geany over Notepad++
With tight integration with gnome (as opposed to notepad++ which I have to run through wine) and a package of dark themes which I was able to find quickly through the Geany’s FAQ.
I haven’t tried it on Windows yet but I’d imagine it’d run pretty well.. though you are missing out on a lot of things you can take advantage of in linux. If you’re a windows user and would like to give it a whirl, this will help you.
Where I've been (June 2008 Edition)
Jun 13th
So it’s been another interesting stretch of not blogging. A quick recap involves school, work, play and Nexuiz (which is a cross between work and play). For school, I managed a project called Object Organizer which you can learn more about in the wiki. I learned a lot about code, projects and people during this experience. I hope to share some techniques, such as the jQuery AJAX login I’ve developed with you all soon.
I’ve been really busy with my Senior Project / Nexuiz Community, Nexuiz Ninjaz developing a web based statistics frontend for players to check their stats. It will be similar to an already existing statistics script but we plan on doing a few things different. As the project grows, I will post information I find interesting about the project(s).
My main computer died and my thinkpad was going haywire so I was able to get another computer from a friend in exchange for work and I did a fresh OS install on my thinkpad. Both computers use Ubuntu Hardy Heron 8.04, the desktop dual boots into XP 64bit. I’ve stayed booted into Ubuntu most the time. And I’ve done many neat things with syncing my laptop and desktop. Utilizing programs such as Synergy and Unison.
Ubuntu has improved drastically since I’ve lasted tried it. There are a few annoying bugs… like the fact that xinerama is buggy with games causing me to create a single monitor xorg.conf I run in a different tty just for games but the time I’m spending configuring, is time I was wasting on windows before. As crappy as having my desktop die was, due to good planning I was able to recovery everything I need and this event has gotten me back into Linux.
I hope to have something more for you next post but if you can’t wait, start reading some of my other sites :).
Daily database backups on dreamhost
Dec 13th
To do daily database backups, I use cron jobs. If you aren’t familiar with cron jobs, think of the as scripts that run on a timer. Much like ‘scheduled tasks’ on windows. To edit your cron jobs on dreamhost, locate the ‘cron jobs‘ menu item located under ‘goodies‘ on the main menu:

Before we add a cron job though, I want to familiarize you with the script and have you run a test to save you a headache later.
#! /bin/sh
# Daily backups on your database with email notification
# Tyler Mulligan
# file
dateVar=$(date +%m-%d) # Date variable to append to filename (default: month-day | 11-24)
savePath="/home/tyler/backups/" # Backups are stored here
fileName="my_db_backup" # File name minus the date
# email
subject="My Database Backup ${dateVar}"
email="db_robot@mydomain.com"
# database
username="root" # username
password="" # password
hostname="localhost" # hostname
database="database" # database
mysqldump -u $username -p$password -h $hostname $database | gzip > $savePath$fileName-$dateVar.sql.gz
uuencode $savePath$fileName-$dateVar.sql.gz $fileName-$dateVar.sql.gz | mail -s "$subject" $email
I’ve set it up so you fill out your information like any other config file, the last two lines do all the work.
I suggest you create a new text file called ‘dbbackup.txt’, and paste the above code in and saving it for future reference. It’s always good to have a clean slate to start from. Once you have that done, fill in your file, email and database variables and give it a test run.
Create a shell script through ssh and run that.
Copy your personalized database dump code, log into your server and type:
vi my_db_test.sh [press i] right click (to paste the copied code) [press esc][type ":wq"] [press enter]
Your script is now written to a file called ‘my_db_test.sh’.
chmod +x the file and run it:
chmod +x my_db_test.sh ./my_db_test.sh
Once you receive the email, check your backup directory and verify that the database was properly dumped. If you don’t receive and email, you did something wrong.
If everything worked fine, return to the dreamhost cron job page, add a cron job and paste your working code into your newly created cron job.
Save, wait a day and you should receive your email. It’s a wise idea to grab a copy of your backup every week or so to store locally.
Dreamhost is actually offering a special for their 10th anniversary right now, 500gb disk space, 5TB transfer for only $5.95 a month. I’ve been with them 2 years and I’ve been pleased.
Organizing Your Email on the Fly
Dec 8th
Email can be a hassle but it doesn’t have to be if you lay out the ground work properly. Folders are a great solution but they only bring you so far. I know I don’t want to manually sort all my email. If you’re like me, you’ll love thunderbird’s filters and tags. Filters allow you to sort, delete, tag and so much more automagically.
To get started, click tools > message filters…

And you are brought to a dialog similar to this (mine obviously has a few filters):

Click ‘new…’ to get started.
In this dialog, conditions are defined at the top and actions are defined below. In the example above, you’ll notice that my condition is based on the Subject of the email. When this condition is true, it will perform the actions below. Move to the BOA folder and tag the message as important.
A little note about this window that confuses people, those + and – buttons are to add and remove conditions/actions. You do not need to click + if you are just filling in the one field, thunderbird knows it’s there.
Also note, Thunderbird allows you to add your own tags with a nice array of colors to choose from (though I would prefer hex).

To access this dialog, click the tag button on the tool bar and select ‘new…’
If you have any questions, feel free to leave a message. Happy sorting!
Bookmark Organization
Dec 6th
Bookmarks are something most of us don’t really keep up to par. Sometimes you just ctrl+d on a whim, losing that page in your lack of a hierarchy forever. Well, at least that’s how it’s been for me. However, once in a while I give myself a kick in the ass and try to shape up. Based upon the patterns I’ve learned in the past and the general direction I wish to go, I reevaluate my mess and decide the proper way forward. In this case it was the standard, “Make general categories and add sub-folders if they need more organization” route… with a little extra spice.
This time around, I decided to utilize folders in the bookmarks toolbar. Maybe I’m blind to this but I feel like most people don’t utilize this helpful feature, I know I didn’t until now. After spending a few days using folders on my toolbar, I’ve come to the conclusion that it is both effective and efficient.
I spend a lot of time developing locally and often do rounds on my live sites and rather than waste 4 seconds typing in a 32 character URL, I’d rather waste 0.4 making two clicks. Yes, that’s right, I’m shaving off seconds to increase my efficiency. It might not seem like a lot but it adds up to minutes a day and hours a year.
Now, because I’m going to be spending a lot of time on my laptop, I needed a global solution to my bookmarks. The path I chose to get is syncing them with the Firefox extension, Bookmark Sync and Sort. If you don’t have your own server, there are some hosted alternatives such as Foxmarks Bookmark Synchronizer. Those trendy bookmark sites aren’t really the solution for me for a few reasons.
1) I like to control my data.
2) Those sites are usually distracting to me
3) While the Firefox bookmarks manager isn’t the ideal solution, the GUI is far more advanced than something you’ll find on a social bookmarking site.
Admittedly, there is an advantage to these sites, and that’s the fact that I can get to my bookmarks quickly no matter what computer I’m on. But again, I can argue that I can find a link just as fast (if not faster) with SSH by greping the xml file Bookmark Sync and Sort generates.
Back on track, once you have the extension installed, click ‘Bookmarks’ > ‘Synchronize Bookmarks’ and fill in the dialog with your information as such:

What kind of man would I be if I didn’t take advantage of this moment to sort my bookmarks?

Mmm, alphabetical order.
Now I just need to upkeep as best I can… I’ll let you know when I come up with a better solution for that. Right now, I just force myself to take the time to find the correct folder in the hierarchy. It’s a good habit but a hard one to keep. If you have any advice, please share. Good luck and happy bookmarking.
P.S. I edited the file wp-admin/admin-functions.php, line 2126 to increase the generated thumbnail size in wordpress. Just replace ’128′ with the max you wish. Thought maybe some of you could use that information.
Organizing Your Precious Internet Memories
May 27th
Back when I first became a part of these internets, I’d get a lol or two via a link to a picture or a website. With the exception of a few of these pictures (thanks digg) most of these pictures have become distant memories of my past. After a while it occurred to me, why aren’t I saving these pictures?
However obsessive, I made it my job, nay, my duty to summon the strength to save and sort ever picture that strikes the slightest bit of interest. This, as you could imagine was a tedious task. Right click, navigate to proper folder, rename image (if needed) and save. My commitment was strong but apparently no match for this mundane method. Slowly, I would stop navigating to sub-folders and just drop them all in a folder I like to call “Internet Garbage”. Currently in the root of this folder, there resides over 3,000 unsorted images.
DON’T WAIT TO SORT YOUR FILES! This is the best advice I can give to anyone. Sure it’s easy to save everything to your desktop but chances are, you’ll mix it up, lose it, delete or whatever. If you put in the extra 20 seconds navigating/creating a relevant folder, you’ll save yourself a boatload of suffering.
Getting back on track though… I came across a Firefox extension a while back called Save Image in Folder. This extension saves you so much time and trouble, that you’d actually be wasting resources by saving files the old fashion way.
Go Install that extension and come back for a tutorial if you too, would like to start saving some ‘Internet Garbage’.
After Installing the extension, right click an image (it can be any image, we’re just using this to set things up quickly). You can use this image if you’d like:

Select “Save Image in Folder… >> Edit folders…”

Select “New”, click the folder button next to the “Path” textbox and create a new folder called “Internet Garbage”. Create all your sub folders inside of that folder.
For this example, I used:
- Art
- Funny
- Gross
- Macro
- Nerdy
- Sexy
- Wallpaper
You can add more whenever you please.

Note: You can prefix or suffice the filenames however you’d like. It’s not a bad idea to prefix the files with a short date… but it’s all up to you.
Once you have all your folders created, it’s a good idea to sort them alphabetically by using the up and down arrows located on the side of the Options dialog.

Now it’s as simple as right clicking an image and picking a folder it’s most relevant to save to.






