HOW-TOs

Monitoring Processes with Kill

If you have a process ID but aren't sure whether it's valid, you can use the most unlikely of candidates to test it: the kill command. If you don't see any reference to this on the kill(1) man page, check the info pages. The man/info page states that signal 0 is special and that the exit code from kill tells whether a signal could be sent to the specified process (or processes).

Converting troff to HTML

Ok, more specifically, troff using the mm macros to HTML. This is another from my "rusty scripts" collection which was written for a specific task long ago. In this case, we were converting some internal documentation from troff using the mm macros into HTML.

Generating Native Excel Files in Perl

Over the years, I've probably created thousands of reports for customers and co-workers. Usually, I have a web-based program that generates reports in either html or comma-separated format. The html format is a lot prettier and usually gives the user what they want.

Floating Point Math in Bash, Part 2 (Wait for System Load)

If you run scripts that require a lot of execution time it's a good idea to try to avoid letting them overload your system. You can run them via nice, but if for example your script is sending a bunch of emails your email daemon isn't running via nice and it may itself get out of control. One way to deal with this is by using the values in /proc/loadavg to pause when your system load gets too high.

An Introduction to AIR

AIR (Adobe Integrated Runtime) is a wrapper around a set of technologies that enables developers to build rich Internet applications that deploy on the desktop. Applications are created using a mixture of JavaScript, HTML, and Flash. The resulting

Floating Point Math in Bash

When you think about it, it's surprising how many programming tasks don't require the use of floating point numbers. If you're an embedded systems programmer, you'd probably get fired for using "double" in a C program. If you write PHP or JavaScript, quick, do they even support floating point? One language that doesn't support it is Bash, but let's not let that stop us...

Turn Make Options into Tool Flags

Often times when developing programs there is a need to build the program in/for multiple configurations. Many times, autoconf and its resulting configure script do what you need. Other times you can just change a #define in your code. But sometimes, autoconf isn't an option and changing a define doesn't quite work (say you need to pass your defines/undefines to m4 or some other tool that can't handle include files). The solution is probably to change your makefile. The method presented here results in a fairly compact change to your makefile.

Exploring Space with Celestia

I, as well as my 4 year old son, have always had an interest in Astronomy. My son puts planet puzzles together and looks at picture books. I'm proud to say that he can name all the planets in order, and astonished to realize that he knows that Pluto isn't considered a planet anymore. I've read books on Astronomy; I've been to planetariums and observatories.

Add an Auto-Incrementing Build-Number to Your Build Process

When building software it's often useful to give each iteration of your build process a unique number. Many IDEs and RAD tools do this for you automatically. If yours doesn't and you're using a make file to build your code you can add an auto-incrementing build number to your project with a few simple changes to your make file.

GPS and GIS: A Great Combination, Part I

A GPS unit and a Geographic Information System (GIS) program are a great team. With a GPS receiver in hand, you can tap into the network of government satellites to calculate your position on Earth to within meters. With a GIS on your desktop, you can import acquired GPS data onto to your desktop and combine it with other geospatial features such as maps, aerial photos and satellite imagery.

Automating the creation of slide shows in OpenOffice.org

Why do you need an article on building slide shows in Impress? You don't, in one sense, because the application is simple enough for anyone who has ever seen a slide show to figure out. If you want, you can just plunge in and learn by doing. However, if you take the time to learn, you'll find that OpenOffice.org has two tools to help you organize and automate the process -- and, ultimately, to help you save time.

Data Manipulation with Sprog

I don't think I know anyone who relishes the task of data manipulation, and I'm certainly not different. Some of the more complicated manipulations pose a briefly satisfying technical challenge, but in the end, data manipulation is boring.

An Introduction to Gnome-Inform7 - part 2

This is the second in a two-part introduction to Gnome-Inform7 (and by extension, the Inform 7 language). I'm not going to spend much time re-capping what we covered last time, so if you haven't read part one, please do so now.

Creating chroot sftp Jails with Jailkit

One of the things I both love and hate about my job is getting assigned new projects. They can be about anything and everything. A few months back I was given an assignment to create some chroot jails for a group of customers so that they could securely upload files with sftp. The requirement was that the customers needed to be able to upload file, but in a secure and private way.

Bash Arrays

If you're used to a "standard" *NIX shell you may not be familiar with bash's array feature. Although not as powerful as similar constructs in the P languages (Perl, Python, and PHP) and others, they are often quite useful.

Convert a File to a C Data Structure

Yesterday's post about embedding a file in an executable has gotten a couple of replies about programs that will convert the file to a C data structure. This is certainly an option, here's a script that does that without the need to go searching for programs, it uses standard Linux tools:

Embedding a File in an Executable, aka Hello World, Version 5967

I recently had the need to embed a file in an executable. Since I'm working at the command line with gcc, et al and not with a fancy RAD tool that makes it all happen magically it wasn't immediately obvious to me how to make this happen. A bit of searching on the net found a hack to essentially cat it onto the end of the executable and then decipher where it was based on a bunch of information I didn't want to know about. Seemed like there ought to be a better way...