## C Moving Average

Date Tags c

Moving averages are useful since they do not require a buffer of samples to be maintained. Here is a simple implementation in C:

``````#include <stdio.h>

float ave(float num)
{
static float fAve = 0.0f;
static unsigned int fSmp = 0;
float weight = 0.0f;

fSmp++;
weight = 1.0f / fSmp;
fAve = (weight * num) + ((1 - weight) * fAve);

return(fAve);
}

int main(int argc, const char *argv[])
{
char str[100] = {0};
float num = 0;

/* Run until user enters …``````

## Python Geometric Mean

Date Tags python

Need to calculate a geometric mean in Python? You could use Numpy or this one-liner:

``````# NOTE: This import is only needed for Python3.
from functools import reduce

# Geometric mean of list `n`:
geomean = lambda n: reduce(lambda x,y: x*y, n) ** (1.0 / len(n))

print(geomean([1,2,3,4]))
# Result: 2.2133638394
``````

## PhysicsJS Control Sandbox

Here is a neat little control sandbox put together using PhysicsJS and JSFiddle. Try implementing your own `stepController()` to see if you can balance the circle above the square.

## Python String Index Replace

Date Tags python

Python does not allow string to be modified via indexed assignment. For example, `a = "hello"; a[1] = "x"` will produce a `TypeError: 'str' object does not support item assignment` error. Grr!

The following one-liner `stridxrep()` can be used if the need ever arises:

``````a = "hello"

# Python doesn't allow the following:
# a[1] = "x"

# A 'string index replace' function.
stridxrep = lambda s, i, r: "".join([(s[x] if x != i else r) for x in …``````

## Four Technologies for 2014

Date Tags software

Technology moves fast. Really fast. The following are some software technologies that I will be keeping an eye on in 2014:

1. Docker - Brilliant container manager.
2. Rust - Promising systems language.
3. Emscripten - Mind-bending JavaScript compiler.
4. D3.js - Beautiful data visualization.

While these technologies are not necessarily new, my prior experience with them is limited.

## Task Lists In AsciiDoc

NOTE: An update to this post is available here.

Task lists are great! Need to do something eventually but don't have the time or motivation to do it now? Add it to a task list (think of it as procrastination management)!

When managing task lists on a computer, I prefer a file-based plain-text approach. As a software developer and avid Vim user, I have found this method to be the most flexible, reliable, and easy …

## Introducing CsvPal

Date Tags python

When picking a simple but useful data format, CSV is tough to beat. However, looking through large files can be cumbersome. For this reason, I threw together CsvPal, a simple command-line utility for filtering out columns of interest. Check it out if you frequently work with large CSV files.

## My Blogging Workflow

Date

I recently switched from Blogger to this new blog (JeffComputes). Blogger is competent and feature-rich however I wanted a bit more control over my blogging platform. The blog is now powered by Pelican, a great static website generator written in Python. The theme is a customized version of fresh by Jui-Shan Liang. The hosting is provided by RamNode and their great VPS lineup. The workflow for writing a post looks like this:

1. All of the …

Hi, I am Jeff Rimko!
A computer engineer and software developer in the greater Pittsburgh, Pennsylvania area.