↓ Archives ↓

the greatest thing about open source software

Most people who even know the term, think of open source software as software you don't have to pay for. I'd like to use my tiny blog as a platform to help eliminate that limited and even incorrect view. I think the best way to explain the reality of open source is to give an example of what makes it different from other types of software.

Continue reading →

super fast batch file manipulation with GNU/Linux

My first large foray into the world of GNU/Linux was with a tutorial for replacing a machine's operating system (RHEL) with Debian over SSH. I was successful even though I had no idea what I was doing, and since then I've done a lot of my learning this way. One thing I've picked up through reading tutorials is the varying styles of batch file manipulation. Often times, you'll see something like this magic:

for i in *.example; do cp $i|sed s/.example/.ini/; done
Continue reading →

possible wage cuts for fresno bee employees

door to the old fresno bee buildingOur newsroom 'guild' votes Tuesday on whether or not they will allow wage cuts for guild members. The proposed wage cuts would be 0-6%, applied progressively based on annual salary. There are a number of other concessions the company is asking for as well. Basically, if we make those concessions, the company will only lay off 16 full time guild employees rather than 21. There are no assurances that the company won't just lay off more people later anyway. In fact, I think there's a good possibility it will.

This used to be a great company to work for, then we saw the cost of benefits skyrocket, followed by buyouts, more buyouts, layoffs and a wage freeze, followed by suspension of 401k matching and the pension plan. Now there are more layoffs coming and possibly even wage cuts along with a host of random concessions.

We rode that bubble hard and forgot to diversify, in fact we did just the opposite. Right before the bubble began to burst we doubled down on our bet that newspapers would never fail. We increased our exposure to an already enormous risk at what could be the absolute worst possible time in history. Just as bad, we used debt to finance our added risk. Worst of all, we continue to actively shift blame to the poor economy rather than take responsibility and come up with a plan for success.

software mini-review: BambooInvoice

Bamboo BokehFor the longest time, I had no real invoicing system for my independent contract work. I just never found anything that I really liked and rarely found the inspiration to go looking. But recently, I got in the mood to find a long-term solution. What I found was a lot of hosted solutions, a lot of closed source 'for-purchase' solutions, and a lot of second-rate software.

Continue reading →

working with linux filesystem permissions and acl

Now that we have our fancy new VPS and are allowed to create multiple user accounts, I've run into a problem with basic linux permissions that you really only find when you have multiple users working in the same space. In my case, we need multiple users to have access to all of our online property web roots. I started by using chown to force the entire web root under the ownership of www-data:www-data and adding everyone who needed access to the secondary www-data group. This works fine until people start making changes. Each new file they write becomes owned by only them and their primary group. Continue reading →

how-to: cache the uncacheable (movable type dynamic paginated pages)

Movable Type 4.2 introduced (among other things) built-in pagination. When you have a set of entries published to a dynamic index, you can auto-paginate them with some magical tags and it works wonderfully. That is, it works unless you wanted to use Movable Type's built-in caching system for dynamic content. Movable Type's cache entries are unique to a given relative URL excluding the request parameters. In the case of pagination, request parameters make all the difference on what should be cached. If you're not following, this means that the following URLs are identical as far as the MT cache is concerned:

/
/?limit=10&offset=10
/?whatever_its_all_the_same_to=MT
Continue reading →

openwrt wifi radio part 3

OpenWRT + LCDFinding a good, cheap sound card should have been as easy as ordering the one mentioned on the mighty ohm for $10, but I thought I'd save eight bucks and order the cheapest possible one on ebay. When it arrived, the right channel was totally non-functional and to say the sound quality was poor would be an understatement. It was impressive though, that anyone could manufacture and deliver to my door a brand new USB sound card even counting the defects for only two dollars. But that's all beside the point.

Continue reading →

migrating a movable type system, the replication way

Movable TypeLately, I've been in the business of migrating between hosting providers. We're moving away from the classic web host CentOS. The reason that CentOS became the web host OS of choice in the middle of the decade still eludes. I just imagine a some RHEL fan club being told to implement a linux web host solution with no budget and CentOS was the fruit of that effort. Our new host is of the new ultra-trendy VPS type. We chose slicehost on some recommendations from friends. I host my own blog and some other stuff on a VPS at vpslink.com. I fired it up with Intrepid Ibex (of course) and started migrating stuff over the Ubuntu way.

Continue reading →

upgrading movabletype-opensource on debian/ubuntu

Since 2008, Debian has had a movabletype-opensource package available in the repository. That's good news for people who like to make short work of system administration. Unfortunately, the package in the repository isn't the very latest and greatest. Even so, there are big benefits to using aptitude to install movable type, the main one being that it automatically installs all the various dependencies and offloads your job (maintaining those packages) to someone else. Plus the file locations are well-thought-out. Rather than throwing everything right into the web root the package maintainer put the cgi files into a common cgi-bin folder, the shared files into /usr/shared, the perl modules into the shared perl library, and the configuration files into /etc.

Continue reading →

openwrt wifi radio part 2

USB Sound AdapterIn part 1 of this series, I took an Asus router and loaded openwrt onto it. I added an LCD display and connected it to the serial port on the router board. At this point, I have a low-power, small form factor computer that I can customize to my heart's content. As far as I/O, the computer still has its original wifi antenna, 5 wired LAN interfaces, a serial port and a USB port. My USB sound adapter still hasn't arrived from Hong Kong, so I'm going to work on another piece of the puzzle.

Continue reading →