Tuesday, May 15, 2018

Announcing Board of Directors Elections 2018

From 2016 to 2017, I was a director on the GNOME Foundation Board of Directors. This is a great opportunity for anyone working on the GNOME project. And because Board elections are coming up, I wanted to share the news.

The most important deadlines in the GNOME Board Elections are the following:
May 12
List of candidates opens.

May 24
Last day to announce candidacies, submit summary statements.

May 25
Final list of candidates.

May 26
Instructions mailed to eligible voters, voting begins.

June 9
Voting closes.
Preliminary results will be announced on June 12, with June 19 as the last day to challenge results (election becomes official).

Serving on the Board is a great way to participate in open source software. I found my time on the Board to be personally very rewarding.

Time commitments are generally a regular phone call (an hour) and attendance at GUADEC. Directors also pick up projects and to-dos from time to time.

I would submit my name again for the Board, but GUADEC falls at a time when I need to be here at the County. That's our budget presentation time, so I can either attend GUADEC or I can present my department budget to the county Board.

Saturday, May 5, 2018

A few thoughts on copyright

Every once in a while, I'll come across a discussion where someone justifies pirating a movie or popular TV show with "nothing of value was lost." Basically, these people claim that it isn't really "stealing" if the content creator (HBO, Disney, etc) keeps the original copy.

It baffles me why people say this.

I think I get where they're coming from, just not their conclusions. I think these people don't like the US copyright system. And I certainly agree that there's a lot wrong with the current US copyright laws. The Copyright Term Extension Act, a.k.a. the Sonny Bono Act, or (sometimes) the Mickey Mouse Protection Act has extended copyright terms dramatically. And that's not good.

The original US copyright system was designed so that a content creator could control the rights to their creations for a certain term, then that creation would fall into the public domain. But the Copyright Term Extension Act continues to stretch that term. From Wikipedia:
Under this Act, works made in 1923 or afterwards that were still protected by copyright in 1998 will not enter the public domain until 2019 or later. Mickey Mouse specifically, having first appeared in 1928, will be in a public domain work in 2024 or afterward (depending on the date of the product) unless the owner of the copyright releases them into the public domain before then.
And yes, that sucks.

But whether you realize it or not, copyright protection works for more than just the Big Media companies (HBO, Disney, etc). Copyright works for Free software and open source software, too. In fact, the copyleft afforded by the GNU General Public License only works because of copyright protections.

