Author Archives: Tyler Mulligan

Taking Screenshots the Easy Way

I’ve mentioned this software before but I feel compelled to show you all why this software has made my list of software I install on a fresh format. This software is MWSnap, a program for taking and manipulating screenshots. When you first open the program, you’re greeted with this:

MWSnap - Take Screenshots Easily

On the left, you have your main options for screenshots and on your right, you have a preview. Each of the screenshots have hotkeys that you can learn by click ‘Capture’ on the menu bar. All of the options are pretty self-explanatory except the ‘Window/menu’ option, which you’ll learn to love fast.

When you select this option, the screen freezes and you have a dotted box that selects whatever menu or window you’re cursor is hovering on.

MWSnap - Window or Menu

This assures for a clean cut every time, quickly and easily.

And if you’re feeling fancy, you can garnish it by adding a cursor from the ‘edit’ menu:

MWSnap - Add Cursor

MWSnap has some interesting tools that come in handy at random times:

MWSnap - Tools

I’d say the ruler is the one I use most often.

MWSnap - Ruler

It’s floats above all other windows and lets you measures them by pixels. Don’t worry, it goes vertically as well.

And while I chose to use ColorPic for my color picking software. MWSnap’s color picker isn’t half bad.

MWSnap - Color Picker

There are only two downsides that I’ve found to this application. First being the lack of ability to crop… that to me is odd but I just open it up in IrfanView and take care of it that way. The other issue is multiple monitors. Unfortunately, MWSnap only recognizes the primary monitor. I don’t really have a work around for this, I just deal with it and drag windows I need to take screenshots of over to my primary monitor.

This software has saved me tons of time, I hope you enjoy it as much as I do!

NO to the Microsoft Office format as an ISO standard

I ask the national members of ISO to vote “NO” in the ballot of ISO DIS 29500 (Office OpenXML or OOXML format) for the following reasons:

1. There is already a standard ISO26300 named Open Document Format (ODF): a dual standard adds costs, uncertainty and confusion to industry, government and citizens;
2. There is no provable implementation of the OOXML specification: Microsoft Office 2007 produces a special version of OOXML, not a file format which complies with the OOXML specification;
3. There is information missing from the specification document, for example how to do a autoSpaceLikeWord95 or useWord97LineBreakRules;
4. More than 10% of the examples mentioned in the proposed standard do not validate as XML;
5. There is no guarantee that anybody can write software that fully or partially implements the OOXML specification without being liable to patent lawsuits or patent license fees by Microsoft;
6. This format conflicts with existing ISO standards, such as ISO 8601 (Representation of dates and times), ISO 639 (Codes for the Representation of Names and Languages) or ISO/IEC 10118-3 (cryptographic hash);
7. There is a bug in the spreadsheet file format which forbids any date before the year 1900: such bugs affect the OOXML specification as well as software applications like Microsoft Excel 2000, XP, 2003 and 2007.
8. This standard proposal was not created by bringing together the experience and expertise of all interested parties (such as the producers, sellers, buyers, users and regulators), but by Microsoft alone.

Sign the petition here

Daily database backups on dreamhost

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:

Location of cron jobs on dreamhost

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.

A new cron job on dreamhost

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.

Getting Entrecard to Work with Blogger

Just the other day, I was trying to integrate Entrecard into one of my Blogger accounts and it didn’t work. The reason for this, is google’s very strict about their document validity, while Entrecard has seemingly over-looked a common HTML markup mistake. The use of an ampersand, rather than html entity:

& causes blogger to fail markup validation when saving.

Theirs:

Valid:

Note: don’t just copy that code and use it in your blog… unless you want to display my card!

Doctypes and why I never really gave a crap

To me, doctypes have always been somewhat of a hassle. I know when I write good code and I know how to fix errors the validator spits out at me. Other than that, my knowledge is limited. I usually just copy the header from my older documents and hope for the best. However, yesterday I had a change of heart and thanks to a simple google search, that led me to a great article, that brought me to a not so easily found page on w3. I was able to sigh in relief. I really don’t understand why the chart below isn’t easily accessible.

Valid Doctypes
This chart is located about half way down the page.

According to my purple to blue link ratio, there are no links off the front page of w3 to this article. I find this rather inconvenient. Thankfully, the good folks at ALA know what’s up.

Organizing Your Email on the Fly

Tyler Mulligan’s Email Organization

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…

Thunderbird - Message Filters Menu

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

thunderbird_filter_list.png

Click ‘new…’ to get started.

Thunderbird - Filter

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).

New Tag

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

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.

My Bookmarks Organized

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.

My Bookmarks Toolbar

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:

Bookmarks Sync and Sort

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

My Bookmarks Sorted

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.

Zuckerberg's Trout Was the Poke

With the evolution of communication via the internet, it’s interesting to see how websites of today are really client-side applications of yesterday. In some cases, we see applications mirroring existing applications (meebo). Advances in CSS and Javascript with the push of ‘web 2.0 technologies’ such as application frameworks and AJAX have shown programmers of other backgrounds that we web folk really aren’t that different. This in combination with the release of various APIs and the opening of platforms ensures these companies existence in this new module war. Thus initiating the next step in this game of chess, which one company has already taken a shot at.

Behold the future of web applications:

The Future of Web Applications

Businesses will ensure their place in the industry by becoming the host of niche web applications, utilizing their services as modules.

Christmas Savings

I can’t recall a time where I was working on just one project. Sometimes bigger projects eclipse my little adventures and so I’m left with half completed mini scripts. Today my memory was jogged by a friend who asked about some Christmas deals. I like a bargain as much as the next guy but I don’t really feel compelled to waste a boat load of time to save a few bucks. My solution to this, was to create a website that does the work for me.

Coupon Crawl - Search coupon codes

Utilizing google’s CSE, I created Coupon Crawl. I’m still playing with page weights to yield the best results but it works fantastic for certain items. Before checkout at any online store, it’s a good idea to do a quick search here for a promo code. I’ve probably saved over $100 total from this thing already!