Posted by & filed under Programming, Web Development.

Bones is a WordPress Theme for Developers — Built around the HTML5 Boilerplate, Bones is a rock solid foundation to start any WordPress project. Keep what you need, remove what you don’t. It’s totally up to you.
Bones is not a Framework — Frameworks are great, but sometimes they make things more complicated than they need to be. Bones is bare and as minimalistic as possible. It’s meant to be used as a per-project template, this means no Child Themes. Hooray!

Posted by & filed under Uncategorized.

Graphite is a highly scalable real-time graphing system. As a user, you write an application that collects numeric time-series data that you are interested in graphing, and send it to Graphite’s processing backend, carbon, which stores the data in Graphite’s specialized database. The data can then be visualized through graphite’s web interfaces.

Posted by & filed under Firewalls, Networking.

fwknop stands for the “FireWall KNock OPerator”, and implements an authorization scheme called Single Packet Authorization (SPA). This method of authorization is based around a default-drop packet filter (fwknop supports iptables on Linux, ipfw on FreeBSD and Mac OS X, and PF on OpenBSD) and libpcap. SPA is essentially next generation port knocking (more on this below). The design decisions that guide the development of fwknop can be found in the blog post “Single Packet Authorization: The fwknop Approach”.

fwknop Hone:
SPA with fwknop:

Posted by & filed under 93 Hatch Blog.

Received my rod bearings and pistons today, ready to go!
Received my rod bearings and pistons today, ready to go!

GSR transmission getting a ITR LSD installed.

84mm 9.5:1 CP Pistons

GSR block heading out to GOlden Eagle for sleeving.

Sandblasted valvecover. Ready for AN fittings and powdercoating.

I went thru my harness, cleaning it up, removing unused wired and heat shrinking it all.

Valve cover back from powdercoating, and the 2 -10 AN bungs attached.

Block is back from GE, 84mm bore.

My daughter likes it!

Posted by & filed under Programming, Server Admin.

I had a task where there were thousands of files in a folder. Some of them contained a specific string and needed to be processed.

A quick n dirty method is to use grep (or windows grep in this case to identify the files and generate a list of filenames in plaintext. Then using a quick batch for…loop to process the files from the command line… nice and simple.

for /F "tokens=*" %A in (results.txt) do [command] %A

Substitute [process] for your command. %A contains the filepath from grep. In my case I wanted to just delete the file so I just replaced [command] with del. Done!

TechNet Reference:…

Posted by & filed under Javascript, Programming.

The Handpicked jQuery Plugins Repository is a carefully selected roundup of some of the best jQuery Plugins ever released. Here we offer you the ability to browse through the plugins, or download a plugin that you fancy. Whether you’re building a huge Web-Application, or a simple site, we’ve got you covered. We also offer you the ability to hot-link directly to these plugin scripts through our CDN service, so your site loads much faster.

Posted by & filed under Programming.

Nice article on writing drivers for the linux kernel.

User space. End-user programs, like the UNIX shell or other GUI based applications (kpresenter for example), are part of the user space. Obviously, these applications need to interact with the system’s hardware . However, they don’t do so directly, but through the kernel supported functions.

Kernel space. Linux (which is a kernel) manages the machine’s hardware in a simple and efficient manner, offering the user a simple and uniform programming interface. In the same way, the kernel, and in particular its device drivers, form a bridge or interface between the end-user/programmer and the hardware. Any subroutines or functions forming part of the kernel (modules and device drivers, for example) are considered to be part of kernel space.…

Posted by & filed under Uncategorized.

I think I wrote about the bus pirate some time ago.

A logic analyzer is a device that lets you watch digital signals in your electronics project. You can watch them real-time or log the data for later perusal. Unlike an oscilloscope, its not good for measuring analog signals – but also unlike an oscilloscope, you can track 8 signals at time! So its a good complementary tool. This logic analyzer plugs into a computer and has easy to use, cross-platform software. This makes it small, portable and inexpensive. If you ever have to to debug SPI, i2c, serial, CAN, 1-wire, Manchester, biphase or other digital protocols, this tool is essential!


Posted by & filed under PHP, Programming.

Wow. Just got hit with this bug. It’s going to be a fairly easy fix (more on that later), but crazy none the less.

Excerpt from wikipedia:

“The year 2038 problem may cause some computer software to fail at some point near the year 2038. The problem affects all software and systems that both store system time as a signed 32-bit integer, and interpret this number as the number of seconds since 00:00:00 UTC on Thursday, 1 January 1970. The furthest time that can be represented this way is 03:14:07 UTC on Tuesday, 19 January 2038. Times beyond this moment will “wrap around” and be stored internally as a negative number, which these systems will interpret as a date in 1901 rather than 2038. This is caused by integer overflow.”

I wrote a reporting system for a client of mine. It displays memberships based on their expiration date. Several members have their expiration dates set as 2046 and higher. I found that these members were being incorrectly classified by the system as expired. Hello Y2K bug all over again!

For MySQL, I found that storing dates as DATETIME rather than TIMESTAMP solves the issue. For PHP, using the DateTime API allows you to work with dates beyond 2038.

$date = new DateTime('9999-04-05');
echo '<br/>'.$date->format('Y-M-j') ."";

In my case, I was actually following this already by storing the dates in the database as DATETIME and using PHP’s DateTime API to process the dates. In my case the problem came into play when… I was comparing dates using strtotime():

$d1 = strtotime(date('Y/m/d'));
$d2 = strtotime($expireDate);

var_dump($d1 == $d2);
var_dump($d1 > $d2);
var_dump($d1 < $d2);

Switched to comparing the DateTime objects and problem solved:

$d1 = new DateTime('2046-08-03 14:52:10');
$d2 = new DateTime('2008-01-03 11:11:10');
var_dump($d1 == $d2);
var_dump($d1 > $d2);
var_dump($d1 < $d2);

More Ref:……