Copyright gives you, the author (or maintainer or contributor) of a software project the right to say how people can copy it. In proprietary software, they are very strict to how you can copy their software (basically, you can't). In Free software licenses, it's very liberal (in most cases, you can give it away, as long as you make the source code available).

So to say "it was only a copy, nothing of value was lost" basically says "I don't care about Free software." If you ignore copyright because you don't like how Big Media profits from copyright terms, then what's to stop someone else from ignoring your copyright on your open source software project? Because if copyright doesn't exist, then there's nothing to stop Big Software companies like Microsoft from taking Free software and making it proprietary.

Friday, April 27, 2018

Open source software reading list

A colleague recently asked what books I'd recommend about open source software. I go back a ways with open source software. I first contributed to Free software and open source software in 1993, before the term "open source software" was widely adopted.

So my list of book recommendations has some older titles on there. And that's good, because this list also provides a solid grounding for contributing to open source software.

I have to share our free (CC-BY) ebook that we published last year about the history of FreeDOS, written by our developers, contributors, and fans:

And some older books that I find interesting:

​Related to FreeDOS,​ there's Pat Villani's original 1996 book about how you would write a DOS-like operating system. It's a bit dated now (FreeDOS has changed a lot since then) but it's a good introduction to writing operating system kernels:

​Along similar lines (but less technical) is Linus Torvalds and David Diamond's 2002 book about how Linus created Linux:

I might also recommend Eric's 2001 book of essays about open source software:

Most of the contents, including the "Cathedral and the Bazaar" essay, are also available for free from Eric's website:

​I have the original paperback for this, which is now falling apart due to years of use, but O'Reilly has made Unix Text Processing (1987) available as a free ebook. This has some interesting not-necessarily-programmer stuff about how you can leverage Unix (and Linux) tools to do various things with text - including vi, ex, nroff/troff, and some awk:

​Other interesting free O'Reilly books include:

Wednesday, April 25, 2018

A gentle introduction to FreeDOS

FreeDOS is an old operating system, but it is new to many people. New users often ask, "I installed FreeDOS, but how do I use it?" If you haven't used DOS before, the blinking C:\> DOS prompt can seem a little unfriendly. And maybe scary.

So I wrote a gentle introduction to FreeDOS for OpenSource.com. It offers just the basics: how to get around and how to look at files. But it's surprising how much you can do in FreeDOS just with CD (change director) and DIR (directory listing). Learn those two commands, and you can easily become a DOS master.

Tuesday, April 24, 2018

March Madness brackets in PHP (scores)

To get ready for this year's March Madness, I updated my Bash script that filled out basketball game brackets. The new version is a PHP page that generates a bracket in a nice, formatted form that you can print out and hang on your office wall.

This made it really easy for me to participate in the office March Madness pool, even though I don't follow basketball. I'm not really a sports guy, but I like to engage with my office colleagues. It's entertaining! My script gives me a stake to follow the games, but without the emotional investment if my bracket doesn't perform well. And that's good enough for me!

But how did my March Madness brackets fare this year?

Following the standard method for How to score March Madness brackets, each round has 320 possible points, regardless of number of games. In round one, you assign ten points for each correctly selected outcome. That's eight games in each of four regions, so 8 × 4 = 32, times ten points for each contest gives 32 × 10 = 320 in each round. In round two, assign twenty points for each correct outcome. And so on. From that, the math is pretty simple.

Round 1

My Midwest bracket did really well in the first round, predicting 7 of 8 games correctly. My East region was off, only predicting 4 games correctly. West did well, with 6 games correct. My South bracket had 5 correct predictions. So that's (7 + 4 + 6 + 5) × 10 = 220.

Round 2

Things fell apart pretty quickly in my second round. My Midwest bracket had 2 correct predictions, and East had 2. My West bracket also predicted 2 games correctly, but my South had only 1 correct. Total for this round was (2 + 2 + 2 + 1) × 20 = 140.

Round 3

I was almost completely knocked out in the third round. Of all my teams, my PHP script only correctly predicted one game (Villanova). In this round, my score was 1 x 40 = 40.

Rounds 4–6

If you followed March Madness this year, you know Villanova went the distance to win the NCAA. Fortunately, my PHP script also predicted Villanova all the way to the end. For the Final Four and the championship round, I made to make my own guesses (Villanova). That makes the math very easy:

round 4: 1 × 80 = 80
round 5: 1 × 160 = 160
round 6: 1 × 320 = 320


Overall, my PHP script did pretty well. Across all rounds, my final score was 220 + 140 + 40 + 80 + 160 + 320 = 960. That's great!

Compared to an earlier version of my Bash script to fill out March Madness brackets, 960 points is excellent! In that previous iteration, I had two runs of the script, with 530 and 490 points each. In an improved version of that Bash script, a sample run netted 390 points. My 960 compares well!

Of course, the outcome of my PHP script is based on weighted guesses, so things could have gone the other way very easily. Without Villanova, my brackets would have been completely out in the third round, resulting in only 220 + 140 = 360 points. So don't use my PHP script to bet with. But my script did keep up my interest in this year's March Madness basketball games, and that's a good thing.

Wednesday, March 7, 2018

March Madness brackets in PHP

It's March, and that means I've written yet another article about a program that helps you fill in your NCAA "March Madness" game brackets. This article is a bit different. Where my previous articles described how to write a Bash script to "predict" March Madness brackets, this year's article walks through a PHP script that generates a full bracket.

For those of you who aren't in the U.S., we have a game here called Basketball. And every year in March, the university level (called the National Collegiate Athletic Association, or NCAA) holds a single-elimination championship of the different university teams. If you follow basketball, you can fill out a bracket to "predict" the championship outcomes at each round.

Some people really get into creating their brackets, and they closely follow the teams over the season to see how they are doing. I used to work in an office that cared a lot about March Madness (although in honesty, the office I'm in now doesn't really follow the games that much—but forgive me that I didn't update my Linux Journal article to say so.) I didn't want to miss out on the fun in following March Madness.

I don't follow basketball, but one year I decided to write a little random-number generator to predict the games for me. I used this program to fill out my brackets. And a few years ago, I started writing about it.

Read the article, and use the PHP program to fill out your own March Madness bracket! Let me know how your bracket fared in this year's games.
image: Wikimedia (public domain)

Wednesday, February 21, 2018

Using groff to write papers

In 1993, I discovered Linux, when I was an undergraduate university student. Linux gave me the same power as the Big Unix systems in our campus computer labs, but on my personal computer. I was immediately hooked.

But in the early 1990s, Linux didn't have a lot of applications. When I needed a word processor to write a paper for class, I rebooted into MS-DOS and ran WordPerfect or the shareware word processor, Galaxy Write. I wanted to stay in Linux as much as possible, but I also needed to write papers for class.

I knew a bit about the nroff and troff text processing systems from our campus computer labs, and I was pleased to find that nroff and troff existed on Linux as GNU groff. So I taught myself how to use the groff macro sets to write my class papers. The first macros I learned were the "e" macros, also known as "groff -me" because that was how you invoked the macros from the command line.

I recently wrote an article for OpenSource about How to format academic papers on Linux with "groff -me." I cover the basics for writing most papers, and skip the really esoteric stuff like keeps and displays, nested lists, tables, and figures. This is just an introduction for how to use "groff -me" to write common documents, like papers for class.