Continuous Integration
Feb 6th
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)
Scored 3rd in NetWars R6
Feb 4th
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.
Blueprint: A CSS Framework
Feb 4th
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:
You may also be interested in 960 Grid System, or Yahoo! User Interface Library (YUI).
CSS Sprite Generator
Feb 4th
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.
Git – Fast Version Control System
Feb 4th
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





(4.81 out of 5)