The Many Paths to a Solution

A project I'm involved with has made me think about how there are always many solution paths for any given problem in the Linux universe. For this other project, I wanted to cobble together a version of grep that let me specify proper regular expressions without having to worry about the -E flag and get a context for the matches too.

Synopsys' Coverity

The new version 8.5 of Synopsys' Coverity extends the security umbrella of the static analysis tool to mitigate a wider range of security vulnerabilities.

Securing the Programmer

I have a favorite saying: "If you are a systems administrator, you have the keys to the kingdom. If you are an open-source programmer, you don't know which or how many kingdoms you have the keys to." We send our programs out into the world to be run by anyone for any purpose. Think about that: by anyone, for any purpose.

All about printf

In my last article, "Fancy Tricks for Changing Numberic Base", I explored the surprising ability of the Linux shell to convert numeric bases on the fly, including this sweet little snippet that converts FF hexadecimal into decimal notation: $ echo $(( 0xFF )) 255

LiveCode Ltd.'s LiveCode

"Everyone Can Code" is the vision that its maker has for LiveCode, a highly productive coding environment for Linux, Android, iOS, Mac, Windows and Server platforms.

Working with Command Arguments

In this article, I want to cover a more fundamental aspect of shell scripting: working with command arguments. I suspect that most shell scripts go through an evolution with their command flags, a

AdaCore's SPARK Pro

With this new version of the SPARK Pro toolset, AdaCore comes one step closer to its goal of making the writing of proven software both efficient and pleasant.

Words from Letter Cubes

I got a great letter from a reader with a puzzle to solve, so let's dig in, shall we? Here's what he wrote: Love your column in Linux Journal. I've read it for years and learned a lot about shell scripting, but not quite enough to solve a puzzle on my own.

Bash Shell Script: Building Your March Madness Bracket

I must admit that I don't really follow basketball. But, I do like to engage with folks at work, and every spring I've always felt a little left out when my work colleagues fill out their NCAA March Madness basketball brackets. If your office is like mine, it seems everyone gets very excited to build their brackets and follow the basketball games and play in an office pool.

Working with Functions: Towers of Hanoi

For this article, I thought it would be beneficial to go back to some basics of shell scripting and look at how functions work. Most script writers probably eschew using functions because it's a bit antithetical to how scripts tend to evolve, as a sequence of commands on the command line that are captured in a file.

An Introduction to Tabled Logic Programming with Picat

Picat is a new logic-based programming language. In many ways, Picat is similar to Prolog, especially B-Prolog, but it has functions in addition to predicates, pattern-matching instead of unification in predicate heads, list comprehensions and optional destructive assignment. Knowing some Prolog helps when learning Picat but is by no means required.

Hash Tables—Theory and Practice

The first time I heard about hash tables was after taking a compilers course during my BSc. The truth is, I was not able to understand and appreciate their usefulness fully back then. Now that I know more about hash tables, I decided to write about them so others will see their importance as well.