Continuous Integration

On a daily basis, how many of you: Write unit tests? Perform unit tests? Check that code follows standards? Check that code is optimized with minimal repetition? Checkout, build, compile, release, and publish multiple builds (e.g. development, nightly, staging, production, training, etc.) in multiple formats (pushed live, tar.gz, .zip, etc.) Analyze results, produce, and share reports of all this?

Realize that if you are not, your presence is a high cost to the project in terms of the cascade of poor quality, and additional time you place as a burden on your customers and end-users. (see also: six sigma; cost of poor quality)

More >

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading ... Loading ...

Scored 3rd in NetWars R6

Yep, I was “numbers“.

NetWars is one of the key competitions in the United States Cyber Challenge. For an overview of the Challenge, please click here to download the description from the White House web site.

Do you really know your way around computers? Do you think you can recover the password from a computer? Take control of a service? Protect the system against other users who might want to take it over?

Netwars is the ultimate online game: an adventure across the Internet. You can play as an analyst, a penetration tester, a defender, or any combination. You earn points by finding keys, moving to higher levels, capturing services such as a website, overcoming obstacles (attack techniques) and protecting resources (defensive techniques). You can see the other players scores and your own points scored, live, or on an overall scoreboard.

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading ... Loading ...

Blueprint: A CSS Framework

Blueprint

"Spend your time innovating, not replicating."

Blueprint is a CSS framework, which aims to cut down on your development time. It gives you a solid foundation to build your project on top of, with an easy-to-use grid, sensible typography, useful plugins, and even a stylesheet for printing.

Blueprint offers:

  • A CSS reset that eliminates the discrepancies across browsers.
  • A solid grid that can support the most complex of layouts.
  • Typography based on expert principles that predate the web.
  • Form styles for great looking user interfaces.
  • Print styles for making any webpage ready for paper.
  • Plugins for buttons, tabs and sprites.
  • Tools, editors, and templates for every step in your workflow.

Of course, Blueprint isn’t the only choice. It’s just the most popular, according to Google Trends:

keyword searches on Google

You may also be interested in 960 Grid System, or Yahoo! User Interface Library (YUI).

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading ... Loading ...

CSS Sprite Generator

My PHP-CLI CSS Sprite Generator allows you to combine any number of images in a given directory into a select few composite CSS Sprite images. Also generates a stylesheet.

Source code documentation snippet explains details:


/**
 * CSS Sprite Generator
 *
 * Combine any number of images in a given directory into a select few composite
 * CSS Sprite images. (e.g. one for horizontally-repeating, one for vertically-
 * repeating, and one for images that do not repeat like buttons.)
 *
 * Also generates an accompanying CSS stylesheet you can copy/paste from and use
 * as a guide in obtaining the x-y coordinates as well as the width/height
 * dimensions of your sliced images as they are located in the corresponding
 * composite image.
 */

CSS Sprite Generator
Usage: css-sprite.php [OPTION]... [PATH]

 --path <path> Path where sliced images reside. Default is current working
 directory where the program is launched.
 --prefix <prefix> Optional prefix used in output filenames for composite
 images. Default is "sprites".
 --matte <rgb> RGB color matte. Default is "255,255,255" which is white.
 For PNG 24-bit transparency, use "transparent".

Naming files:

 The suffix of your sliced image filenames determines how they are composited:

 -x = horizontally repeating (repeat-x)
 -y = vertically repeating (repeat-y)
 -n = not repeating (no-repeat)

 Filename examples:

 border1-bottomleftcorner-n.png
 border1-bottommiddle-x.png
 border1-middleright-y.png

 Note that images which repeat on BOTH the X and Y axis, such as tiled
 backgrounds, must be contained within their own image and cannot be used in
 CSS sprites for obvious reasons.

 You can also modify the files as they are composited:

 -pr<pixels> = add padding to the right of the image
 -pl<pixels> = add padding to the left of the image

 Filename examples:

 border1-middleleft-y-pr300.png
 border1-middleright-y-pl300.png

Check it out:

mikesmullin’s CSS-Sprite-Generator at master – GitHub.

Will add more documentation soon.

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading ... Loading ...

Git – Fast Version Control System

This post is a bit late but better late than never. If you’re still using Subversion it’s high time you had a look at distributed version control.

Git is a free & open source, distributed version control system designed to handle everything from small to very large projects with speed and efficiency.

Every Git clone is a full-fledged repository with complete history and full revision tracking capabilities, not dependent on network access or a central server. Branching and merging are fast and easy to do.

Install on Debian / Ubuntu 9.10 Karmic:

sudo aptitude install git git-core

Then you may find this Git tutorial useful.

I use gitg or gitk for quick-reference visualizing of history:

sudo aptitude install gitg

Gitstats project is interesting. See demo here.

Also Gource is another interesting git visualizer. See demo via YouTube.

I should mention Github as they are pretty awesome and you have no doubt seen their website before. Here’s my page on Github, for those interested. I love their proprietary reports; the charts and graphs are awesome ways to visualize repositories. And their push-button publishing, donations, and social networking aspects are the best.

My ~/.gitconfig file looks like this:

[core]
        editor = vim
[user]
        name = YOUR NAME
        email = YOUR.EMAIL@DOMAIN.TLD
[color]
        branch = auto
        diff = auto
        interactive = auto
        status = auto
        ui = auto
[color "branch"]
        current = yellow reverse
        local = yellow
        remote = green
[color "diff"]
        meta = yellow bold
        frag = magenta bold
        old = red bold
        new = green bold
[color "status"]
        added = yellow
        changed = green
        untracked = cyan
[alias]
        st = status
        ci = commit
        br = branch
        co = checkout
        df = diff
        lg = log -p
        who = shortlog -s --
        up = pull --rebase
[push]
        default = matching

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading ... Loading ...