SMDR Logger for IP Office and other PBXs, logs SMDR to syslog

This is a work in progress. I wanted to log all our calls and found out that there's a feature in IP Office called SMDR that sends logs to a server.

There were a few programs that could receive these logs, but I couldn't find one that just logged the lines to a syslog. After initally reading how to do it in Python and looking a the Perl code from SimpleSMDR, it seemed like too much code. This small C program, smdr-syslog, to does what I want.

The attached file contains a better version of the program, with an installer for Ubuntu Linux.

Restore Specific Files from a Huge .BKF NTBackup.exe file

I like using NTBackup.exe on the old VMs, but discovered that if you don't keep up on the backup rotations, you will have a very hard time doing restores. The NTBackup.exe restore doesn't make it easy to restore all incrementals of a folder.

WordPress: Setting the META Description to part of the page's content

This code puts the first paragraph of the post into the description meta tag. It tries to strip out leading whitespace and any tags. If you insert an image, it should be stripped.

Re: Why Most Developers Should Avoid Apple's New Swift Language

http://www.huffingtonpost.com/gabe-sumner/why-most-developers-shoul_b_54...

I don't agree with this article, at least on the points he made.

> Swift is irrelevant to the majority of mobile audiences

Yes, but so are iOS apps, and so are Android apps. These are all much smaller than the total smartphone market... but they are larger than other software markets.

> The best use case for Swift is iOS exclusive games

This is true, though "exclusive" doesn't need to be part of it.

Raspberry Pi NAS Backup

Last year, I got one of those little Raspberry PI (R-Pi) devices. It's pretty cool, but in the end it's a little PC. Since there's a big bad PC under the desk, the R-Pi didn't get much use. Also, I'm a chicken hardware hacker and so I never put anything onto the GPIO pins.

R Database Connection Class in RS (R5 S5)

I'm learning R, and it's been interesting. The weird part is that I don't know stats. Yes, I know standard deviation, mean deviation, and easy stuff, but those are one-liners in the R tutorials. What I know in stats amounts to around 1/4 to 1/2 a page of the R tutorial. So to compensate, I have a stats text from the thrift store, so I'll eventually be less than a total ignoramus about what I'm reading.

One of the twists of what I'm messing with is that all our data is in a database. The normal mode of operation for R users is to load the entire data table into memory and do awesome reporting on it. Where I'm at, for better or worse, is more like a traditional web application with a database back end.

A problem with this is that MySQL lets me have only 16 connections going at the same time. I'm not sure if it's the driver, but I'll assume that. Since RStudio holds the connections, coding a lot of changes eventually leads to a lot of lost database connection handles, and eventually running out of connections.

Installing R Packages Globally (for rApache)

For general instructions, see: http://cran.r-project.org/doc/manuals/R-admin.html#Managing-libraries.

In Ubuntu Linux, the path to the global libraries is: /usr/local/lib/R/site-library/

To install there, you can do install.packages(c('foo'), '/usr/local/lib/R/site-library/')

or take advantage of the built in variable: install.packages(c('foo'), .Library.site[1])

Check that .Library.site has the values you need.

You can also use R CMD INSTALL -l /path/to/library foo

Weird Network Fault Due to Unknown thing on the End of the Wire

I was called in to help fix a network that had been discombobulated. I didn't end up fixing it, but one staffer there did the trick by disconnecting a switch with a bunch of wires plugged into it.

Using Muriatic Acid (Pool Acid) to Clean the Toilet

We're in full drought mode in LA, and that means we follow the eleventh comandment: if it's yellow, let it mellow, and if it's brown, flush it down.

PHP with Less Risk

An extremely short article about how to avoid pitfalls that will get you hacked. I've been hacked, so I kind of know this from experience.

Cisco Catalyst 2940 Series 8+1 WS-C2940-8TT-S 10/100 +1000 Port Managed Switch

I want to get one of these.

Cisco Catalyst 2940 Series 8+1 WS-C2940-8TT-S 10/100 +1000 Port Managed Switch

It's similar to the little Netgear GS108T managed switch, but with slower ports. For most things that involve the internet, that won't matter. It's main advantages would be the fact there's no power adapter cube - the power supply is in the case. IOS is also useful, sometimes. I find it's a pain in the butt, but you can record your configuration into a human-readable text file, which is important to some people.

Salsa Petition Counts with Scrapy the Python Web Scraper

I was feeling like crap, so after taking the day off and taking a nap, I spent several hours learning Scrapy. Scrapy is a pretty awesome website scraper. This example logs into a website, extracts some data, and stores it locally.

sf-active Comments Into a Table

Not sure where to publish this at this time, so I'm putting it here. This is an addition to comment_latest.inc that will push comments into a table. The original code (still in use) alters an HTML table. The old code is surprisingly robust after all these years.

This new code doesn't do anything fancy. It just takes the same data and inserts it into a table. Later, it can be transformed into an RSS feed or used in other ways. My plan is to use it to make a JSON feed of comments.

CSS Hints for Technoids Who Forgot to Learn CSS

This article is being rewritten. If you want the latest, contact johnk at this domain.

The original was written: 2004-11-18 03:16:46 -0700.

Here's a bit of the article:

Dang, but it took me forever to learn CSS. Maybe I should have used a book. Here, I'm going to share with you the hard-found knowledge, presented using technical programmer jargon. (Revised in 2014.)

What is Cascading Style Sheets (CSS)? The typical answer is that it's a way to separate the way a page looks from the the underlying HTML, which describes the structure of the document.

Rich Text Editors for Email, in HTML Browsers

I've been working on this email layout hack, and started to build it from content, and came to the inevitable conclusion that email and web are two different media.

Syndicate content